我正在使用Slow Cheetah转换app.config文件以获取控制台应用程序 . 在构建期间,我也调用此应用程序 . 最初我使用了post-build事件,但后来我意识到Slow Cheetah变换后构建事件后运行,所以我使用了解决方案,如下所述:
SlowCheetah executes after post-build events
基本上,在我的迁移项目中,我有以下部分(用于诊断的Echo / Type)
<Target Name="AfterBuild" AfterTargets="TransformAllFiles">
<Exec Command="Echo $(OutputPath)" />
<Exec Command="Type $(OutputPath)Migrations.exe.config" />
<Exec Command="$(OutputPath)Migrations.exe" />
</Target>
这在当地很有效 . 但是当部署到CI服务器(CruiseControl MSBuild 4.0)时,我观察到奇怪的行为 . 这些任务现在在“慢速猎豹”之前运行 . 要验证我'输入'配置文件,我可以看到它没有被转换 . 但是一旦构建完成并且我去构建框,我在同一位置看到已经转换的文件 .
所以慢猎豹正在做它的工作,但由于某些原因,在这些任务运行之后 . 有什么建议可以解决这个问题吗?
1 回答
好的,我明白了 . 事实证明,它也没有在本地工作 . 它只是在VS 2010 IDE中我每次都没有运行干净的构建,所以它正在拾取已经转换过的文件 .
为了排除故障,我最终运行了MSBuild命令行,当我这样做时,我注意到最后一次目标运行是
ScReplaceAppConfigItem
. 我试图使用AfterTargets
强制我的任务运行但它没有帮助 . 我的任务仍在运行 .是什么使它工作,实际上使用旧的
DependsOnTargets
属性: