У меня есть приложение ядра dotnet, нацеленное на Microsoft.NETCore.App 1.1.2. Я создал тестовый проект для проверки этого проекта, но при сборке заметил это предупреждение:
Я открываю диспетчер пакетов NuGet и вижу, что предупреждение верное, тестируемый проект имеет другую версию Microsoft.NETCore.App:
Моя проблема в том, что Visual Studio не позволяет мне обновить эту версию, поэтому я не понимаю, как решить эту проблему: в идеале я бы просто щелкнул раскрывающийся список и выбрал правильную версию, но Visual Studio утверждает, что не может этого сделать из-за " дополнительные ограничения в проекте или packages.config ". Как мне обновить этот пакет? Какие «дополнительные ограничения» имеют в виду Visual Studio?
.net-core
visual-studio-2017
рикитанг
источник
источник
Ответы:
РЕДАКТИРОВАТЬ 2018 : Следуйте инструкциям по обновлению пакета, только если вы действительно знаете, что делаете. В большинстве случаев вам никогда не нужно обновлять этот пакет или другие пакеты, помеченные как «заблокированные проектом» - вручную. Приложение, зависящее от платформы, будет использовать последнюю доступную среду выполнения, а автономное приложение автоматически выполнит дополнительную сборку с использованием более новой версии этого пакета. (есть некоторые крайние случаи, когда вам нужно обновить этот пакет в тестовых проектах. В этом случае добавьте
<TargetLatestRuntimePatch>true</…>
и посмотрите эти вопросы и ответы для других вариантов)Неявный пакет ссылается на то, что
Microsoft.NET.Sdk
делает вывод, не могут быть обновлены через NuGet.Если вы перешли с project.json,
1.1.0
вероятно , проект со ссылкой содержитв файле csproj или в подобном элементе (если вы могли использовать диспетчер пакетов ранее для установки версии):
Удалите записи, подобные приведенным выше, и все пакеты будут ссылаться
1.1.2
(или на то, что установленный SDK считает последним) автоматически. Настоятельно рекомендуется установитьRuntimeFrameworkVersion
во всех проектах.источник
<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>
строку. VS по-прежнему не позволяет мне вручную изменить версию, но, по крайней мере, сейчас это правильная версия (она обновлена до 1.1.2, как вы и сказали)У меня была аналогичная проблема при попытке установить пакет Entityframework.Core в веб-приложение .NET Core 2. Чтобы решить эту проблему, я принудительно установил через консоль диспетчера пакетов:
(2.0.5 была самой последней версией на то время)
Надеюсь, это будет полезно. Мир.
источник
Для меня добавление
сделал трюк
источник
Краткий ответ
Добавьте явную версию в
Microsoft.AspNetCore.App
ссылку на пакет в файле .csproj.Длинный ответ
У меня был совершенно новый проект netcoreapp2.1. Следующее было в файле .csproj. Обратите внимание, что со
Microsoft.AspNetCore.App
ссылкой на пакет не было связано ни одной версии .Я добавил явную ссылку на
Microsoft.Extensions.Logging.Abstractions
пакет, чтобы устранить несоответствие зависимостей (ошибка сборки).Micorsoft.AspNetCore.App
требуется версия 2.1.0 этой зависимости, но другому пакету нужна версия 2.1.1. Мой файл .csproj теперь выглядел так.Это уменьшило ошибку сборки до предупреждения о том, что
Micorsoft.AspNetCore.App
требуется версияMicrosoft.Extensions.Logging.Abstractions
пакета 2.1.0, но версия 2.1.1, конечно же, была решена.Попытка обновить
Micorsoft.AspNetCore.App
до версии 2.1.1, чтобы исправить предупреждение, была заблокирована диспетчером пакетов, как упоминалось OP.Я обновил
Micorsoft.AspNetCore.App
ссылку на свой пакет, чтобы явно использовать версию 2.1.1, как это.Это устранило предупреждение сборки и разблокировало все версии
Microsoft.AspNetCore.App
в диспетчере пакетов. Я даже смог удалить явную ссылку на,Microsoft.Extensions.Logging.Abstractions
не возвращая исходную ошибку. Окончательный .csproj выглядел так, без проблем.источник
У меня была такая же проблема, и я думаю, проблема в упаковке.
Проблема была решена после того, как я точно указал версию.
Насколько я знаю, эта ошибка возникает, когда номер версии
источник
Другое возможное решение. в
csproj
файле обновите целевую платформу до версии, до которой вы хотите обновить. После внесения изменений, как показано ниже, пакеты можно обновить с помощью диспетчера пакетов NuGet решения.До:
После:
источник
Я решил это просто: щелкнув правой кнопкой мыши на Project (или ALT + Enter) -> Properties -> Application -> Target Framework (выберите .NET Core framework (в данном случае 1.1))
источник
Лучшая рекомендация - заново создать свои проекты после обновления SDK и среды выполнения, а затем оставить старый код и конфигурацию внутри новых проектов. В остальном вы будете тратить слишком много времени на бесполезные настройки и неизвестные конфигурации.
источник