【发布时间】:2019-12-06 11:04:45
【问题描述】:
我正在开发一个包含几个不同项目的 asp.net 核心解决方案,每个项目都使用某个版本库的第 3 方 NuGet 包。这些版本,例如1.0.0 和 2.0.0 有重大变化。另外,这个库是由另一个项目组开发的,不受我的影响。 因此,将来会有与另一个不兼容的版本,我的限制是在特定项目中使用一个确切的版本。
以下是解决方案的简要概述:
- 我的解决方案
- Web 应用程序
- 项目1
- 自定义库 (v1.0.0)
- 项目2
- 自定义库 (v2.0.0)
在 Visual Studio 中进行开发期间,一切都很好,我可以在每个项目中使用我的版本库的各个方法。如果我最终发布了我的应用程序,输出文件夹中只有一个 CustomLibrary.dll 版本为 v2.0.0。
我对此有点困惑。这个 dll 是否同时包含两个版本,并且 dotnet 可以在运行时解析它们吗? 如果不是这种情况,应用程序将在运行时失败,因为 v1.0.0 的方法和输出可能与 v2.0.0 完全不同。
(在 .Net 框架中我可以做 this,但它似乎不适用于 .Net Core)
是否有部署同一强名称库的不同版本的解决方案? 我想应该可以部署特定版本的 NuGet 包?
如果您能帮助我,我将不胜感激。
【问题讨论】:
-
如果我是你,我将升级 project1 依赖项以匹配 project2 版本,然后在两者上使用一个依赖项。这需要一些努力和时间,但这是一次性的工作,这将使未来的事情变得更加顺利。由于维护相同依赖项的不同版本将来会很麻烦,而且您最终可能会将它们都升级到最新版本或更糟,将它们转换为不同的依赖项!。
-
如果您绝对不想更新您的解决方案,并且 nuget 包是具有 MIT 许可证的开源项目,那么我建议您从旧版本中克隆 repo 并使用不同的名字。
-
外部库是其他项目组开发的,不能影响。因此,即使在未来,也会有与另一个版本不兼容的版本,并且我有限制在特定项目中使用一个确切的版本。
-
@Bizhan 这个问题与 dotnet core 有关,因为 .NET Framework 以另一种方式处理这个问题。
-
在 Publish 文件夹中,您将只有更高版本。
标签: c# .net-core deployment nuget