2013-04-15 26 views
1

我正在使用Slow Cheetah轉換控制檯應用程序的app.config文件。 在構建過程中,我也調用了這個應用程序。起初,我用生成後事件,但後來我意識到,之後生成後事件慢獵豹變換運行,所以我用的解決方案作爲解釋在這裏:所以基本上Slow Cheetah AfterTargets =「TransformAllFiles」在本地工作,不在構建服務器上

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)時,我觀察到奇怪的行爲。這些任務現在在「慢速獵豹之前」運行。爲了驗證我'輸入'配置文件,我可以看到它沒有被轉換。但是,一旦構建完成,我去建立框,我看到已經轉換的文件在同一個位置。

所以慢獵豹正在做它的工作,但由於某些原因後,這​​些任務運行。 任何建議如何解決這個問題?

回答

3

好的,所以我想通了。事實證明,這本身並不是在本地工作。它只是在VS 2010 IDE中,我沒有每次運行clean build,所以它正在拾取已經轉換的文件。

爲了排除故障,我最終運行了MSBuild命令行,當我這樣做時,我注意到最後一次目標運行是ScReplaceAppConfigItem。我試圖使用AfterTargets強制我的任務後運行,但它沒有幫助。我的任務仍然運行。

什麼做了工作,實際上是使用舊DependsOnTargets屬性:

<Target Name="AfterBuild" DependsOnTargets="ScReplaceAppConfigItem"> 
    <Exec Command="Echo $(OutputPath)" /> 
    <Exec Command="Type $(OutputPath)Migrations.exe.config" /> 
    <Exec Command="$(OutputPath)Migrations.exe" /> 
</Target> 
相關問題