簡體   English   中英

如何在Visual Studio的post-build事件中獲取解決方案目錄的動態路徑

[英]How to get the dynamic path of solution directory in post-build event of Visual Studio

我的解決方案中有七個代碼庫項目,我有 3 個不同類型的網站,它們使用來自 VSS 的相同代碼庫項目。

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

例如,我有一個名為“references”的參考項目,並且在其項目屬性中將放置以下代碼以獲取解決方案網站 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)Tridion $(SolutionDir) Com.Emirates.Pss.Ibe.UI \\Bin(粗體部分是動態的,這樣誰簽入用戶就可以輕松地構建那里的應用程序,而無需進行更改.

這是所有不同的Post-Build 事件宏的列表

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

另一種選擇,如果您使用 MSBuild,您可以在 VS 中添加用戶定義的宏變量,創建您自己的屬性表,如示例所示:

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

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

最后一個選項是在 MAIN 項目(將在之前運行)中設置一個具有特定項目名稱的環境變量,並從references項目中引用它。

例如

在項目 #1 中設置一個Pre- Build 事件: SETX MyProj Com.Emirates.Pss.Ibe.UI

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

應該注意的是 SETX 和 SET 之間的區別在於,即使在 CMD 窗口(運行 MSBuild)關閉之后,SETX 也會保留變量。 但是,您可能必須在第一次運行時關閉並重新打開 Visual Studio,因為使用 SETX 創建的變量只會在使用此命令后創建的任何 CMD 窗口上開始工作。

我只是將 $(SolutionDir) 作為參數傳遞給您在 PostBuild 事件命令行中調用的 .cmd 文件。 同樣,如果您想要 $(ProjectName) 或任何其他可在 PostBuild cmd 中訪問的 VS 宏。

我通過將以下代碼放在“參考”項目 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM