发布 Nuget 包时指定 PackageReference 的最佳实践是什么?
根据https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files,指定版本号相当于 >= 该版本。
例如,以下内容将引用 Newtonsoft.Json 版本 11.0.1 或更高版本以及 RestSharp 106.9.0 或更高版本。
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
<PackageReference Include="RestSharp" Version="106.9.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
如果另一个开发人员想要在他的项目中使用我的 Nuget 包,那么该开发人员可能也需要在他的项目中使用相同的包,并且他可能无法也不想使用我一直在使用的相同版本。因此,最佳实践是什么?我应该在发布时始终指定最低兼容版本,还是只更新我认为适合我的项目的包,而不用担心发布的版本号?
从消费者的角度来看,我会说,是的,您应该指定最低的兼容版本。这样,正如您所提到的,您就不会强制您的包的使用者必须升级例如他们的Newtonsoft.Json依赖项(如果他们碰巧直接依赖于该包的版本)11.0.0。如果由于某种原因您不允许11.0.0使用版本,那么您当然应该指定11.0.1.
例如,如果您知道Newtonsoft.Json版本11.0.1存在严重安全漏洞,则您可能需要强制执行已修补的新版本。但总的来说,我认为,作为软件包提供商,您有兴趣为了消费者而使您的软件包尽可能兼容。尽管如此,这并不意味着您不应该使包及其依赖项保持最新。
总是有一个权衡。您的库包参考版本可能会因您无法控制的事情而变得过时。例如,如果您的库没有要发布的新功能,但其中一个依赖库已更新,您可能不想更新 Nuget。也就是说,如果有一些重要的安全更新,您需要更新您的库。
有点不相关,但.NET Standard的旧建议之一可能会在您做出决定时派上用场。
选择目标 .NET Standard 版本时,请考虑以下权衡:
- 版本越高,您的库代码可用的 API 就越多。
- 版本越低,可以使用您的库的应用程序和库就越多。
就我个人而言,在使用 Nuget 包时,我尝试使用最新的依赖包,以确保我可以获得最新的功能,而不必担心安全漏洞。
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |