我使用SlowCheetah来转换我的app.configs。我有一个多项目解决方案,其中一个项目执行构建后事件,其中bin的输出被复制到别处。我发现SlowCheetah是在生成后事件之后进行转换的,因此我要复制的app.config是预转换版本。SlowCheetah在生成后事件后执行
有没有人有我如何在SlowCheetah转换后执行我的副本的建议?这是否需要我编写一个自定义生成任务?
我使用SlowCheetah来转换我的app.configs。我有一个多项目解决方案,其中一个项目执行构建后事件,其中bin的输出被复制到别处。我发现SlowCheetah是在生成后事件之后进行转换的,因此我要复制的app.config是预转换版本。SlowCheetah在生成后事件后执行
有没有人有我如何在SlowCheetah转换后执行我的副本的建议?这是否需要我编写一个自定义生成任务?
如果您使用msbuild 4.0来构建项目 - 您可以使用新的AfterTargets BeforeTargets属性来勾选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"
阿列克谢的回答导致了正确的解决方案,但在这里它是在充分:
Unload Project
Edit [your project name].csproj
AfterBuild
目标,并添加此属性AfterTargets="TransformAllFiles"
一个例子:
<Target Name="AfterBuild" AfterTargets="TransformAllFiles">
<Exec Command="ECHO Hello PostBuild World!" />
</Target>
我也碰到了这个问题太...决定更新到SlowCheetah的最新版本(目前2.5.8),并且这个问题似乎已经修复!使用生成后事件来部署带有转换的XML的项目不会出现更多问题!
经过NuGet软件包升级过程后,我遇到了一个奇怪的问题,尽管......变换不再发生。编辑像Naeem Sarfraz这样的项目建议,我发现SlowCheetah的PropertyGroup部分放置在.csproj的末尾。
这只是将它移动到顶部,靠近其他PropertyGroup部分的问题,现在它就像一个魅力!
如果在发布之前需要复制/移动其他.config文件(除web.config以外),那么可以使用Visual Studio 2013完成它(我没有在早期版本上测试过) 。此部分可以在结束标记</Project >之前的.csproj文件末尾添加,并且在MSDeploy开始发布过程之前它将被解雇。
<Target Name="MoveConfigFile" BeforeTargets="MSDeployPublish">
<Move
SourceFiles="$(IntermediateOutputPath)Package\PackageTmp\ThirdPartyApp.config"
DestinationFolder="$(IntermediateOutputPath)Package\PackageTmp\bin"
OverwriteReadOnlyFiles="true"
/>
</Target>
我所在的公司购买了需要有为了工作在bin文件夹用其组装沿着.config文件中的第三方产品的工作。
在我们需要处理产品的config文件,并能转化后,将其移动到bin文件夹同一时间。
$(IntermediateOutputPath)Package \ PackageTmp文件夹包含将被复制到目标服务器上的整个应用程序。
我找到了解决方法。这不是优雅,但它的作品。我创建了一个虚拟项目,并将其设置为依赖项,以在项目生成后生成事件之后进行构建。我将后期制作的复制事件从原始项目移到了这个新的虚拟项目中。这是可行的,因为SlowCheetah已经完成了它的工作。 – ScottC