Dot-Net

Visual Studio 忽略 MSBuild 文件 (csproj) 自定義

  • July 29, 2011

注意:Visual Studio 2010 SP1 / MSBuild 4.0

我為這個錯誤快瘋了,我不明白為什麼 Visual Studio 會這樣。我正在.targets為特定解決方案中的項目編寫自定義文件。我已將.csproj文件編輯為:

<Include Project="..\MyTargets.targets" />

Microsoft.CSharp.targets靠近文件底部之後。這個想法是這個目標文件將通過修改_____DependsOn屬性來注入要執行的操作,就像PostSharp集成自身的方式一樣。

在摸索我的目標如何無法執行後,我決定在命令行中使用 MSBuild 執行它,並查看格式良好的顏色輸出。

在命令行中,我的目標執行. 從視覺工作室(即使使用清理/重建),我的目標不執行.

我已經迷上BuildDependsOn了這樣執行我的目標:

<PropertyGroup>
 <BuildDependsOn>
   MyTargetGoesHere;
   $(BuildDependsOn)
 </BuildDependsOn>
</PropertyGroup>

我的第一個想法是我有錯誤的文件。我驗證了文件,它是正確的。然後我檢查它是否陳舊。讓 Visual Studio 進行一些更改,保存,執行。Visual Studio 的新更改生效,仍然沒有執行我的目標。

所以在這裡我越來越絕望。我在我的目標文件中放了一個**BLARING SYNTAX ERROR 。**MSBuild 爆炸,Visual Studio 編譯項目成功。

  • 我究竟做錯了什麼?
  • Visual Studio 不使用 MSBuild 文件嗎?
  • 它會呼叫一些超級秘密目標而不是“建構”Microsoft.Common.targets嗎?
  • 為什麼 msbuild 會以一種方式行事而工作室會以另一種方式行事,我認為它們旨在協同工作……

總結上面的評論,對導入的項目文件的更改不會觸發重新載入,對導入項目的更改也不會導致重新載入導入。需要重新載入解決方案文件以擷取在導入中所做的更改。

引用自:https://stackoverflow.com/questions/6876191