4
我正在使用C#和VS2010。我有我在我的項目中引用的dll(作爲dll引用而不是項目引用)。該dll(a.dll)引用了另一個我的項目不直接使用的dll,我們稱之爲b.dll。這些都不在GAC中。在運行時滿足間接引用
我的項目編譯得很好,但是當我從Visual Studio運行它時,出現b.dll找不到的異常。當我的項目被編譯時,它不會被複制到bin目錄。
將b.dll放入bin目錄以便在運行時可以找到它的最佳方法是什麼? 我想到了四個選項。
- 使用後編譯步驟B.DLL複製到bin目錄
- B.DLL添加到我的項目(如一個文件),並指定複製到輸出目錄是否有更新的
- 添加B.DLL作爲一個DLL的參考我的項目。
- 使用ILMerge以B.DLL結合了A.DLL
我不喜歡3日所有的,因爲它使B.DLL看到我的項目,其他兩個看起來像黑客。我是否缺少其他解決方案?哪一種是「正確」的方式?依賴注入框架能夠解析並加載b.dll嗎?
我寧願我的項目,它不直接使用b.dll,不在其項目中有b.dll。 b.dll位於與引用a.dll相同的目錄中。 你能舉一個使用AssemblyResolve事件來處理這個事件的例子嗎? – automatic 2010-05-07 14:29:35
終端用戶的機器上的'b.dll'在哪裏? – SLaks 2010-05-07 14:42:18
在最終用戶機器上,我會確保它與exe文件位於同一個目錄中。我的問題更多的是關於發展。我有一個ReferencedDll目錄,保存a.dll和b.dll a.dll是從我的項目中的此目錄引用的。當我運行/調試我的項目b.dll沒有被加載,因爲它不在/ bin目錄中。 – automatic 2010-05-07 15:09:32