SlowCheetah:如何将第二个项目中引用的 class 库中的转换文件包含到该项目输出中?
SlowCheetah: How to Include transformed files from a class library referenced in a a second project to that projects output?
使用 SlowCheetah 我的 class 库中有一个 custom.config 文件,我希望转换此文件并将其包含在引用它的控制台应用程序的输出中。
Slow Cheetah 将 custom.config 转换到它自己的 bin 文件夹中,我可以使用 copy-always/newer 包含 custom.config,但随后复制的是未转换的配置。 slowcheetah 转换后如何将转换后的配置文件复制到我的输出项目中?
请注意,我不是试图转换并包括我的app.config作为classLibrary.dll.config。我已经可以做到了。我正在寻找的是在转换后转换和包含其他 custom.config 文件的选项。
我会 post 在这里我自己的解决方案,我最终放弃了 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"。
此构建目标将搜索配置文件夹中的所有文件,并尝试查找与构建配置相对应的转换文件。对于它找到的任何匹配项,它将执行转换。只需确保所有配置文件和所有转换文件都能找到输出路径中正确的文件夹。
使用 SlowCheetah 我的 class 库中有一个 custom.config 文件,我希望转换此文件并将其包含在引用它的控制台应用程序的输出中。
Slow Cheetah 将 custom.config 转换到它自己的 bin 文件夹中,我可以使用 copy-always/newer 包含 custom.config,但随后复制的是未转换的配置。 slowcheetah 转换后如何将转换后的配置文件复制到我的输出项目中?
请注意,我不是试图转换并包括我的app.config作为classLibrary.dll.config。我已经可以做到了。我正在寻找的是在转换后转换和包含其他 custom.config 文件的选项。
我会 post 在这里我自己的解决方案,我最终放弃了 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"。
此构建目标将搜索配置文件夹中的所有文件,并尝试查找与构建配置相对应的转换文件。对于它找到的任何匹配项,它将执行转换。只需确保所有配置文件和所有转换文件都能找到输出路径中正确的文件夹。