繁体   English   中英

发布 Nuget 包时有关 PackageReference 版本的最佳实践?

[英]Best practice regarding PackageReference version when publishing Nuget packages?

发布 Nuget 包时指定 PackageReference 的最佳做法是什么?

根据https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files ,指定版本号相当于 >= 该版本。

例如,以下将引用 11.0.1 或更高版本的 Newtonsoft.Json 和 106.9.0 或更高版本的 RestSharp。

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
    <PackageReference Include="RestSharp" Version="106.9.0" />
  </ItemGroup>

如果另一个开发人员想在他的项目中使用我的 Nuget package,那么同一个开发人员可能在他的项目中也需要这些相同的包,他可能无法也不想使用我一直在使用的相同版本。 因此,最佳实践是什么? 我应该在发布时始终指定最低兼容版本,还是只更新我认为适合我的项目的包而不担心发布的版本号?

总是有一个权衡。 您的库 package 参考版本可能会因您无法控制的事情而过时。 例如,如果您没有要为您的库发布的新功能,但其中一个依赖库已更新,您可能不想更新您的 Nuget。 也就是说,如果有一些重要的安全更新需要您更新您的库。

.NET 标准的旧建议之一可能有点不相关,但可能会派上用场,让您做出决定。

在选择 .NET 标准版本作为目标时,请考虑以下权衡:

  • 版本越高,可用于库代码的 API 就越多。
  • 版本越低,可以使用您的库的应用程序和库就越多。

个人而言,在使用 Nuget 包时,我尝试使用最新的依赖包,以确保我可以获得最新的功能而不必担心安全漏洞。

从消费者的角度来说,我会说,是的,您应该指定最低兼容版本。 这样,正如您所提到的,您不会强制 package 的消费者必须升级他们的Newtonsoft.Json依赖项,如果他们碰巧直接依赖于该软件包的版本11.0.0 如果由于某种原因您不允许使用11.0.0版本,那么您当然应该指定11.0.1

例如,如果您知道Newtonsoft.Json版本11.0.1存在严重的安全漏洞,您可能希望在已修补的新版本中实施。 但总的来说,我认为,作为 package 供应商,为了消费者的利益,您有兴趣让您的 package 尽可能兼容。 虽然,这并不意味着您不应该让 package 与它的依赖关系保持最新。

暂无
暂无

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

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