2012-02-28 20 views
4

許多類似的帖子,但這不是重複我相信。當我在Visual Studio中添加引用時,一些dll會在本地複製,而有些則不會。我應該如何確定哪些是必須「本地複製」的引用?

我知道我從其他地方得到的外部DLL應該有一個本地引用,但是我想我從Visual Studio的長列表引用(.NET和COM)中選擇的引用不需要在本地複製。我不。

現在我注意到,當我從COM中選擇Shell32時,本地複製了dll。默認情況下,「複製本地」設置爲true。所以我認爲.NET是那些不需要本地引用而COM應該擁有的。但是當我引用Office Interop對象(COM)時,我發現它們並未在本地複製。

  1. 這是如何複製本地和一些沒有。 (試圖知道一些不錯的東西)

  2. 另外我應該如何去設置「複製本地」屬性的參考一般嗎?建議只是按照Visual Studio的默認設置進行操作?

謝謝。

回答

1

VS默認情況下出錯的機率很小。您的開發機器(通常)與您的用戶機器沒有區別,重要的是您的GAC中的內容。您將像安裝用戶一樣安裝.NET,因此框架程序集位於您的GAC以及用戶的本地,因此不會被複制到本地。任何第三方.NET程序集都會複製到本地,包括您自己的。

唯一的角落案例是COM pias,主互操作組合。您的開發機器上通常會安裝一些,Office和Internet Explorer pias相當常見。除非有人安裝它們,否則它們不會在用戶的機器上可用。通常情況下,你實際上並不需要需要一個pia,它們只在你自己的程序集公開他們的類型時才需要。只需將本地複製到True即可。否則這是一個迅速消失的問題,由VS2010構建的項目支持Embed Interop Types功能,否則稱爲「no-pia」goody。

最後但並非最不重要,你總是需要測試你的安裝程序。在不太可能的情況下,你錯過了一些東西,那測試會迅速將其衝出。

+0

我正在尋找的確切的東西。謝謝 – nawfal 2012-02-29 11:37:24

0

我用它來控制發佈到構建輸出中的內容。如果引用是需要私人部署的,我將其設置爲true。否則,我將它設置爲false。

相關問題