我使用SlowCheetah来转换我的app.configs。我有一个多项目解决方案,其中一个项目执行一个后构建事件,将bin的输出复制到其他地方。我发现SlowCheetah在后构建事件之后进行转换,因此我复制的app.config是未经转换的版本。
是否有人有建议,我如何在SlowCheetah转换之后执行复制操作?这将需要我编写自定义构建任务吗?
是否有人有建议,我如何在SlowCheetah转换之后执行复制操作?这将需要我编写自定义构建任务吗?
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Some_Target_Name" AfterTargets="TransformAllFiles" >
<Message Text="= Script here will run after SlowCheetah TransformAllFiles ="/>
</Target>
<Project>
修改:我安装了SlowCheetah并发现AfterTargets属性应该是"TransformAllFiles"。
只需设置目标依赖项AfterTargets="TransformAllFiles"
Alexey的回答提供了正确的解决方案,下面是完整的步骤:
卸载项目
编辑[your project name].csproj
AfterBuild
的目标,并添加此属性 AfterTargets="TransformAllFiles"
一个例子:
<Target Name="AfterBuild" AfterTargets="TransformAllFiles">
<Exec Command="ECHO Hello PostBuild World!" />
</Target>
<Target Name="MoveConfigFile" BeforeTargets="MSDeployPublish">
<Move
SourceFiles="$(IntermediateOutputPath)Package\PackageTmp\ThirdPartyApp.config"
DestinationFolder="$(IntermediateOutputPath)Package\PackageTmp\bin"
OverwriteReadOnlyFiles="true"
/>
</Target>
我也遇到了这个问题...决定升级到最新版本的SlowCheetah(当前版本为2.5.8),这个问题似乎已经被解决了!使用后期构建事件来部署一个带有转换XML的项目再也没有问题了!
在NuGet包升级过程中,我遇到了一个奇怪的问题...转换不再发生。像Naeem Sarfraz建议的那样编辑项目,我发现SlowCheetah的PropertyGroup部分被放置在.csproj的末尾。
只需要将它移到靠近其他PropertyGroup部分的顶部,现在它就像魔法一样工作了!