biml - 构建 BIML 时是否可以获取包含 BIML 源文件的目录的路径
问题描述
我有一些基于某些配置文件中的数据生成 SSIS 包的 BIML。
我在 BIML 中有 C# 代码来读取配置文件并在构建 SSIS 包时使用其中的数据。
但是,我目前必须在 C# 中硬编码配置文件的路径。我更喜欢使用 BIML 文件中的相对路径。这可能吗?(或者有更简单的方法吗?)
一个 BIML 文件中所有内容的最小示例(实际上我有单独的 C# 文件):
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#
// I would like a directory path to any of my BIML or C# files here.
var CodeBase = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;
var BaseDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
var CurrentDirectory = Environment.CurrentDirectory;
var GetCurrentDirectory = System.IO.Directory.GetCurrentDirectory();
var GetFullPath = System.IO.Path.GetFullPath(".");
#>
<Packages>
<Package Name="Demo_paths" ConstraintMode="Linear">
<Variables>
<Variable Name="CodeBase" DataType="String" IncludeInDebugDump="Exclude" EvaluateAsExpression="false">
<#=CodeBase#>
</Variable>
<Variable Name="BaseDirectory" DataType="String" IncludeInDebugDump="Exclude" EvaluateAsExpression="false">
<#=BaseDirectory#>
</Variable>
<Variable Name="CurrentDirectory" DataType="String" IncludeInDebugDump="Exclude" EvaluateAsExpression="false">
<#=CurrentDirectory#>
</Variable>
<Variable Name="GetCurrentDirectory" DataType="String" IncludeInDebugDump="Exclude" EvaluateAsExpression="false">
<#=GetCurrentDirectory#>
</Variable>
<Variable Name="GetFullPath" DataType="String" IncludeInDebugDump="Exclude" EvaluateAsExpression="false">
<#=GetFullPath#>
</Variable>
</Variables>
</Package>
</Packages>
</Biml>
我也尝试过 RootNode.BimlFile 但这在最小复制中不起作用,并且似乎只给出文件的文件名,而不是它在磁盘上的路径。
上面的变量有以下值
基本目录:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\
代码库:
file:///C:/Users/<USERNAME>/AppData/Local/Temp/Varigence/230028/4pxczy3m.dll
当前目录:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE
获取当前目录:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE
获取全路径:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE
解决方案
因此,在 BimlExpress 中有效的一种方法是使用
Host.TemplateFile
尽管这似乎确实取决于 BIML 生成其输出的特定方式,因此将来可能会中断。
推荐阅读
- java - 对子级有限制的 JPA 层次结构查询
- linux - 为 arm 编译配置 gdb 失败
- javascript - CKEDITOR:实例准备好后如何在丰富的组合框中添加额外的项目
- spring-webflux - 如何提高 WebFlux WebClient 的吞吐量?
- docker - 如何为引用同级目录的项目构建 Dockerfile?
- powershell - Get-FSRM - 如何以 GB 为单位获取 Usage 和 Size ?
- python - 如何保留和绘制与测试集无关的 ID 特征?
- c# - c# websockets - 每隔 X 秒继续发送消息,同时等待在同一个 websocket 中收到的消息
- python - 根据用户反应发送消息
- android - 下载并将文件存储在缓存目录android中