2009-05-13 58 views
9

我有一個C#項目A,它使用.net包裝器DLL和本地DLL。我將.net包裝器DLL添加到項目A的參考列表中。由於包裝器DLL只在本機DLL處於同一文件夾中時才起作用,因此應將本機DLL複製到項目A的輸出目錄中。我實現此目的通過添加本地DLL作爲項目A下的內容文件並將其複製操作設置爲複製(如果更新)。這可以。爲什麼本機DLL不會複製到輸出目錄

如果C#項目B直接引用了項目A,VS會將項目A使用的所有依賴文件複製到項目B的輸出目錄中。這意味着包裝器DLL和本機DLL將被複制到項目B的輸出中目錄以及。這工作也很好。

然後我還有另一個C#項目C,它只直接引用項目B,而不是項目A.有趣的是,VS不會複製本地DLL到項目C的輸出目錄,這就是我當項目C使用項目B的功能並尋找本地DLL與包裝DLL一起工作時,它打算做另外的工作,它不會找到它。

有人可以解釋爲什麼VS不會將原生DLL複製到項目C的輸出目錄嗎?在VS中複製鏈依賴文件的機制是什麼?非常感謝。

回答

6

基本上,引用鏈不會傳播,它可以在最上面的程序集(exe,web站點等)確保它具有它所需的所有內容,無論是在本地還是在(例如使用受管理的dll )GAC。您將需要將文件添加到exe/web站點作爲「複製到輸出」。

+0

你可以對如何「將文件添加到exe文件(我們在這裏談論的exe不是網站)更具體作爲複製ot輸出「?非常感謝。 – Steve 2009-05-13 06:08:12

+1

您應該只需要在exe項目中重複所需的部署文件,並將其標記爲複製到輸出。 – 2009-05-13 06:41:48

0

爲什麼不在項目A中添加本地dll作爲參考?這將確保它總是包含在其他庫使用答:

編輯:Nevermind,這隻適用於如果DLL是COM或.NET組件。

+0

這是一個好主意。至少,這是我如何假設VS工作。我沒有 – Eric 2010-11-19 22:32:44

相關問題