【发布时间】:2010-11-19 01:01:14
【问题描述】:
我正在构建一个 .NET DLL 类库,它依赖于 log4net.dll 等其他库 - 在打包我的 DLL 时我应该将这些 DLL 放在哪里?有没有办法自动将它们包含在一个超级 DLL 中?我应该将所有 DLL 都放在一个 bin 文件夹中吗?
【问题讨论】:
我正在构建一个 .NET DLL 类库,它依赖于 log4net.dll 等其他库 - 在打包我的 DLL 时我应该将这些 DLL 放在哪里?有没有办法自动将它们包含在一个超级 DLL 中?我应该将所有 DLL 都放在一个 bin 文件夹中吗?
【问题讨论】:
不确定您是如何部署解决方案的,但不要忘记,为了签署您的类库,您需要签署您的第 3 方 .dll。仅此一项就可能需要您合并所有引用。
【讨论】:
你应该看看ILMerge。我链接了一个显示 ILMerge 用法的博客
Leveraging ILMerge to simplify deployment and your users experience
【讨论】:
只需将它们全部发送到包含您的 dll 的目录中(假设您正在谈论二进制分发 - 在源代码分发中,我将有一个包含您的依赖项的“lib”目录)。
不要忘记检查您是否还需要提供许可证、获取源的说明等。
我个人不会尝试将您的类库与依赖项合并。
【讨论】:
您需要首先检查附加到其他 DLL 的 EULA 和其他许可证。有些人可能会限制其 DLL 库的重新分发方式。假设没有问题,您可以将它们全部编译为一个大 DLL,或者创建一个安装程序(或一个简单的 zip 文件),将所有关联的 DLL 安装到它们的预期目标。
【讨论】:
在您的解决方案树中,为所有 yoru 源代码创建一个名为“src”的文件夹,为 log4net、您自制的 dll 库和任何其他库等库创建一个名为“lib”的文件夹。
【讨论】: