it-roy-ru.com

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

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

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

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

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

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

26
Bryan

Сначала я бы проверил, есть ли в вашем проекте 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.

21
Matt Ward

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

Оказывается, что пути к пакетам являются относительными из файлов 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'))" />

Опять же, обратите внимание на двойное ".. \".

26
Kevin Candlert

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

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

Если вы используете 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
Natasha Voloshyna

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

0
Ravimaran

Зачем вам нужны манипуляции с файлами 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.Снова постройте свой проект.

0
andreyfromnn