我有一些BIML可以根据某些配置文件中的数据生成SSIS包。
我在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,但这在最小复制中不起作用,并且似乎只提供文件的文件名,而不是磁盘上的路径。
上面的变量具有以下值
BaseDirectory:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \
CodeBase:
文件:/// C:/用户/ <用户名> /AppData/Local/Temp/Varigence/230028/4pxczy3m.dll
CurrentDirectory:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE
GetCurrentDirectory:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE
GetFullPath:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE
答案 0 :(得分:1)
因此,在BimlExpress中有效的一种方法是使用
Host.TemplateFile
尽管这似乎取决于BIML生成其输出的特定方式,所以将来可能会中断。