发布 .net 标准库及其所有依赖项?
Publish .net standard library with all it's dependencies?
我创建了一个动态加载库并执行它的主要系统 class。
一切都很完美,我的问题是如何发布这个 DLL 及其所有依赖项。由于没有可执行项目引用它,我必须手动检索依赖项:尝试加载库,检查所需的 DLL,转到 NuGet 缓存文件夹,复制库,再试一次,检查它是否抱怨更多依赖项等等直到它拥有所有必需的库。
这是一个真正的痛苦,我还没有找到任何关于如何做到这一点的信息,这可能吗?或者我是否坚持这样做?
该库是一个 .net 标准 2.0 库,我之前用 .net classic 做过这个,输出文件夹总是包含所有必需的库,即使是来自 NuGet 包的库,但带有 . net 标准有些东西发生了变化,现在只复制引用项目中的库,没有引用的 NuGet 包被复制到输出文件夹。
干杯。
在撰写本文时,它看起来像是设计使然,对此有一些大惊小怪和混乱,请参阅记录 issue on GitHub。
此外,在为引用项目 B 的项目 A 发布 NuGet 包时,
B 成为 A 中的 NuGet 依赖项; B 的程序集未包含在 A 的 NuGet 包中。
我通过发布我自己的 NuGet 包来处理它。
我只是不喜欢项目 B 有一个 NuGet 包,如果它只与使用相关的话 with/by 项目 A,因为它将单独出现在我的 NuGet 提要中。
尝试:
dotnet publish
应将所有依赖库复制到发布输出文件夹。
TLDR:将您的 Class 库项目转换为应用程序,发布应用程序,并将应用程序 DLL 用作库。
长:
我通过将带有许多外部依赖项的插件的完整构建部署到 Ubuntu 18.04 来测试这种方法,它 运行 完美。
创建一个控制台应用程序类型的新项目,而不是 Class 库。将所有库代码文件放入控制台应用程序并添加依赖项。删除您原来的 Class 库项目(您不再需要它)。最后,发布控制台应用程序。您将获得一个包含所有依赖项的 DLL。您可以像使用任何其他 DLL 一样使用此 DLL。
我建议在控制台应用程序项目的末尾命名为“Library”,并添加一个 README 来记录它并不是真正的应用程序,即使该项目被配置为构建为一个应用程序。
我创建了一个动态加载库并执行它的主要系统 class。 一切都很完美,我的问题是如何发布这个 DLL 及其所有依赖项。由于没有可执行项目引用它,我必须手动检索依赖项:尝试加载库,检查所需的 DLL,转到 NuGet 缓存文件夹,复制库,再试一次,检查它是否抱怨更多依赖项等等直到它拥有所有必需的库。
这是一个真正的痛苦,我还没有找到任何关于如何做到这一点的信息,这可能吗?或者我是否坚持这样做?
该库是一个 .net 标准 2.0 库,我之前用 .net classic 做过这个,输出文件夹总是包含所有必需的库,即使是来自 NuGet 包的库,但带有 . net 标准有些东西发生了变化,现在只复制引用项目中的库,没有引用的 NuGet 包被复制到输出文件夹。
干杯。
在撰写本文时,它看起来像是设计使然,对此有一些大惊小怪和混乱,请参阅记录 issue on GitHub。
此外,在为引用项目 B 的项目 A 发布 NuGet 包时,
B 成为 A 中的 NuGet 依赖项; B 的程序集未包含在 A 的 NuGet 包中。
我通过发布我自己的 NuGet 包来处理它。
我只是不喜欢项目 B 有一个 NuGet 包,如果它只与使用相关的话 with/by 项目 A,因为它将单独出现在我的 NuGet 提要中。
尝试:
dotnet publish
应将所有依赖库复制到发布输出文件夹。
TLDR:将您的 Class 库项目转换为应用程序,发布应用程序,并将应用程序 DLL 用作库。
长:
我通过将带有许多外部依赖项的插件的完整构建部署到 Ubuntu 18.04 来测试这种方法,它 运行 完美。
创建一个控制台应用程序类型的新项目,而不是 Class 库。将所有库代码文件放入控制台应用程序并添加依赖项。删除您原来的 Class 库项目(您不再需要它)。最后,发布控制台应用程序。您将获得一个包含所有依赖项的 DLL。您可以像使用任何其他 DLL 一样使用此 DLL。
我建议在控制台应用程序项目的末尾命名为“Library”,并添加一个 README 来记录它并不是真正的应用程序,即使该项目被配置为构建为一个应用程序。