构建BIML时,可以获取包含BIML源文件的目录的路径

时间:2018-08-14 14:20:34

标签: biml

我有一些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

1 个答案:

答案 0 :(得分:1)

因此,在BimlExpress中有效的一种方法是使用

Host.TemplateFile

尽管这似乎取决于BIML生成其输出的特定方式,所以将来可能会中断。