2008-10-07 62 views
5

當您在Visual Studio中卸載項目時,任何引用項目都會在其對已卸載項目的引用上發出警告三角形。我寫了自己一個宏來做聰明的東西(檢測項目的添加/刪除以及將任何參考文件轉換爲文件/項目依賴項),但我無法相信我不會錯過更簡單的東西。如果我不得不手動更改引用(它打破了「個人解決方案/共享項目」團隊開發範例),那麼卸載函數如何可以用於任何用途。當您在Visual Studio中卸載項目時,您會如何處理引用?

(這個問題是關係到答案this question關於構建在Visual Studio中大解決方案 - 一些答案提及的是具有與許多項目的解決方案,但「卸載」未使用的項目,以提高性能)

+0

!我想找出一個宏或插件做類似的事情,但沒有花時間做這件事。在互聯網上沒有找到任何東西。任何機會(如果它足夠可重用)你可以發佈它的地方? – 2012-02-13 14:50:39

+0

@MafuJosh,感謝您的關注(和反饋)。這裏是(沒有保證和通常的yadayada):https://gist.github.com/1824214 – Benjol 2012-02-14 06:24:24

+0

謝謝,當我有機會的時候我會研究這個(當我不再工作在夜晚和週末時...),並讓你知道它是怎麼回事。 – 2012-02-15 19:53:39

回答

1

爲我的項目,我創建了一個assemblies文件夾,項目從其他項目複製構建的設置位置自動複製到該文件夾​​。

生成後的引用程序集的項目:

if not exist "C:\builds\Project1" md "C:\builds\Project1\" 
copy "$(TargetDir)$(TargetName).*" "C:\builds\Project1\" 

預構建參照項目:

是否存在「C:\建立\ PROJECT1 \ 「copy」c:\ builds \ Project1 *。*「」$(ProjectDir)程序集「

項目文件指向其assemblies子文件夾以供參考,所以即使源項目從解決方案中卸載,最後構建的程序集也將在開發時不會在整個項目在內存中使用性能問題的情況下使用。

1

如果您使用文件引用在相同的解決方案中有項目的優點是什麼?

如果您app.exe使用utils.dll並且更改了代碼utils.dll,那麼如果是在同一個解決方案VS會注意到的依賴和重編譯。如果它不在解決方案中,則必須跳出,單獨重新編譯utils.dll,然後跳回並重新編譯app.exe

這變得或多或少都取決於你的EXE引用的其他DLL的數量,以及它們多久改變一次(在團隊環境中共享DLL的變化經常以我的經驗)。
還有一個副作用,如果你在VS中有100個項目,需要很長時間來處理它們,只是爲了弄清楚它們是否需要重新編譯。

1

卸載項目是一個臨時動作,因此您可以將實際項目文件編輯爲XML(文本)。如果您想從解決方案中完全移除項目,則應使用「移除」菜單選項,該選項將負責移除對該項目的任何引用。

使用項目引用的一個好處是它允許您通過代碼輕鬆進行調試。它還會自動確保您使用正確的配置構建(即,如果您正在構建「調試」模式,它將使用程序集的Debug版本)。這就是說,你放棄了一些關於你將選擇的依賴項目的版本/版本的決定 - 項目引用意味着你總是使用最新版本。

是的,對於Visual Studio來確定構建依賴關係,它必須能夠看到並構建所有項目引用的項目。

1

我剛剛通過關於構建解決方案和項目的MSDN文檔閱讀了一段尤里卡時刻。

我沒有注意到的是,在多項目解決方案中,解決方案資源管理器中的上下文菜單提供了一個Project Dependencies彈出窗口。如果您尚未通過項目之間的項目引用來定義它們,則可以手動定義項目依賴項。

here(MSDN鏈接,這樣會自行幾周後銷燬),宏觀聽起來不錯

相關問題