在 dll 中嵌入条件 XML 文件

Embed a conditional XML file in a dll

我想为从嵌入式资源读取的 dll 创建一个配置 class。我已经创建了多个 xml 文件,其中包含针对我们所有不同环境的配置。我对每个环境 DEV、QA、PROD 都有一个单独的配置,与 xml 文件上的前缀相匹配。

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

等等

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

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

通常我会尝试一些零碎的东西,但我不知道从哪里开始,如果有人能指出我正确的方向,我将非常感激。

更新:

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

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

您可能想要做的(没有看到您的代码)是不重命名输入文件,而是指示 MSBuild 使用 "logical name" 作为与文件不同的资源。

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

如果您直接使用 csc.exe,您可以执行类似的操作:

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