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 pack
和 nuspec
檔案。
- 手動編輯
nuspec
檔案
如果您使用自定義nuspec
檔案,則即使相依性與下一個相容的 TFM 相同,還是建議存在或ref/
元件的每個 TFM lib/
都應該有相符的相依性群組。 例如,如果封裝包含 netstandard1.0
和 netstandard2.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/*
檔案。