1. ホーム
  2. c#

[解決済み] dotnetリストア警告 NU1701

2023-07-11 09:31:23

質問

C#で.NET Coreを使用しているのですが、.NET Coreを起動する際に dotnet restore を実行すると、以下のようなエラーになりました。

PS C:\workspaceArbitrator> dotnet restore

C:\workspaceArbitrator.csproj : warning NU1701: パッケージ 'PusherClient 0.5.0' は、プロジェクトのターゲットフレームワーク '.NETCoreApp,Version=v2.0' の代わりに '.NETFramework,Version=v4.6.1' を使用してリストアされました。このため、互換性に問題がある可能性があります。 C:\workspace⇄Arbitrator.csproj : 警告 NU1701: パッケージ 'WebSocket4Net 0.14.1' は、プロジェクトのターゲットフレームワーク '.NETCoreApp,Version=v2.0' の代わりに '.NETFramework,Version=v4.6.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を参照してください。 .

    しかし、サポートされていないAPI(WPFのものなど)を呼び出したときに、アプリケーションがランタイムに失敗する可能性があります。 しかし、.NET CoreがサポートしていないAPI (WPFのものなど) を呼び出すと、実行時にアプリケーションが失敗する可能性があります。 を呼び出したときに、アプリケーションの実行が失敗することがあります。失敗のもう1つの理由は、.NET Coreで使用される可能性のあるネイティブAPIです。 によって使用される可能性がある PusherClient . そのため、広範囲に渡ってテストする必要があります。 しかし、ほとんどの場合、.NET Coreがサポートされているすべてのプラットフォームで動作するようになります。 がサポートされているすべてのプラットフォームで動作するだけです (たとえば、私がテストしたアプリケーションでは MathNet.Numerics 依存のアプリケーションをテストしたところ、Linux 上で が Linux で動作しました。 も .NET Framework 4.6.1 であるにもかかわらず、Linux 上で動作しました。)

  2. アプリがクロス プラットフォームである必要がない場合は、csproj ファイルに以下を追加することによって、ターゲット フレームワークを .NET 4.6.1 に変更するだけです。

     <TargetFramework>net461</TargetFramework>