我想为从嵌入式资源读取的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>
答案 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