[英]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 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.