Восстановление пакета 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

Чтобы выполнить ручную очистку, выполните следующие действия

  1. Закрыть визуальную студию.
  2. Откройте.csproj в блокноте или в текстовом редакторе и вручную удалите все записи, связанные с Microsoft.Net.Compilers
  3. Откройте файл pack.config в блокноте или в текстовом редакторе и удалите запись для пакета Microsoft.Net.Compilers
  4. Перейдите в папку/папку в проводнике Windows и удалите папку Microsoft.Net.Compilers
  5. Теперь запустите визуальную студию и откройте решение.
  6. Теперь попробуйте снова установить пакет.

Некоторые из записей, которые вы, возможно, должны удалить из.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, если он не может найти подходящие версии на локальном компьютере.

enter image description here

Ответ 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 решает проблему.