2015-01-06 67 views
2

我有幾個單獨的項目(沒有任何關係)所有這些參考我創建的DLL,讓我們稱之爲MyDll。參考DLL和何時有複製本地設置爲真

我讀過默認情況下,每個引用我的dll的項目都會將Copy Local設置爲true。所以每個項目都有自己的MyDll副本。

雖然如果我重建MyDll會發生什麼,所有這些副本會得到更新還是需要重新添加引用?

將MyDll放在只有一個地方,我所有的項目引用這個文件或者這個想法是不明智的嗎?

+1

我希望有這個共同的DLL源代碼項目在我不同的項目和辦理更新這些項目使用源代碼版本系統複製。請記住,如果您更改此通用代碼,則需要重新測試相關項目中的所有內容。這可能會非常昂貴 – Steve

+0

,所以我會將MyDll項目添加到每個使用此項目的項目的解決方案中。通過添加對dll的引用來完成此操作的主要優點是什麼? – mHelpMe

+1

那麼,好處很大程度上取決於這種常見的dll。例如,對於每個項目來說,通信庫都是相同的,但實用程序庫可能會因項目而異。您可以根據項目的需要微調這個常見的dll。您避免了重新測試整套項目的需要。 (想象一下,您需要快速運送修復bug的項目,但是您的庫的新版本尚未針對此特定項目進行測試)。無論如何,我認爲這樣做更靈活。這裏的基礎是版本控制系統的作用 – Steve

回答

1

您可以添加一些東西到你的公共DLL的Post-Build事件(項目 - >屬性 - > BuildEvents)。例如,你可以叫你一直與依賴的DLL

if /I "$(ConfigurationName)" == "Release" 
     Call $(SolutionDir)\distribute_library.cmd $(TargetPath) 

項目的所有輸出文件夾更新的批處理文件(只是一條線,這裏分裂爲便於閱讀)

哪裏distribute_library.cmd是批處理該文件包含將$(TargetPath)複製到各個目的地的命令。

事情是這樣的:

D: 
COPY %1 \MyProject1\bin\release 
....other targets .... 

不要忘記:設置Run the post-build event組合到On Successful build

0

複製本地是使用您的.dll的項目中的引用屬性。 當您構建項目時,將引用程序集複製到輸出文件夾的過程完成。 如果引用的路徑設置爲項目的輸出文件夾,則需要重建項目。