我使用SlowCheetah來轉換我的app.configs。我有一個多項目解決方案,其中一個項目執行構建後事件,其中bin的輸出被複制到別處。我發現SlowCheetah是在生成後事件之後進行轉換的,因此我要複製的app.config是預轉換版本。SlowCheetah在生成後事件後執行
有沒有人有我如何在SlowCheetah轉換後執行我的副本的建議?這是否需要我編寫一個自定義生成任務?
我使用SlowCheetah來轉換我的app.configs。我有一個多項目解決方案,其中一個項目執行構建後事件,其中bin的輸出被複制到別處。我發現SlowCheetah是在生成後事件之後進行轉換的,因此我要複製的app.config是預轉換版本。SlowCheetah在生成後事件後執行
有沒有人有我如何在SlowCheetah轉換後執行我的副本的建議?這是否需要我編寫一個自定義生成任務?
如果您使用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"
阿列克謝的回答導致了正確的解決方案,但在這裏它是在充分:
Unload Project
Edit [your project name].csproj
AfterBuild
目標,並添加此屬性AfterTargets="TransformAllFiles"
一個例子:
<Target Name="AfterBuild" AfterTargets="TransformAllFiles">
<Exec Command="ECHO Hello PostBuild World!" />
</Target>
我也碰到了這個問題太...決定更新到SlowCheetah的最新版本(目前2.5.8),並且這個問題似乎已經修復!使用生成後事件來部署帶有轉換的XML的項目不會出現更多問題!
經過NuGet軟件包升級過程後,我遇到了一個奇怪的問題,儘管......變換不再發生。編輯像Naeem Sarfraz這樣的項目建議,我發現SlowCheetah的PropertyGroup部分放置在.csproj的末尾。
這只是將它移動到頂部,靠近其他PropertyGroup部分的問題,現在它就像一個魅力!
如果在發佈之前需要複製/移動其他.config文件(除web.config以外),那麼可以使用Visual Studio 2013完成它(我沒有在早期版本上測試過) 。此部分可以在結束標記</Project >之前的.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文件夾包含將被複制到目標服務器上的整個應用程序。
我找到了解決方法。這不是優雅,但它的作品。我創建了一個虛擬項目,並將其設置爲依賴項,以在項目生成後生成事件之後進行構建。我將後期製作的複製事件從原始項目移到了這個新的虛擬項目中。這是可行的,因爲SlowCheetah已經完成了它的工作。 – ScottC