我想创建一个与第 3 方 dll合并的单个dll 。这意味着最终消费者只需处理 1 个 dll 而不是 2 个。
为了增强,可以说第 3 方 dll 是 nLog。我如何处理合并 dll 的使用者在他们的项目中已经将 NLog 作为参考的情况?
理想情况下,我想做的是将项目中的 NLog 命名空间更改为“XyzNLog”,这意味着用户不需要做任何别名......知道我该怎么做吗?
现在我知道我可以为我的 NLog 项目添加别名,以便我必须将其称为 XyzNLog,但我希望将其传递给合并的 dll 的消费者,这样就不会发生冲突。
更新 - 解决方案
http://blog.mattbrailsford.com/2010/12/10/avoiding-dependency-conflicts-using-ilmerge/
答对了!因此,通过使用 ILMerge,可以将第三方库 DLL 与 Providers 自己的 DLL 合并,这意味着我们只需部署一个 DLL。但这还不是全部,我们实际上可以更进一步,告诉 ILMerge内化所有依赖项。这样做会将所有第三方类转换为内部声明,这意味着它们只能在最终 DLL 中使用。呜呼!问题解决了=)
鉴于此,我的 dll 的使用者也可能让 NLog 消失的问题......因为我引用的 NLog 转变为全部内部!这正是我想要的。
有人对此有任何反馈或想法吗?