在dll中嵌入条件XML文件

时间:2015-04-01 12:08:18

标签: msbuild

我想为从嵌入式资源读取的dll创建一个配置类。我已经创建了多个xml文件,其配置适用于我们所有不同的环境。我为每个环境DEV,QA,PROD配置了一个单独的配置,并匹配xml文件中的前缀。

.Configuration/DEV.config.xml 
.Configuration/QA.config.xml
.Configuration/PROD.config.xml 

我们之前从未使用过MSBuild而且很困惑,因为似乎有大约3-4种不同的使用方式(前/后构建事件,xml脚本,自定义任务等)。我要做的就是将相应的文件重命名为config.xml并将其嵌入到dll中,以便config类在运行时可以读出它。

我见过类似的问题,只是嵌入了一个文件,但没有一个同时嵌入和重命名。我假设任何类型的嵌入都需要作为预构建事件来完成。

通常情况下,我会尝试一些比特和爆炸,但我不知道从哪里开始,如果有人能指出我正确的方向,我将非常感激。

更新

所以在jlew的帮助下我应该可以做这样的事情

<ItemGroup>
    <EmbeddedResource Include="Configuration\$(Configuration).config.xml" >
        <LogicalName>config.xml</LogicalName>
    </EmbeddedResource>
</ItemGroup>

1 个答案:

答案 0 :(得分:1)

您可能想要做的事情(没有看到您的代码)是不重命名输入文件,而是指示MSBuild使用与文件不同的资源的“逻辑名称”。

<ItemGroup>
    <EmbeddedResource Include="Dev.config.xml">
        <LogicalName>MyRenamedConfig.config.xml</LogicalName>
    </EmbeddedResource>
</ItemGroup>

如果您直接使用csc.exe,则可以执行以下操作:

csc ... /resource:Dev.config.xml,MyRenamedConfig.config.xml