Netstandard1.x Пакеты Nuget не могут быть установлены для проектов netstandard1.x

После выполнения новой установки Windows 10 вместе с новейшими инструментами Visual Studio 2015, netcore и nuget - я больше не могу устанавливать пакеты Nuget в любые проекты .netstandard. Вот пример вывода:

Restoring packages for 'ClassLibrary1'.
Restoring packages for c:\users\zone1\documents\visual studio 2015\Projects\ClassLibrary1\ClassLibrary1\project.json...
Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
  - monoandroid10 (MonoAndroid,Version=v1.0)
  - monotouch10 (MonoTouch,Version=v1.0)
  - net45 (.NETFramework,Version=v4.5)
  - netcore50 (.NETCore,Version=v5.0)
  - netstandard1.0 (.NETStandard,Version=v1.0)
  - netstandard1.3 (.NETStandard,Version=v1.3)
  - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
  - win8 (Windows,Version=v8.0)
  - wp8 (WindowsPhone,Version=v8.0)
  - wpa81 (WindowsPhoneApp,Version=v8.1)
  - xamarinios10 (Xamarin.iOS,Version=v1.0)
  - xamarinmac20 (Xamarin.Mac,Version=v2.0)
  - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
  - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
One or more packages are incompatible with .NETStandard,Version=v1.3.
Package restore failed for 'ClassLibrary1'.

Я создал проект ClassLibrary1 как переносную библиотеку классов, изменил цель на netstandard1.3 и не смог установить пакеты Nuget, которые показывают поддержку для netstandard1.3. То же самое касается netstandard1.5 и других версий.

Я просто пытаюсь потянуть и создать источник MailKit (проект, который поддерживает .netstandard), чтобы проверить, что я не настраивал свой проект неправильно и я получение той же проблемы:

Errors in C:\Users\zone1\Repos\MailKit\MailKit\MailKit.CoreFX.xproj
    Package System.Net.NetworkInformation 4.1.0 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.Net.NetworkInformation 4.1.0 supports:
      - monoandroid10 (MonoAndroid,Version=v1.0)
      - monotouch10 (MonoTouch,Version=v1.0)
      - net45 (.NETFramework,Version=v4.5)
      - netcore50 (.NETCore,Version=v5.0)
      - netstandard1.0 (.NETStandard,Version=v1.0)
      - netstandard1.3 (.NETStandard,Version=v1.3)
      - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
      - win8 (Windows,Version=v8.0)
      - wp8 (WindowsPhone,Version=v8.0)
      - wpa81 (WindowsPhoneApp,Version=v8.1)
      - xamarinios10 (Xamarin.iOS,Version=v1.0)
      - xamarinmac20 (Xamarin.Mac,Version=v2.0)
      - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
      - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
    One or more packages are incompatible with .NETStandard,Version=v1.3.

Я разместил здесь несколько подробностей: https://github.com/NuGet/Home/issues/3433

Все это работало до того, как я переформатировал новую установку Windows. Я что-то упускаю?

Ответ 1

Получено рабочее решение благодаря подсказке @eddie-msft.

Загрузите последнюю версию командной строки nuget здесь https://dist.nuget.org/index.html (v3.5.0-rc1 во время публикации)

Затем запустите:

nuget.exe locals -clear all

Я убедился, что VS закрыт и удалил все существующие файлы project.lock.json. Теперь все работает так, как предполагалось.

Я обнаружил, что эта проблема возникает в любой системе со свежей установкой Windows/VS/tooling, поэтому, вероятно, ошибка с их установщиками.

Ответ 2

Похоже, что что-то пропущено в вашем инструменте, и сообщение об ошибке не всегда является самым ясным. Можете ли вы убедиться, что вы запустили обоих установщиков здесь:

Обновление Visual Studio 2015 3 (я предполагаю, что у вас есть это)

.NET Core 1.0.1 - VS 2015 Tooling Preview 2

Я действительно не думаю, что это проблема с файлом проекта, поскольку MailKit не подходит для вас, и я сомневаюсь, что вы сломали NuGet. Другой бит, который может дать вам хорошую информацию, если это не работает, - запустить

Dotnet restore

в каталоге проекта, чтобы увидеть, как donet обрабатывает его без Visual Studio.

Ответ 3

Для VS 2017 - Обновление 15.3

Вы можете обойти это, выполнив следующие

Отредактируйте файл .csproj для стандартной библиотеки .NET и добавьте эти строки

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
 <TargetFramework>netstandard1.4</TargetFramework>
 <PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.4' ">$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback>
 </PropertyGroup>



Other stuff here
 </Project>

PackageTargetFallback позволит вам использовать совместимые пакеты, которые старше.

https://www.cameronmoten.com/2017/08/19/fixing-xamarin-with-net-standard-in-visual-studio-2017-v-15-3/