使用SlowCheetah我的类库中有一个custom.config文件,我希望这个文件被转换并包含在引用它的控制台应用程序的输出中。
Slow Cheetah将custom.config转换为自己的bin文件夹,我可以使用copy-always / newer包含custom.config,但它是复制的未转换配置。在通过slowcheetah转换后,如何将转换后的配置文件复制到我的输出项目?
请注意我不尝试转换并将 app.config 包含为classLibrary.dll.config。我已经可以做到了。我正在寻找的是转换后包含其他custom.config文件的选项。
答案 0 :(得分:0)
我将在这里发布我自己的解决方案,我最终放弃了SlowCheetah,直接在构建文件(.csproj)中的自定义转换步骤中完成。
<Target Name="AfterBuild">
<ItemGroup>
<!-- Files to transform -->
<ConfigurationFile Include="$(OutputPath)\Config\*.config" Exclude="$(OutputPath)\Config\*.*.config" />
<!-- Files to use to transform -->
<TransformationFile Include="$(OutputPath)\Config\*.*.config" />
</ItemGroup>
<!-- Message for debugging -->
<Message Text="Transforming %(ConfigurationFile.Identity) ==> @(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')" Importance="normal" Condition="Exists('@(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')')"
/>
<!-- This is the actual transform step -->
<TransformXml Source="%(ConfigurationFile.Identity)" Transform="@(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')" Destination="@(ConfigurationFile->'$(OutputPath)\Config\%(Filename)%(Extension)')" StackTrace="True"
Condition="Exists('@(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')')" />
<!-- ===Uncomment this to clean up transform files from target directory=== -->
<!--<Message Text="Deleting: %(TransformationFile.Identity)" />
<Delete Files="@(TransformationFile)" /> -->
</Target>
我所有的配置文件都存在于名为“Config”的目录中的引用项目中,并被称为“somethingSpecific.config”,所有转换文件都被称为“somethingSpecific.someEnvironment.config”。
此构建目标将搜索config文件夹中的所有文件,并尝试查找与构建配置对应的转换文件。对于任何匹配,它会发现它将执行转换。只需确保所有配置文件和所有转换文件都找到输出路径中正确的文件夹。