繁体   English   中英

发布 .net 标准库及其所有依赖项?

[英]Publish .net standard library with all it's dependencies?

我创建了一个动态加载库并执行它的主类的系统。 一切正常,我遇到的问题是如何发布此 DLL 及其所有依赖项。 由于没有可执行项目引用它,我必须手动检索依赖项:尝试加载库,检查所需的 DLL,转到 NuGet 缓存文件夹,复制库,​​再试一次,检查它是否抱怨更多依赖项等等直到它拥有所有必需的库。

这是一个真正的痛苦,我还没有找到任何关于如何做到这一点的信息,有可能还是我坚持这个?

该库是一个 .net 标准 2.0 库,我之前使用 .net classic 这样做过,输出文件夹始终包含所有必需的库,即使是来自 NuGet 包的库,但使用 .net 标准,有些东西已经改变,现在只有来自正在复制引用的项目,没有将引用的 NuGet 包复制到输出文件夹。

干杯。

在撰写本文时,它看起来像是设计使然,并且有很多关于它的大惊小怪和混淆,请参阅GitHub 上记录的问题

此外,在为引用项目 B 的项目 A 发布 NuGet 包时,
B 成为 A 中的 NuGet 依赖项; B 的程序集不包含在 A 的 NuGet 包中。

我通过发布我自己的 NuGet 包来处理它。

我只是不喜欢为项目 B 提供 NuGet 包,如果该包仅与项目 A 一起使用/由项目 A 使用,因为它将单独出现在我的 NuGet 提要中。

尝试:

dotnet publish

所有依赖库都应复制到发布输出文件夹。

这是发布 DLL 的实用且轻松的解决方案:

因此,经过一段时间的斗争,我想出了一个更优雅的解决方案。 我测试了这种方法,并部署了一个带有许多外部依赖项的插件的完整构建到 Ubuntu 18.04,它运行完美。

创建一个类型为 Console Application 而不是类库的新项目。 将所有库代码文件放入控制台应用程序并添加依赖项。 摆脱类库项目(您不再需要它)。 最后,发布控制台应用程序。 您将获得一个包含所有依赖项的 DLL。 您可以像使用任何其他 DLL 一样使用此 DLL。

我建议将控制台应用程序项目命名为“Library”,并添加一个 README 来记录它并不是真正的应用程序,即使该项目被配置为构建为一个应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM