分享方式:


NuGet 警告 NU5130

nuspec 和 lib/ref 資料夾相依性群組中宣告的一些目標架構具有相容的相符專案,但與其他位置的不完全相符專案。 除非刻意,否則請參閱下列動作清單:

  • 新增的相依性群組。NETFramework4.7.2 至 nuspec

問題

套件lib/<tfm>/中的 或 ref/<tfm>/ 目錄包含警告訊息中指定的目標 Framework Moniker (TFM) 至少一個檔案。 不過,檔案中 nuspec 沒有此 TFM 的相依性群組。 這可能會導致套件取用者認為套件與 TFM 不相容。 如果指定之 TFM 的元件與相依性群組中定義的相容 TFM 具有不同的相依性,則使用封裝的專案可能會遇到運行時失敗。

解決方案

  • 在專案上執行 NuGet 的套件目標

可能的話,請使用 NuGet 的 MSBuild 套件目標,因為它會自動比對來自專案目標架構之相依性群組的元件TFM。 請注意,您的項目必須 PackageReference 用於自己的 NuGet 相依性。 如果您的專案使用 packages.config,則需要使用 nuget.exe packnuspec 檔案。

  • 手動編輯 nuspec 檔案

如果您使用自定義nuspec檔案,則即使相依性與下一個相容的 TFM 相同,還是建議存在或ref/元件的每個 TFM lib/ 都應該有相符的相依性群組。 例如,如果封裝包含 netstandard1.0netstandard2.0 元件,而且兩者的相依性都相同,則建議這兩個 TFM 都列為具有重複相依性專案的相依性群組。

請注意,元件路徑中使用的 TFM 識別符會使用與相依性群組中使用的 TFM 識別符不同的格式。 警告訊息會指定要在相依性群組中使用的正確名稱。 如果您的套件沒有該目標架構的任何相依性,請使用空的群組。 例如:

<package>
  <metadata>
    ...
    <dependencies>
      <group targetFramework=".NETFramework4.7.2" />
    </dependencies>
  </metadata>
  ...
<package>
  • lib/拿掉或 ref/ 檔案

如果您不希望套件與回報的 TFM 相容,請修改您的專案,讓該 TFM 的套件中沒有 lib/<tfm>/ref/<tfm>/ 檔案。 例如,如果警告指出將的相依性群組 .NETFramework4.7.2 新增至 nuspec,則從套件中移除任何 lib/net472/*ref/net472/* 檔案。