2017-07-25 60 views
0

我創建了一個包含對Microsoft.Azure.Devices(以及其他一些引用)的引用的DLL。 我希望能夠在其他項目中使用此DLL,而無需每次都參考Microsoft.Azure.Devices。可能嗎?使用附加的DLL文件引用

目前,爲了使用Microsoft.Azure.Devices的任何函數,我必須在我的新項目中引用它,這不是一個好的解決方案,我想 - 我希望我的DLL是一個「完整的」參考 - 我只想使用我創建的抽象層,而不關心裏面的內容(使用了什麼引用)。

+0

因此,您希望程序集的使用者僅使用程序集而不是引用Microsoft DLL? – derape

+0

您仍然需要將Microsoft.Azure.Deveice dll放入庫的bin文件夾。 detape解決方案將在單個可執行文件中構建一個包含代碼和Azure代碼的新庫。 – jdweng

+1

**您的依賴關係的依賴關係也是您的依賴**。如果你的DLL暴露了* Microsoft.Azure.Deveice *上的任何公共類型,你需要一個直接引用,但是如果你的DLL封裝了所有東西,那麼你不需要引用(但仍然需要該庫的二進制可訪問性,如* jdweng *所示)。 – Alejandro

回答

0

這聽起來像你想使用某種DLL編織。這將合併所有外部引用的程序集和您的程序集到一個新的。

有多種框架可以實現這一點。我個人使用這兩種:

  • IL合併
  • Costura Fody

從視圖fody的使用點是非常容易使用。你基本上使用Nuget來引用它(參見https://www.nuget.org/packages/Costura.Fody/)。這就是它。它會將所有參考文件打包到一個程序集中。 你可以找到更多關於Git頁面的信息https://github.com/Fody/Costura

這種方法的唯一限制是你不能在簽名的程序集中使用它,我認爲。