2017-07-25 23 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

这种方法的唯一限制是你不能在签名的程序集中使用它,我认为。