2009-12-30 44 views
0

我的Visual Studio解決方案有幾個後期綁定的項目(dll),它們在運行時由其他項目加載。加載的dll取決於一些運行時條件。在不導入類型的情況下添加引用

要在運行時加載dll,我需要它出現在應用程序的bin目錄中,並且有幾個這樣的應用程序。爲此,我運行一個後期構建腳本,將後期綁定的dll複製到每個可能需要它的應用程序。我想擺脫這個腳本,因爲它創建了一個非常重要的xcopy後構建過程。

你在這種情況下使用什麼?

我也可以從每個應用程序中添加對dll的引用,但是在這種情況下,我將創建一個類型引用,並且我(或其他開發人員)可能偶然引用了一個類型,可能不會出現在客戶端服務器。

回答

1

我以前也處理過這個問題,這很令人沮喪。我現在採用的方法是刪除目錄依賴項;將這些後期綁定庫的位置(在配置文件中)外部化,然後將它們保存在一個共享位置,您可以將這些庫的構建輸出設置爲共享位置。

當涉及到部署時,您可以更改該設置並使用安裝程序打包庫。

這在開發/調試幾個獨立應用程序時特別有用,因爲您只需要跟蹤庫的單個副本。

如果這不是您的選擇 - 可能外部化太困難了,或者從一個應用程序到下一個應用程序的依賴關係可能存在重大差異 - 那麼我會選擇nobugz的答案。

0

更改所有後期綁定項目的構建輸出,以便直接在您希望它們延遲綁定的項目中構建。因此,而不是將它們構建到自己的/ bin/debug /目錄,將它們構建到../MyMainApp/bin/Debug/。

+0

謝謝,狡猾。構建輸出已被重定向。問題是需要將dll複製到多個文件夾,因爲解決方案包含多個獨立的應用程序。我也在考慮爲所有後期綁定的dll共享父文件夾。 – 2009-12-30 18:06:30

+0

我們在這裏也有類似的情況,爲了解決這個問題,我們將所有項目構建到同一個目錄(c:\ OurProductName)。因此該文件夾包含我們所有的所有DLL和所有應用程序(EXE)。 – Sylvain 2009-12-30 18:12:03

1

您不必將其作爲引用程序集將其複製到客戶端項目中。項目+添加現有項目,選擇DLL。將其構建操作設置爲「無」,將複製到輸出爲「複製,如果更新」。

+0

nobugz:只有在客戶端項目中有對這些DLL的引用時纔會自動執行。他寫道,他寧願不添加引用(請參閱他的最新評論)。 – Sylvain 2009-12-30 18:48:39

相關問題