2012-10-23 31 views
1

我的解決方案中有7個代碼庫項目,並且我有3種不同類型的網站使用VSS中的相同代碼庫項目。如何在Visual Studio的生成後事件中獲取解決方案目錄的動態路徑

現在我想把後期構建腳本放在我的一個參考代碼庫項目中,以便在構建完成後將一個特定的DLL放到我的網站bin目錄中。

例如,我有名爲「引用」的參考項目,並且在其項目屬性中將放置以下代碼以獲取解決方案網站的bin目錄。

xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Ibe.UI\Bin 

上面的東西正常工作對我的一個網站項目誰的名字叫「Com.Emirates.Pss.Ibe.UI」,問題就來爲一個用戶在「引用」項目選中,然後其他開發人員的需要最新的引用項目在其後期構建腳本中獲得「Com.Emirates.Pss.Ibe.UI」,但其解決方案網站目錄是「Com.Emirates.Pss.MYBooking.UI」。

我怎樣才能讓XCOPY/Y $(PROJECTDIR)外表套上$(SolutionDir)Com.Emirates.Pss.Ibe.UI \ BIN(粗體部分動態,讓誰曾做用戶可以很容易地建立檢查在應用程序中沒有做任何更改

回答

0

我只是將$(SolutionDir)作爲參數傳遞給在您的PostBuild事件命令行中調用的.cmd文件類似地,如果您希望$(ProjectName)或任何其他VS宏可以在PostBuild cmd中訪問。

+0

我需要從其他項目需要一個DLL文件,然後複製到解決方案的網站bin目錄上的後生成事件 –

3

以下是所有不同的列表Post-Build event macros

我猜你想使用$(ProjectDir)宏,如果我理解正確嗎?

另一個選項如果您使用的MSBuild,你可以在VS添加User Defined Macros變量,創建你自己property sheet作爲示例所示:

<PropertyGroup Label="UserMacros"> 
     <MyProj>Com.Emirates.Pss.Ibe.UI</MyProj> 
</PropertyGroup> 

用法:xcopy /Y $(ProjectDir)Tridion $(SolutionDir)$(MyProj)\Bin

而最後一個選項,正在設置一個環境變量,其名稱爲MAIN項目中的特定項目(將在之前運行),並從references項目中引用它。

例如

在項目#1設置 -build事件有: SETX MyProj Com.Emirates.Pss.Ibe.UI

在參考項目,它使用 xcopy /Y $(ProjectDir)Tridion $(SolutionDir)%MyProj%\Bin

應當注意SETX和SET之間的差異複製是SETX甚至在CMD窗口(運行MSBuild)關閉後仍保留這些變量。但是,您可能必須在第一次運行此程序時關閉並重新打開Visual Studio,因爲使用SETX創建的變量只能在使用此命令後創建的任何CMD窗口上開始工作。

+0

$(PROJECTDIR )會給當前的項目目錄,但是我想複製我的網站bin目錄中的解決方案配置的dll –

+0

用另一個選項更新我的答案 – Blachshma

+0

我需要在哪裏創建 是我需要創建代碼項目或它在網站中...如果需要在由其他解決方案共享的代碼項目中創建,那麼上面的解決方案n不會爲我工作,因爲在這種情況下,1個用戶根據他的項目進行更改並執行檢入,然後2個用戶從vss獲取最新的信息,然後他爲他的項目獲取相同的設置...請建議 –

0

我通過把下面的代碼在「引用」項目PostBuildEvent解決我的問題:

if $(SolutionName) == IbeUI-Integrated xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Ibe.UI\Bin 
if $(SolutionName) == MybUI-Integrated xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Myb.UI\Bin 
if $(SolutionName) == OlciUI-Integrated xcopy /Y $(ProjectDir)Tridion $(SolutionDir)Com.Emirates.Pss.Olci.UI\Bin 
相關問題