Ответ 1
В какой-то момент перед попыткой сборки вам нужно удалить папку obj. Более одного человека показали это, чтобы решить проблему.
Последнее обновление Windows нарушило всю цепочку сборки, и я немного растерялся в том, что вызывает ее.
У меня есть унаследованный проект, который является достоянием VS 2017 со значительным количеством проектов (winform, веб-веб-сайт, только Webapi).
Локально все работает отлично. Я могу просто построить их.
На сервере proejct начал сбой, и ошибка:
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>
К ряду проектов. Без изменений. Я в недоумении, потому что сообщение об ошибке даже не говорит мне, какой проект.
В какой-то момент перед попыткой сборки вам нужно удалить папку obj. Более одного человека показали это, чтобы решить проблему.
Хотя ответ @Señor CMasMas помог мне в прошлом, теперь я обнаружил (с момента установки .NET Core SDK v2.2 - не знаю, связано ли это с этим), но мне также необходимо закрыть и снова открыть Visual Studio. Так что для меня рецепт:
obj
.vs
(необязательно, если вы получаете красные линии, но все в порядке) Добавьте это: <RuntimeIdentifier>win</RuntimeIdentifier>
в файл проекта, например, после элемента TargetFrameworkVersion
. Убедитесь, что имя элемента в единственном числе. RuntimeIdentifiers
с другой стороны используется в новом формате csproj
RuntimeIdentifier должен выглядеть примерно так, как описано здесь: https://docs.microsoft.com/en-us/dotnet/core/rid-catalog.
Учитывая, что это похоже на то, что вы просто локально находите, я бы разложил.csproj на вашем локальном компьютере против того, что было на вашем сервере сборки. Что-то мне подсказывает, они не идентичны.
FWIW, строка 186 в указанном файле Microsoft.NuGet.targets, запускает задачу ResolveNuGetPackageAssets, и вы можете увидеть, что аргумент RuntimeIdentifier передается как свойство NuGetRuntimeIdentifier. Вероятно, вы можете вернуться к этому в своем рабочем журнале диагностики построения, чтобы узнать, как он назначен.
Но, учитывая, что это работает на одном поле, а не на другом, я просто проверял файлы проекта и проверял, что тег RuntimeIdentifier идентичен в обеих системах.
С уважением,
У меня похожий случай. Я пытаюсь создать решение с помощью msbuild, не устанавливая Visual Studio 2017, просто установите последнюю версию инструментов сборки vs 2017. Вот мои шаги:
Ваш файл проекта не перечисляет "win" как "RuntimeIdentifier". Вы должны добавить 'win' к свойству "RuntimeIdentifiers" в файле проекта, а затем повторно запустить восстановление NuGet.
Кажется, проблема в старой версии Nuget. Пожалуйста, обратитесь сюда. Наконец, я решил это с помощью пакетов восстановления с последней версией Nuget (v5.0.2). шаги:
Или вы можете просто запустить в корневом каталоге вашего проекта скрипт в PowerShell, который вы должны запускать от имени администратора.
Get-ChildItem .\ -include bin,obj -Recurse | foreach { remove-item $_.fullname -Force -Recurse }
этот скрипт удалит все папки obj и bin
Для меня это было так же просто, как собрать приложение IoT для Windows с платформой x86
вместо ARM
.
В моем случае это происходило в сборке Azure.
Мне удалось решить эту проблему, заставив сборку использовать инструменты Visual Studio 2019.
Я изменил наш build.cake файл, чтобы шаги MSBuild включали UseToolVersion для VS 2019, например:
MSBuild(_solutionFile, settings => settings.SetConfiguration(_configuration)
.UseToolVersion(MSBuildToolVersion.VS2019));
У меня была похожая проблема. Моя ошибка была
ошибка: ваш файл проекта не перечисляет "win10" как "RuntimeIdentifier". Вы должны добавить "win10" к Свойство "RuntimeIdentifiers" в файле проекта, а затем повторно запустите Восстановление NuGet.
Что ж, оказалось, что мне просто нужно было изменить цель сборки с "Любой процессор" на что-то другое (например, x64)...