繁体   English   中英

如何在 .NET 核心项目中制作解决方案级别 nuget package 文件

[英]How to make a solution level nuget package file in .NET core project

我有一个包含多个项目的解决方案,每个项目都有自己的 nuget package。 我想找到一种方法为整个解决方案制作一个 nuget 文件,以避免相同二进制文件的不同版本问题。

任何人以前都这样做过并且可以分享指针会有所帮助。

如果您已经安装了不同版本的 nuget 软件包,您可以使用package 管理器中的合并选项卡来合并它们。

这不会强制团队成员使用统一版本,但仍然有人可以安装另一个版本。 如果您有一个小团队,自动执行可能会有点过头了,您可以通过教育您的团队和在代码审查期间执行相同的版本。 如果您有一个大项目并且有多个团队在处理它,我强烈建议您编写一个测试或预/后构建步骤,它将扫描您的解决方案并使用相同版本的包强制所有项目。

我不知道是否有任何现有的包/工具,这就是为什么请在下面找到几个可能的解决方案:

通过解析文件查找包

只需在csproj文件中搜索PackageReference元素并解析package.config如果存在)以查找所有引用的项目,然后确保没有不同的版本。

这是一个简单的选项,但由于传递依赖关系,您仍然可能会得到 dll 地狱。 例如:您将Newtonsoft.Json 12.0.0安装到您的解决方案中,然后将Hangfire.PostgreSql 1.6.3添加到某个项目中,该项目会传递Newtonsoft.Json 10.0.1

dotnet 列表 package 报告

您可以使用dotnet list package生成包含所有已安装包的报告。 如果您使用--include-transitive标志,那么您可以识别传递依赖项的潜在不兼容版本。 Unfortunately there is no much you can do in this case: either using another version of the root package which uses the same package that you are using in your solution or just relax and rely on BindingRedirect s which are automatically generated during package installation.

暂无
暂无

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

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