SlowCheetah在构建后事件后执行

时间:2012-09-14 11:55:40

标签: visual-studio-2010 msbuild slowcheetah

我使用SlowCheetah转换我的app.configs。我有一个多项目解决方案,其中一个项目执行一个后期构建事件,其中bin的输出被复制到别处。我发现SlowCheetah在构建后事件之后进行了转换,因此我正在复制的app.config是预转换版本。

有人建议我在SlowCheetah转换后如何执行我的副本吗?这是否需要我编写自定义构建任务?

4 个答案:

答案 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"
  • 使用Exec命令将后期构建操作移动到此目标中:

一个例子:

<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文件夹包含将通过目标服务器复制的整个应用程序。