我有一個我做過的類庫項目。我們稱之爲ClassA。在ClassA中,我需要訪問位於dll(ToolsDLL.dll)中的一些工具。你可以將dll捆綁在一起嗎?
在ClassA的我已經加入ToolsDLL.dll到項目和選擇的ToolsDLL.dll文件複製到輸出目錄ALWAYS。因此,該庫建立和編譯就好了,在輸出目錄中,我看到ClassA.dll以及ToolsDLL.dll
接下來,我想編寫一個應用程序,說App_A使用ClassA中的方法。所以,在我的App_A項目中,我添加了對ClassA.dll的引用,以便可以訪問它的名稱空間。一切都很好,它建立/編譯。
問題是一旦我運行App_A並且它到達了ToolsDLL.dll需要使用的地方,它就會拋出一個異常「無法加載ToolsDLL.dll。我不明白它有可能如何無法找到該DLL,因爲它與ClassA.dll在同一目錄中。
我發現如果我把ToolsDLL.dll放在App_A的輸出目錄中,它工作得很好。是否有任何解決方法?有什麼辦法可以將ToolsDll.dll以某種方式與ClassA.dll捆綁在一起,原因是我的客戶將編寫他們自己的類似於AppA的應用程序,如果他們只需要在他們的項目中引用一個文件而不是多個。
它看起來像ILMerge只能在.NET程序集使用。那是對的嗎。在我的情況下,ToolsDLL.dll是由芯片製造商提供給我的。我不知道它是不是.net程序集。這是否重要? – PICyourBrain 2010-01-05 16:52:27
是的,我相信它只適用於.NET程序集。 爲了弄清楚你有什麼樣的'.dll',或許你可以使用.dll。NET SDK實用程序'ildasm',嘗試並反彙編'.dll'。如果它是一個.NET程序集,這應該工作;如果它包含本機代碼,則'ildasm'應該失敗。 – stakx 2010-01-05 17:40:18
我注意到在Visual Studio中,如果我去ToolsDll.dll - >屬性有一個屬性稱爲行動。我可以將其設置爲Embedded Resource嗎? – PICyourBrain 2010-01-05 18:01:13