簡體   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