2008-10-27 115 views
11

我正在使用在2個DLL中定義的第三方API。我已經將這些DLL包含在我的項目中,併爲它們設置了引用。到現在爲止還挺好。C#:如何包含依賴的DLL?

但是,這些DLL至少有一個在運行時無法找到的依賴DLL。我將缺少的DLL複製到項目中並設置「複製到輸出」標誌,但沒有成功。

我應該在這裏做些什麼來告訴項目應該在哪裏找到依賴的DLL?

澄清 我試着添加一個引用到缺少的DLL,但因爲它沒有被識別爲.Net組件。無奈之下,我直接將其添加到輸出文件夾,但沒有成功。

最後,我在PC上安裝了API,它都可以工作。安裝設置PATH變量,並在安裝文件夾中找到DLL。 但是如何告訴項目在其內部文件夾中查找?

+0

當你說你「將缺少的DLL複製到項目中」 - 你的意思是你添加了一個對它的引用,或者只是複製文件?最好添加一個參考。 – 2008-10-27 13:35:29

回答

2

聽起來好像你需要更好地理解第三方庫以及它如何使用它自己的依賴關係。如果API的安裝解決了問題,但是手動複製文件不會,那麼您就錯過了一些東西。有一個丟失的文件,或一些環境變量或註冊表項是必需的。在這方面真正幫助你的兩件事是依賴工具(它是C++安裝的一部分)和procmon,它會告訴你所有在運行時使用的註冊表鍵和文件。

如果幸運的話,這只是一個你錯過的文件。如果完全是這樣,您可以使用項目的「構建事件」部分將所需文件複製到成功構建的正確位置。如果沒有,你將不得不以其他方式解決 - 要麼安裝API,要麼滾動你自己的安裝項目。

0

你是如何部署的?只是平面文件?如果是這樣,只要文件在項目輸出目錄中結束,就應該工作。可以?

如果您正在使用其他部署,則需要告知該引擎以包含它。每個msi/ClickOnce /等都有所不同。

0

您可以緩慢添加下游依賴項作爲項目的引用。這很麻煩,並且有點脆弱

或者你可以使用像微軟的「Depends.exe」這樣的工具來檢查你的頂級程序集並獲得依賴關係的參考列表。