Я пытаюсь обновить проект .net core 2.1 до последней версии пакетов Nuget, таких как Microsoft.Extensions.DependencyInjection.Abstractions 2.1.1.
Однако это заблокировано ссылкой на пакет Microsoft.NETCore.App, когда я пытаюсь обновить «мета» пакет Microsoft.NETCore.App, я вижу «Заблокировано проектом», похожее на этот вопрос. Это было решено путем перехода на более новую версию SDK, однако это не вариант здесь ... потому что нет более новой версии SDK (пока?).
Я также видел этот ответ для обновления определенных пакетов путем редактирования файла .csproj вручную со ссылкой на пакет обновления, но я сомневаюсь, что это предполагаемый способ сделать это.
Как должен я это делаю? На данный момент я просто вручную включил ссылки на пакеты, которые я действительно использую, и отбросил метапакет, но я не могу представить, что это предполагаемый способ сделать это.
Релевантно: twitter.com/DamianEdwards/status/1009137684898435073 Проект заблокирован целиком по дизайну. Пакеты Asp.NET нуждаются в соответствующем SDK для правильной работы. Обновить их oob не вариант.
Перед тем как это сделать, вы можете прочитать информацию в этом> github.com/aspnet/AspNetCore/issues/9097#issuecomment-517922 943
... И раздел 4 из docs.microsoft.com/en-us/nuget/consume-packages/… (для некоторых пакетов кнопка «Обновить» отключена, и появляется сообщение о том, что на него «неявно ссылается SDK» (или «AutoReferenced»). Это сообщение указывает, что пакет является частью более крупного framework или SDK и не должны обновляться независимо ... Это относится к следующим часто используемым пакетам: Microsoft.AspNetCore.All Microsoft.AspNetCore.App Microsoft.NETCore.App NETStandard.Library)
Ваши комментарии могут быть полезны, но вы можете узнать дату публикации этого сообщения. Особенно год немного;)





