Подтвердить что ты не робот

Ошибка сборки. Этот проект ссылается на NuGet

Когда я пытаюсь построить свое решение, я получаю следующее сообщение об ошибке:

Код серьезности Описание Ошибка состояния подавления строки файла проекта Этот проект ссылается на пакеты NuGet, которые отсутствуют на этом компьютере. Используйте NuGet Package Restore, чтобы загрузить их. Для получения дополнительной информации см. Http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствующий файл:..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props. MusicKarma C:\Users\Bryan\Documents\Visual Studio 2015\Проекты\MusicKarma\MusicKarma.csproj 268

Когда я просматриваю папку "Мои пакеты", я могу найти файл с именем Microsoft.Net.Compilers.props

Я пытался использовать Nuget Restore, но он все время говорит, что у меня есть все пакеты.

Это происходит, когда я переношу этот проект из TFS на один из моих компьютеров.

4b9b3361

Ответ 1

Сначала я бы проверил, имеет ли ваш проект MusicKarma Microsoft.Net.Compilers в файле packages.config. Если нет, вы можете удалить все, что связано с этим пакетом NuGet, из вашего MusicKarma.csproj.

Если вы используете пакет NuGet Microsoft.Net.Compilers, то я предполагаю, что путь неверен. Если посмотреть на имя каталога в сообщении об ошибке, я бы предположил, что файл решения MusicKarma (.sln) находится в том же каталоге, что и MusicKarma.csproj. Если это так, то каталог пакетов, вероятно, неверен, поскольку по умолчанию каталог пакетов будет находиться внутри каталога решений. Поэтому я предполагаю, что ваш каталог пакетов:

C:\Users\Bryan\Documents\Visual Studio 2015\Projects\MusicKarma\packages

Пока файл MusicKarma.csproj ищет файл реквизита в папке

C:\Users\Bryan\Documents\Visual Studio 2015\Projects\packages\Microsoft.Net.Compilers.1.1.1\build

Итак, если это так, вы можете исправить проблему, отредактировав путь в файле MusicKarma.csproj или переустановив пакет NuGet.

Ответ 2

Эта проблема появилась для меня, когда я создавал папки в файловой системе (не в моем решении) и перемещал некоторые проекты.

Оказывается, что пути к пакетам являются относительными из файлов csproj. Поэтому мне пришлось изменить "HintPath" моих ссылок:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
    <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
    <Private>True</Private>
</Reference>

Для того, чтобы:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
    <HintPath>..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
    <Private>True</Private>
</Reference>

Обратите внимание на двойное ".. \" в "HintPath".

Я также должен был изменить условия ошибки, например, мне пришлось изменить:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" />

Для того, чтобы:

<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.1.1\build\Microsoft.Net.Compilers.props'))" />

Снова обратите внимание на двойное ".. \".

Ответ 3

Быстрое решение, которое подействовало как на меня, так и на других:

Если вы используете VS 2015+, просто удалите следующие строки из файла .csproj вашего проекта:

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <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>

В VS 2015+ Solution Explorer:

  1. Щелкните правой кнопкой мыши имя проекта → Выгрузить проект
  2. Щелкните правой кнопкой мыши имя проекта → Изменить .csproj
  3. Удалите указанные выше строки из файла и сохраните
  4. Щелкните правой кнопкой мыши имя проекта → Обновить проект

Ответ 4

У меня также была эта ошибка Я взял эту часть кода из файла .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>

Ответ 5

Зачем вам нужны манипуляции с файлами packages.config или .csproj?
В ошибке явно сказано: Используйте NuGet Package Restore, чтобы загрузить их.
Используйте его соответственно этой инструкции: https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore-trou устранение неполадок:

Быстрое решение для пользователей Visual Studio
1. Выберите команду меню "Инструменты"> "Диспетчер пакетов NuGet"> "Настройки диспетчера пакетов".
2. Установите оба параметра в разделе "Восстановление пакета".
3. Выберите ОК.
4.Снова постройте свой проект.

Ответ 6

Это немного старый пост, но я недавно столкнулся с этим вопросом. Все, что я сделал, это удалил все пакеты nuget из папки пакетов и восстановил его. Мне удалось построить решение успешно. Надеюсь, кому-нибудь пригодится.

Ответ 7

Это для подсказок здесь. Моя проблема была решена путем удаления следующей строки из моего файла .csproj:

"Netstandard2.0"

Ответ 8

Это немного старый пост, но я столкнулся с этой проблемой. Я обнаружил, что значение $ (SolutionDir) в myproject.csproj установлено в другом месте проекта в решении. Если я скопирую папку nuget в другой проект, моё решение будет построено без проблем. Я не уверен, как это установить для ссылки на другой проект. Может кто-нибудь, пожалуйста, помогите мне выяснить, где эта ссылка на другой проект?