VS 15.8.2 сломал инструменты сборки - отсутствует RuntimeIdentifier - PullRequest
0 голосов
/ 05 сентября 2018

Последнее обновление Windows нарушило всю цепочку сборки, и я немного растерялся из-за того, что его вызвало.

У меня есть унаследованный проект, который представляет собой решение VS 2017 года со значительным числом проектов (winform, пара веб-приложений, только некоторые Webapi).

Локально все работает отлично. Я могу просто построить их.

На сервере произошел сбой проекта, и ошибка:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5): Error : Your project file doesn't list 'win' as a "RuntimeIdentifier". You should add 'win' to the "RuntimeIdentifiers" property in your project file and then re-run NuGet restore.

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5): Error : Your project file doesn't list 'win' as a "RuntimeIdentifier". You should add 'win' to the "RuntimeIdentifiers" property in your project file and then re-run NuGet restore.

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5): Error : Your project file doesn't list 'win' as a "RuntimeIdentifier". You should add 'win' to the "RuntimeIdentifiers" property in your project file and then re-run NuGet restore.

Process 'msbuild.exe' exited with code '1'.

Я добавил

<RuntimeIdentifiers>win</RuntimeIdentifiers>

к ряду проектов. Без изменений. Я в растерянности, потому что сообщение об ошибке даже не говорит мне, какой проект.

Ответы [ 6 ]

0 голосов
/ 05 июня 2019

У меня похожий случай. Я пытаюсь создать решение с помощью msbuild, не устанавливая Visual Studio 2017, просто установите последнюю версию инструментов сборки vs 2017. Вот мои шаги:

  1. dotnet restore a.sln (В этом решении есть несколько проектов .Net Standard Library, остальные - проекты .NET 4.7.2).
  2. вызовите msbuild.exe, чтобы построить это решение.
  3. Я получил ошибку "отсутствует RuntimeIdentifier".

В файле вашего проекта «win» не указан как «RuntimeIdentifier». Вы должны добавить 'win' к свойству "RuntimeIdentifiers" в файле проекта, а затем повторно запустить восстановление NuGet.

Кажется, проблема в старой версии Nuget. Пожалуйста, обратитесь здесь . Наконец, я решил это с помощью пакетов восстановления с последней версией Nuget (v5.0.2). шаги:

  1. Удалить папки obj и bin
  2. nuget.exe restore a.sln
  3. вызов msbuild.exe
0 голосов
/ 28 марта 2019

Добавьте это: <RuntimeIdentifier>win</RuntimeIdentifier> в файл вашего проекта, например, после элемента TargetFrameworkVersion. Убедитесь, что имя элемента в единственном числе. RuntimeIdentifiers, с другой стороны, используется в новом формате csproj

0 голосов
/ 06 марта 2019

Хотя ответ @ Señor CMasMas помог мне в прошлом, теперь я обнаружил (с момента установки .NET Core SDK v2.2 - не знаю, если это связано), что мне также нужно закрыть и снова открыть Visual Studio . Так что для меня рецепт:

  • Чистый раствор
  • Удалить obj папки
  • Удалить папку .vs (необязательно, если вы получаете красные линии, но все в порядке)
  • Закройте и снова откройте Visual Studio
  • Тогда сборка
0 голосов
/ 17 декабря 2018

Для меня это было так же просто, как компилировать приложение IoT для Windows с платформой x86 вместо ARM.

0 голосов
/ 07 сентября 2018

RuntimeIdentifier должен выглядеть примерно так, как описано здесь: https://docs.microsoft.com/en-us/dotnet/core/rid-catalog.

Учитывая, что это похоже на сборку только локально, я бы сравнил .csproj на вашем локальном компьютере с файлом на вашем сервере сборки. Что-то говорит мне, они не идентичны.

FWIW, строка 186 в указанном файле Microsoft.NuGet.targets, выполняет задачу ResolveNuGetPackageAssets, и вы можете видеть, как аргумент RuntimeIdentifier передается как свойство NuGetRuntimeIdentifier. Вы, вероятно, могли бы отследить это в журнале диагностики вашей рабочей сборки, чтобы увидеть, как он назначается.

Но учитывая, что это работает на одном компьютере, а не на другом, я просто проверю файлы вашего проекта и проверим, что тег RuntimeIdentifier идентичен в обеих системах.

С уважением,

0 голосов
/ 07 сентября 2018

В какой-то момент перед попыткой сборки вам нужно удалить папку obj. Несколько человек показали это, чтобы решить проблему.

https://developercommunity.visualstudio.com/content/problem/312180/projects-fail-to-build-in-1580-due-to-errors-from.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...