2009-02-27 111 views
0

我有一個關於msbuild的命令行選項的問題。我是 目前使用msbuild來建立使用現有解決方案 文件的項目。這些解決方案文件引用了每臺機器上具有不同路徑的外部dll。我目前正在編寫一個構建腳本 ,並通過msbuild的/ p:開關將特定路徑傳遞給項目文件。Visual Studio msbuild

我當前構建行是: 的MSBuild test.sln/P:ReferencePath = 「C:\ ABC」/ P:ReferencePath = 「C:\ RCA」

我已經注意到,參考路徑現在包含只有c:\ rca和 不是c:\ abc。這對我造成了一些問題,因爲外部DLL 位於兩個不同的導演中。我可以通過visual studio保留多個 參考路徑,但不能通過命令行。

是否有任何已知的途徑,使我可以做到這一點

回答

4

我相信你可以使用這個/ P:ReferencePath = 「C:\ ABC; C:\ RCA」

至少那是什麼link暗示,他們正在使用%3B來編碼「;」在構建文件中。

0

嘗試用分號分隔條件的pathes(;)

像這樣:

C:\ ABC; C:\ RCA

0

你可能是通過在同步您的庫更好機器。我發現Visual Studio使這很簡單。只需添加一個解決方案文件夾,並在那裏添加您的庫。然後,在每個項目中,引用這個共同的地方的圖書館。這樣,每個開發人員都在同一個地方。

這將刪除您在嘗試編寫構建腳本時所具有的變量之一。

3

雖然上面列出了提供更多一個參考路徑的正確語法,但我建議解決根本原因,在我看來,這是您引用程序集的不同位置。我建議你把所有第三方的依賴,除了框架組件的源代碼庫,原因如下:

  1. Relatitve路徑是跨計算機一致
  2. 源代碼總是在水槽正確的版本你的第三方大會(如果你需要從現在起2年內建立一箇舊版本的軟件)。
  3. 升級第三方裝配就像在一臺機器上升級然後將更改提交到存儲庫一樣簡單。 (在以前的項目中,我們甚至竟然在整個Java運行時環境檢測,並且是在給定的設置很高興。)
0

用於設置參考路徑的命令行選項會工作得很好(假設你逃脫半結腸,似乎%3B和&#59;將工作)。然而,當從nant傳遞參數(並且我需要多個路徑)時,創建'Visual Studio項目用戶選項文件'似乎效果更好。

我只是發出(回聲)的文件到文件系統格式如下:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <ReferencePath> 
     C:\abc;c:\rca 
    </ReferencePath> 
</PropertyGroup> 

我給*。用戶提交一個適當的名稱(給出一個項目文件MyProject.csproj ,我的用戶文件將是MyProject.csproj.user)