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/