2009-12-23 35 views
3

建設,我試圖讓一次性成本的目標只運行建立在一定的頂級項目時,當之前什麼都運行運行(即有許多依賴)。獲取目標以從Visual Studio

我有從普通的MSBuild /命令行構建得到這個工作沒有問題。 我這樣做與

< BeforeBuild />的項目設置和InitialTargets,或者。

棘手的部分是使用Visual Studio。當我從VS構建相同的項目。 VS甚至在調用我的.csproj之前運行依賴關係,所以我的目標(它影響其他項目的構建方式)只有在它們已經被構建之後才能運行。

有什麼方法來強制VS調用依賴之前運行的目標?

我目前正在解決這個問題,從我最低級別的項目(即獲得的總建造了一個......)運行相同的成本目標,通過使用:

條件=」 $( BuildingInsideVisualStudio)「

關於如何完成」正確「的任何想法? 再次,我正在尋找一個解決方案,將工作從VS.

回答

3

做到這一點(如果我沒有理解這個問題)的唯一方法是創建一個虛擬的項目,你告訴VS先建,已經做了你想要的。如果您給它一個.csproj擴展名和Build目標,VS幾乎可以接受任何MSBuild文件。

+0

謝謝! 不錯的主意,這確實是從INSIDE VS獲得相同行爲以及直接調用MSBuild的最佳方式。 – damageboy 2010-04-30 16:48:58

1

爲什麼不重寫<Target Name="BeforeBuild" />目標?這將在項目的實際建築之前執行(因爲Build目標取決於BeforeBuild)。 Visual Studio正在調用構建目標(或重建),因此在.csproj中重寫該目標將導致它首先被調用。

除非你正在尋找比msbuild更早的東西嗎?

+0

BeforeBuild沒有幫助。 我沒有在原來的問題寫這篇文章,但StackOverflow的決定,這是一個HTML標籤,並刪除它... 總之,該項目的構建目標,甚至沒有開始運行,所以當VS決定BeforeBuild將只運行建立頂級項目。 不幸的是,VS分析了依賴關係,並決定在我希望運行特殊目標的項目之前構建它們。 – damageboy 2009-12-24 00:15:03

+0

您是否在談論構建項目或構建解決方案?因爲Visual Studio會將整個解決方案傳遞給MSBuild,MSBuild會將所有項目緩存到單個項目文件中,然後按指定的構建順序進行解析。這可能是首先獲得合適目標的關鍵。 – 2009-12-24 13:58:33

2

Visual Studio使用in proc編譯器來幫助構建過程的UX。因爲VS和MSBuild可能有一些區別。嘗試在項目文件中將屬性UseHostCompilerIfAvailable設置爲false。這將強制VS使用MSBuild進行構建。缺點是Visual Studio中的性能。

你會使用follwing fragement在你的.csproj(或.vbproj)文件。

<PropertyGroup> 
    <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> 
</PropertyGroup> 
+0

我試過UseHostCompilerIfAvailable相同類型的問題[這裏](http://stackoverflow.com/q/9227641/684399),但它沒有奏效。 – CitizenInsane 2012-02-11 20:54:55

+0

我已經在那裏回覆。 – 2012-02-11 23:51:12

相關問題