我有一個自定義的MSBuild任務,其中包括其他東西添加嵌入式資源解決方案中的其他項目。添加資源後,我想然後建立這些項目,但發現我無法在Visual Studio中使用它。MSBuild任務構建其他解決方案項目VS失敗,但與MSBuild.exe命令行一起工作
爲了測試,我完全剝離了自定義任務,並在Silverlight解決方案的Web項目中重新定義了一個簡單的AfterBuild目標。目標使用MSBuild任務建立在溶液中的Silverlight應用程序項目,如下所示:
<Target Name="AfterBuild">
<PropertyGroup>
<LinkedProject>..\SilverlightApplication1\SilverlightApplication1.csproj</LinkedProject>
</PropertyGroup>
<MSBuild Condition="'$(LinkedProject)' != '' "
Projects="$(LinkedProject)"
Targets="Build"
Properties="CustomFlag=true" >
</MSBuild>
</Target>
奇怪的是,這在命令行中使用的MSBuild時完美的作品,但不可視工作Studio構建Web項目時。我認爲這可能是某種Silverlight問題,並且它的任務是建立一個.NET類庫項目,但結果是一樣的 - 它在命令行上工作,但不在VS中。在VS中沒有實際的錯誤 - 只是Csc任務不會編譯程序集並且不會生成輸出。
我需要做什麼才能在Visual Studio中正常工作?
我一直在使用診斷的冗長,但它不告訴我爲什麼Csc任務不會產生輸出。在調用構建目標時,我一直在使用自定義屬性,在測試用例中,我將其稱爲「CustomFlag」,我認爲這足以確保MSBuild任務即使已經構建也能構建項目。 CoreCompile目標被調用,即使是Csc任務,它也不會執行任何操作。另外,我在測試中的Web應用程序項目中使用AfterBuild目標,但是我的應用程序使用注入CoreBuild結尾的.targets文件。 –