簡體   English   中英

dotnet 恢復警告 NU1701

[英]dotnet restore warning NU1701

我在 C# 中使用 .NET Core,當我執行dotnet restore ,出現以下錯誤:

PS C:\\workspace\\Arbitrator> dotnet restore

C:\\workspace\\Arbitrator\\Arbitrator.csproj:警告 NU1701:使用“.NETFramework,Version=v4.6.1”而不是項目目標框架“.NETCoreApp,Version=v2.0”還原包“PusherClient 0.5.0”。 這可能會導致兼容性問題。 C:\\workspace\\Arbitrator\\Arbitrator.csproj:警告 NU1701:使用“.NETFramework,Version=v4.6.1”而不是項目目標框架“.NETCoreApp,Version=v2.0”還原包“WebSocket4Net 0.14.1”。 這可能會導致兼容性問題。

這個有問題的包是PusherClient 我只是按照 NuGet 文檔來導入它。 我該如何解決這個警告?

您不必等到PusherClient升級到 .NET Core。

從 .NET Core 引用 .NET Framework 4.6.1(及以下)是自 .NET Core/Standard 2.0 preview 2 / VS 2017 preview 15.3 以來可用的一項新功能,據 MS 稱,它可以被認為是一項有助於隨着時間的推移,您將 .NET Framework 代碼遷移到 .NET Standard 或 .NET Core

  1. 你可以抑制這個警告

    • 對於特定的包
     <PackageReference Include="Contoso.Base.API" Version="1.0.3"> <NoWarn>NU1701</NoWarn> </PackageReference>
    • 所有包裹
     <NoWarn>NU1701</NoWarn>

    有關從 GUI 執行此操作的方法,請參閱 NuGet wiki 中的方案 2 和 3

    但是,當您調用 .NET Core 不支持的 API(如 WPF 中的某些內容)時,您的應用程序可能會在運行時失敗。 失敗的另一個原因可能是PusherClient可能使用的本機 API。 所以你應該廣泛地測試它。 但在大多數情況下,它只能在支持 .NET Core 的所有平台上運行(例如,我測試了一個具有MathNet.Numerics依賴項的應用程序,它在 Linux 上運行,即使MathNet.Numerics也是 .NET Framework 4.6.1 )。

  2. 如果您不需要跨平台的應用程序,只需將以下內容添加到您的 csproj 文件中,將其目標框架更改為 .NET 4.6.1:

     <TargetFramework>net461</TargetFramework>

作為旁注,不要這樣做:

<PropertyGroup>
  <NoWarn>NU1701</NoWarn>
</PropertyGroup>

這樣做會破壞從其他地方獲取的任何其他 NoWarn 設置,例如從 directory.build.prop 文件中獲取。 相反,請執行以下操作:

<PropertyGroup>
  <NoWarn>$(NoWarn);NU1701</NoWarn>
</PropertyGroup>

這樣,所有全局設置都會被保留。

對於 .NET Core 1.x:

你需要告訴 PusherClient 的人准備好他們的項目 .NET-Core。

正如 Yair 所指出的,GitHub 上有一個圍繞這個主題的未決問題: github.com/NuGet/Home/issues/5740

如果使用回退框架版本解決的依賴項是可傳遞的,則禁止引用包的警告將不起作用。

例如,Microsoft.TeamFoundationServer.ExtendedClient 依賴於與 .NET Core 3.0 不兼容的 Microsoft.AspNet.WebApi.Core,從而導致警告。 將 NoWarn 添加到 Microsoft.TeamFoundationServer.ExtendedClient 將不起作用。

作為一種解決方法(您可以在此處查看我的帖子: GitHub 問題上的解決方法),您可以直接引用傳遞依賴項並對該包使用 NoWarn。

<ItemGroup>
    <PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" NoWarn="NU1701" />
    <PackageReference Include="Microsoft.TeamFoundationServer.ExtendedClient" Version="16.153.0"/>
</ItemGroup>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM