2012-01-08 16 views
2

所以我們的構建系統和源代碼控制系統來自Perforce,它是一個龐然大物。Visual Studio Addin - 在項目加載後更改項目引用而不「真正」更改它們

我們希望將項目中的dll引用更改爲其他位置,例如,當前引用可能是C:\ blah \ debug \ blah.dll,我們要更改它爲d:\ codeinjected \ blah \ debug \ blah.dll

但是我們不想這樣做是VStudio項目文件,因爲那也是我們的MSBuild構建實驗室文件,那麼有沒有辦法讓一個插件可以在飛行中做到這一點,沒有真正改變參考?

回答

1

這聽起來像你想要改變Visual Studio項目的引用DLL的位置。最簡單的方法是將條件結構添加到MsBuild文件中。

<Reference Condition="$(OnDevMachine)"> 
    ... 
</Reference> 
<Reference Condition="$(OnLabMachine)"> 
    ... 
</Reference> 

另一種選擇是爲您的所有項目都有一個通用的msbuild文件。在該特定項目中,您可以創建一個指向參考目錄的有條件定義的值,並讓每個葉子項目引用該變量。它會減少代碼,可能更適合你的構建人員。

<PropertyGroup> 
    <ReferenceDir Condition="$(OnDevMachine) == 'true'">Some\Dev\Path</ReferenceDir> 
    <ReferenceDir Condition="$(OnLabMachine) == 'true'">Some\Lab\Path</ReferenceDir> 
</PropertyGroup> 
+0

除了我不能膨脹csproj文件,我們的構建主人建議在SO上尋求其他替代方案。有關如何在IDE中可能僞造它的任何想法? – halivingston 2012-01-08 03:54:19

+0

IDE使用MsBuild文件;這是做你想做的事情的正確方法。我不知道爲什麼你/你的「構建大師」嘲笑它是「膨脹」的文件。它沒有這樣的事情。當然你的構建系統可以處理幾條額外的線路。 – 2012-01-08 04:15:06

+0

@ user986697我增加了另一種可能會更適合你的構建人員的可能性。不過,我覺得修改構建文件結構是正確的方法。這是一個構建問題,應該由構建系統來解決。我一直在**很多采取類似方法的球隊。 – JaredPar 2012-01-08 17:23:32