我使用SlowCheetah转换我的app.configs。我有一个多项目解决方案,其中一个项目执行一个后期构建事件,其中bin的输出被复制到别处。我发现SlowCheetah在构建后事件之后进行了转换,因此我正在复制的app.config是预转换版本。
有人建议我在SlowCheetah转换后如何执行我的副本吗?这是否需要我编写自定义构建任务?
答案 0 :(得分:4)
如果您使用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"
答案 1 :(得分:2)
阿列克谢的答案导致了正确的解决方案,但现在它已经完整:
Unload Project
Edit [your project name].csproj
AfterBuild
的目标并添加此属性AfterTargets="TransformAllFiles"
一个例子:
<Target Name="AfterBuild" AfterTargets="TransformAllFiles">
<Exec Command="ECHO Hello PostBuild World!" />
</Target>
答案 2 :(得分:0)
我也遇到了这个问题...决定更新到最新版本的SlowCheetah(当前2.5.8),这个问题似乎已经解决了!使用后期构建事件来部署具有转换XML的项目不再有问题!
在NuGet包升级过程之后,我遇到了一个奇怪的问题,但是...转换不再发生了。编辑像Naeem Sarfraz这样的项目建议,我发现SlowCheetah的PropertyGroup部分放在了.csproj的末尾。
这只是将它移到顶部,靠近其他PropertyGroup部分的问题,现在它就像一个魅力!
答案 3 :(得分:0)
如果您需要在构建之前复制/移动其他.config文件(除了web.config之外),那么在此之前发布是如何使用Visual Studio 2013完成的(我没有在早期版本上测试它)。可以在结束标记&lt; / Project&gt;之前的.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文件夹包含将通过目标服务器复制的整个应用程序。