Восстановление пакета NuGet не удалось для проекта PROJECT: невозможно найти версию 2.0.0 пакета "Microsoft.Net.Compilers"
Я использовал расширение GitHub Visual Studio 2015 для клонирования моего проекта на новый компьютер. Я пытаюсь восстановить пакеты, и я получаю сообщение об ошибке:
NuGet Package restore failed for project PROJECT: Unable to find version 2.0.0 of package 'Microsoft.Net.Compilers'
Я рассмотрел некоторые другие вопросы о подобных проблемах, но ни одно из этих решений пока не помогло мне.
Я попытался удалить папку с пакетами, снова открыв Visual Studios, а затем перестраивая. Это не разрешило это.
Я попытался вручную установить Microsoft.Net.Compilers в консоли диспетчера пакетов.
PM> Install-Package Microsoft.Net.Compilers
Я попытался удалить этот бит кода из файла csproj (это, похоже, сработало для некоторых):
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
Я попытался переустановить все пакеты с помощью
Update-Package –reinstall
До сих пор мне не удавалось решить проблему. Любая помощь приветствуется.
РЕДАКТИРОВАТЬ:
I tried the response below and received this error:
Install-Package : Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.
At line:1 char:16
+ Install-Package <<<< -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
+ CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetMissingPackages,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
Это также побудило меня восстановить пакеты. Когда я нажимаю восстановление, у меня такая же ошибка, как обычно.
Ответы
Ответ 1
На основании вашего сообщения об ошибке выглядит так, что вы ищете версию, которая больше не существует и не может определить, какой источник пакета вы выбрали. Я чувствую, что вы ищете версию 2.0.0, которая недоступна в репозитории nuget.org. Последний из них 2.0.0-rc, и он является кандидатом до релиза.
Попробуйте эту команду, если вы хотите получить последнюю версию
Install-Package -Id Microsoft.Net.Compilers -Version 2.0.0-rc -Source nuget.org
Если вам нужна последняя стабильная версия (1.3.2), попробуйте эту команду
Install-Package -Id Microsoft.Net.Compilers -Version 1.3.2 -Source nuget.org
ОБНОВЛЕНИЕ Если пакет по-прежнему не может быть установлен, то этот пакет может быть не синхронизирован между пакетами.config, packages/folder и.csproj file
Чтобы выполнить ручную очистку, выполните следующие действия
- Закрыть визуальную студию.
- Откройте.csproj в блокноте или в текстовом редакторе и вручную удалите все записи, связанные с Microsoft.Net.Compilers
- Откройте файл pack.config в блокноте или в текстовом редакторе и удалите запись для пакета Microsoft.Net.Compilers
- Перейдите в папку/папку в проводнике Windows и удалите папку Microsoft.Net.Compilers
- Теперь запустите визуальную студию и откройте решение.
- Теперь попробуйте снова установить пакет.
Некоторые из записей, которые вы, возможно, должны удалить из.csproj, как часть шага 2, - это
<Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
<NuGetPackageImportStamp></NuGetPackageImportStamp>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props'))" />
</Target>
Ответ 2
У меня была похожая ошибка после чистой установки Visual Studio 2017, и мне пришлось сделать следующее, чтобы она автоматически восстановила отсутствующие пакеты NuGet. В VS выберите "Инструменты> Параметры> Диспетчер пакетов NuGet> Источники пакетов" и убедитесь, что соответствующие источники пакетов отображаются и проверены.
Смотри ниже. Добавление источника пакетов nuget.org в верхней части указывает VS, чтобы он-лайн загружал пакеты из NuGet, если он не может найти подходящие версии на локальном компьютере.
Ответ 3
Это может быть немного поздно, но это все равно поможет кому-то. Когда вы пытаетесь проверить свой код и получаете такую ошибку, это означает, что пакет был установлен и удален снова, поэтому вам просто нужно найти пакет под включенными изменениями, в моем примере я использую TFS, и исключить или отменить. это решит проблему.
Ответ 4
Я переместил свой проект относительно того, где пакеты NuGet изначально хранились в моем проекте, и я в конечном итоге обнаружил, что это вызывает проблему с этим файлом .csproj
, которая может быть не сразу очевидна.
После перемещения и после восстановления пакета NuGet в цель EnsureNuGetPackageBuildImports
моего файла .csproj
была добавлена вторая запись, отражающая относительный путь нового местоположения.
Теперь цель выглядела следующим образом:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props'))" />
</Target>
Обратите внимание на две записи с разными путями к месту расположения packages
. Это означало, что один из них (первый, который был до того, как я переместил проект) всегда будет терпеть неудачу.
Исправление было достаточно простым. Я только что удалил первый узел Error
из Target
.
Я также обнаружил, что аналогичная проблема была в начальных узлах Import
корневого узла Project
.
У меня было следующее:
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.2.10.0\build\Microsoft.Net.Compilers.props')" />
И снова исправление было просто для удаления ошибочного узла Import
.
Ответ 5
Я знаю, почему, это в папке C:\Program Files (x86)\Microsoft SDKs\NuGetPackages. Есть пакеты, которые вы установили ранее.
Ответ 6
Такая ошибка также может возникать при использовании старой версии nuget.exe. Например, если вы загружаете agent.zip из TFS 2015, внутри него есть версия 3.2.1:
\ Agent\Worker\Tools\nuget.exe
Эта версия может выдать ошибку "Невозможно найти версию" 3.7.1 "пакета" NUnit "." с решением, созданным с помощью VS 2015. (NUnit3TestAdapter.3.9.0, однако, не выдает ошибку)
Обновление nuget.exe до 5.2 решает проблему.