I am using .NET Core with C#, and when I did dotnet restore
, it gave the following error:
PS C:\workspace\Arbitrator> dotnet restore C:\workspace\Arbitrator\Arbitrator.csproj : warning NU1701: Package 'PusherClient 0.5.0' was restored using '.NETFramework,Version=v4.6.1' instead the project target framework '.NETCoreApp,Version=v2.0'. This may cause compatibility problems. C:\workspace\Arbitrator\Arbitrator.csproj : warning NU1701: Package 'WebSocket4Net 0.14.1' was restored using '.NETFramework,Version=v4.6.1' instead the project target framework '.NETCoreApp,Version=v2.0'. This may cause compatibility problems.
This package in problem is PusherClient. I just followed the NuGet documents to import it. How can I fix this warning?
You don't necessarily have to wait until PusherClient is upgraded for .NET Core.
Referencing .NET Framework 4.6.1 (and below) from .NET Core is a new feature available since .NET Core/Standard 2.0 preview 2 / VS 2017 preview 15.3, and according to MS, it can be thought of as a feature that helps you migrate .NET Framework code to .NET Standard or .NET Core over time.
You can just suppress this warning for a specific package
As a side note, don't do this:
<PropertyGroup>
<NoWarn>NU1701</NoWarn>
</PropertyGroup>
Doing that will break any other NoWarn settings being picked up elsewhere, such as from a directory.build.prop file. Instead, do this:
<PropertyGroup>
<NoWarn>$(NoWarn);NU1701</NoWarn>
</PropertyGroup>
That way, any global settings are preserved.
<PackageReference>
though, shouldn't it?
For .NET Core 1.x:
You need to tell the guys from PusherClient to make their project .NET-Core ready.
As Yair pointed out, there is an open issue around this subject on GitHub: github.com/NuGet/Home/issues/5740.
Where the dependency being resolved with a fallback framework version is transitive, suppressing the warning for the referenced package will not work.
For example, Microsoft.TeamFoundationServer.ExtendedClient is dependent on Microsoft.AspNet.WebApi.Core which isn't compatible with .NET Core 3.0, resulting in the warning. Adding NoWarn to Microsoft.TeamFoundationServer.ExtendedClient won't work.
As a workaround (You can see my post here: Workaround On GitHub Issue), you can directly reference the transitive dependency and use NoWarn against that package.
<ItemGroup>
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" NoWarn="NU1701" />
<PackageReference Include="Microsoft.TeamFoundationServer.ExtendedClient" Version="16.153.0"/>
</ItemGroup>
Success story sharing
PackageReference
in the.csproj
file. I did find an open issue on this very subject: github.com/NuGet/Home/issues/5740 . Cast your vote :)