SlowCheetah在后期构建事件之后执行。

5
我使用SlowCheetah来转换我的app.configs。我有一个多项目解决方案,其中一个项目执行一个后构建事件,将bin的输出复制到其他地方。我发现SlowCheetah在后构建事件之后进行转换,因此我复制的app.config是未经转换的版本。
是否有人有建议,我如何在SlowCheetah转换之后执行复制操作?这将需要我编写自定义构建任务吗?

我找到了一个解决方法。它不够优雅,但是可以工作。我创建了一个虚拟项目,并将其依赖项设置为在我原来的项目后构建。我将原始项目中的后构建复制事件移动到这个新的虚拟项目中。这样做的原因是SlowCheetah已经完成了它的工作。 - ScottC
4个回答

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"


2

Alexey的回答提供了正确的解决方案,下面是完整的步骤:

  • 右键单击您的项目并选择卸载项目
  • 现在右键单击项目并选择编辑[your project name].csproj
  • 滚动到底部取消注释名为AfterBuild的目标,并添加此属性 AfterTargets="TransformAllFiles"
  • 使用Exec命令将您的后置构建操作移动到此目标中:

一个例子:

<Target Name="AfterBuild" AfterTargets="TransformAllFiles">
 <Exec Command="ECHO Hello PostBuild World!" />
</Target>

0
如果您需要在构建后发布之前复制/移动其他 .config 文件(而不是 web.config),则可以使用 Visual Studio 2013 进行操作(我没有在早期版本上进行测试)。此部分可以添加到 .csproj 文件的结尾,就在闭合标记 </Project> 之前,它将在 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文件夹包含整个应用程序,将被复制到目标服务器上。

0

我也遇到了这个问题...决定升级到最新版本的SlowCheetah(当前版本为2.5.8),这个问题似乎已经被解决了!使用后期构建事件来部署一个带有转换XML的项目再也没有问题了!

在NuGet包升级过程中,我遇到了一个奇怪的问题...转换不再发生。像Naeem Sarfraz建议的那样编辑项目,我发现SlowCheetah的PropertyGroup部分被放置在.csproj的末尾。

只需要将它移到靠近其他PropertyGroup部分的顶部,现在它就像魔法一样工作了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接