Подтвердить что ты не робот

Предупреждение о восстановлении dotnet NU1701

Я использую .NETCore с С#, и когда я сделал dotnet restore, он дал следующую ошибку:

PS C:\workspace\Arbitrator > восстановление dotnet

C:\workspace\Arbitrator\Arbitrator.csproj: warning NU1701: Пакет 'PusherClient 0.5.0' был восстановлен с использованием ".NETFramework, Version = v4.6.1" вместо целевой целевой платформы .NETCoreApp, Version = v2. 0'. Это может привести к проблемам совместимости. C:\workspace\Arbitrator\Arbitrator.csproj: warning NU1701: пакет 'WebSocket4Net 0.14.1' был восстановлен с использованием ".NETFramework, Version = v4.6.1" вместо целевой целевой платформы .NETCoreApp, Version = v2.0. Это может привести к проблемам с совместимостью.

Этот пакет в проблеме PusherClient, я только что выполнил документы самородка, чтобы импортировать его, как я могу исправить это предупреждение?

4b9b3361

Ответ 1

Вам не обязательно ждать, пока PusherClient обновится до .NET Core.

Ссылка на .NET Framework 4.6.1 (и ниже) из .NET Core - это новая функция, доступная после .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>
    

    Посмотрите сценарии 2 и 3 в NuGet wiki для способов сделать это из GUI.

    Тем не менее, возможно, что ваше приложение может не работать во время выполнения, когда вы вызываете API (например, что-то из WPF), которое не поддерживается .NET Core. Другой причиной сбоя могут быть собственные API, которые, возможно, использует PusherClient. Таким образом, вы должны тщательно проверить это. Но в большинстве случаев он будет работать только на всех платформах, где поддерживается .NET Core (например, я протестировал приложение с зависимостью MathNet.Numerics, и оно работало в Linux, хотя MathNet.Numerics также является .NET Framework 4.6.1),

  2. Если вам не нужно, чтобы ваше приложение было кросс-платформенным, просто измените его целевую среду на .NET 4.6.1, добавив в файл csproj следующее:

    <TargetFramework>net461</TargetFramework>
    

Ответ 2

Для .NET Core 1.x:

Вам нужно сказать ребятам из PusherClient, чтобы они подготовили свой проект .NET-Core.

Ответ 3

Как примечание стороны, не делайте этого:

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

Это нарушит любые другие настройки NoWarn, выбранные в другом месте, например, из файла directory.build.prop. Вместо этого сделайте это:

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

Таким образом, любые глобальные настройки сохраняются.