У меня сработало редактирование моего файла .csproj и добавление следующей строки:
<PackageReference Include = "Microsoft.NetCore.App" Version = "2.1.1" />
Я уже несколько часов борюсь с проблемой отсутствия версии 2.1 для нового проекта. Решил попробовать воспользоваться этим методом. Не повезло. Вот ошибка: в ваш проект была включена ссылка на PackageReference для Microsoft.NETCore.App. На этот пакет неявно ссылается .NET SDK, и вам обычно не нужно ссылаться на него из вашего проекта. Для получения дополнительной информации см. aka.ms/sdkimplicitrefs TipShare C: \ Program Files \ dotnet \ sdk \ 2.1.201 \ Sdks \ Microsoft.NET.Sdk \ build \ Micros oft.NET.Sdk.DefaultI tems.targets 198 Я пробовал это.
Убедитесь, что у вас установлена среда выполнения 2.1.1 в дополнение к SDK. Запустите dotnet --info, и вы должны увидеть Microsoft.NETCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Если у вас установлена среда выполнения 2.1.1, это работает, и, насколько мне известно, это единственный способ заставить ее работать (сегодня). Люди должны проверить информацию перед голосованием против.
Я согласен, это работает и (или действительно должно быть) требуется в дополнение к ответу Николая выше ...
И не забывайте, что в .net 2.1 версия начальной загрузки - 3.7, а в .net 2.2 - версия начальной загрузки 4.3.
Microsoft не рекомендует явно указывать Version. Глянь сюда
Легкий. Я искал решение для этого раньше, и все, что мне нужно было сделать, это просто добавить это в затронутые проекты.
<PropertyGroup>
<RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
</PropertyGroup>
Дополнительно для .NET Core 3 и выше,
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
Также был опубликован ответ Патрик ниже, в котором указывалось, что для некоторых проектов требуется пакет NuGet для приложений .NET Core. После .NET Core 3 вам это больше не понадобится.
Это сработало для меня, однако заметил, что как только вы создаете новый проект, он не содержит упомянутого кода конфигурации. Таким образом, все еще ссылается на библиотеку 2.1.0 вместо 2.1.1. Это ошибка Visual Studio, поскольку она предназначена для последней установленной SDK?
@ Megrez7 Я на самом деле столкнулся с этой проблемой .. Я сообщу вам, если у меня будет какое-то подтверждение
У меня установлен SDK 2.1.302, и хотя это «принудительно» приводит пакеты к указанной версии, мне это кажется ошибкой, поскольку проекты должны быть нацелены на версию установленного SDK (как в действительности говорится в NuGet!?!) но этого явно не происходит
И не забывайте, что в .net 2.1 версия начальной загрузки - 3.7, а в .net 2.2 - версия начальной загрузки 4.3.
Это исправило это для меня с консолидацией с 2.2.0 на 2.2.3.
Перед тем, как это сделать, вы можете прочитать информацию в этом> github.com/aspnet/AspNetCore/issues/9097#issuecomment-517922 943
Как сказал @Simon_Weaver, это происходит, когда версия не указана и 2.1.301 SDK отсутствует в системе
По крайней мере, для меня это не так, у меня установлен SDK 2.1.302, и при создании новых проектов они работают нормально, а в nuget Microsoft.NetCore.App говорит, что 2.1.2 - однако в существующих проектах, созданных до установки 2.1.302 У меня такая проблема.
Каждая версия пакета соответствует своей версии SDK. 2.1.0 -> 2.1.300 2.1.1 -> 2.1.301 2.1.2 -> 2.1.302
У меня был установлен только Microsoft.NETCore.App 2.1.1, и я не мог обновить его до Microsoft.NETCore.App 2.1.2 в окне Manage NuGet Packages..., потому что он показал "Заблокировано проектом":
На изображении выше видно, что я уже использую последнюю версию, потому что я сделал следующее ...
1 - загрузите последнюю версию (на данный момент v2.1.302) Пакет SDK для .NET Core здесь:
https://www.microsoft.com/net/download
2 - установите его и выполните следующую команду в Visual Studio Package Manager Console или в Windows PowerShell. Он должен показать следующее:
PM> dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.1.302
Commit: 9048955601
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17134
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.302\
Host (useful for support):
Version: 2.1.2
Commit: 811c3ce6c0
.NET Core SDKs installed:
1.0.0-rc4-004771 [C:\Program Files\dotnet\sdk]
1.0.0 [C:\Program Files\dotnet\sdk]
1.0.3 [C:\Program Files\dotnet\sdk]
1.0.4 [C:\Program Files\dotnet\sdk]
1.1.0 [C:\Program Files\dotnet\sdk]
2.0.2 [C:\Program Files\dotnet\sdk]
2.1.2 [C:\Program Files\dotnet\sdk]
2.1.4 [C:\Program Files\dotnet\sdk]
2.1.100 [C:\Program Files\dotnet\sdk]
2.1.101 [C:\Program Files\dotnet\sdk]
2.1.104 [C:\Program Files\dotnet\sdk]
2.1.105 [C:\Program Files\dotnet\sdk]
2.1.200 [C:\Program Files\dotnet\sdk]
2.1.201 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.300-preview2-008533 [C:\Program Files\dotnet\sdk]
2.1.300-rc1-008673 [C:\Program Files\dotnet\sdk]
2.1.300 [C:\Program Files\dotnet\sdk]
2.1.301 [C:\Program Files\dotnet\sdk]
2.1.302 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.0-preview2-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.0-rc1-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.0-preview2-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.0-rc1-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.0-preview2-26406-04 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.0-rc1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
PM>
Это первая часть, вторая - добавление версии в файл csproj.
И не забывайте, что в .net 2.1 версия начальной загрузки - 3.7, а в .net 2.2 - версия начальной загрузки 4.3.
В моем случае это было вызвано отсутствием атрибута Version на Microsoft.AspNetCore.App.
По какой-то причине при создании проекта WebApi ссылка на пакет выглядела так:
<PackageReference Include = "Microsoft.AspNetCore.App" />
Добавление отсутствующего атрибута решило все проблемы с обновлениями и сборками на сервере сборки.
<PackageReference Include = "Microsoft.AspNetCore.App" Version = "2.1.1" />
Я не уверен, что это решение верный. Видимо, можно не устанавливать версию и просто установить последний SDK: stackoverflow.com/a/50977058/161640
@Isaac Я пробовал разные решения, включая установку SDK и Runtime вручную, но на самом деле ничего не работало, кроме установки явной версии AspNetCore.App. Обратите внимание, что это AspNetCore, а не NetCore. Кроме того, это могло быть связано с инструментами - с тех пор в VS 2017 было несколько обновлений.
В моем случае ответ @ Patrick правильный. По крайней мере, для VS 2017 (15.8.9) с установленным файлом SDK «dotnet-sdk-2.1.403-win-x64.exe».
Симптомы: При создании нового веб-проекта для версии Aspnetcore.App устанавливается значение 2.1, даже если установлена последняя версия SDK. Попытка изменить версию через диспетчер NuGet отвечает сообщением «проект заблокирован».
Разрешение: Добавьте Version = "2.1" к ссылке в CSPROJ следующим образом:
<PackageReference Include = "Microsoft.AspNetCore.App" Version = "2.1" />
После сохранения / повторного открытия диспетчер NuGet позволит выбрать другие версии SDK. Обратите внимание, что добавление Version = "2.1.5" напрямую и затем сохранение файла CSProj должно запускать обновление / восстановление автоматически.
Спасибо @Patrick
Для меня у меня дважды была следующая строка в файле csproj
<PackageReference Include = "Microsoft.AspNetCore.StaticFiles " Version = "2.2.0" />
Простое удаление дубликата решило проблему
Целевая платформа - netcoreapp2.0, netcoreapp2.1, netcoreapp2.2, но здесь мы обсуждаем версию исправления, поэтому ваше предложение не применимо для решения.
Возможный дубликат Выпуск Netcore 2.1.1 приводит к тому, что приложение не запускается