web-dev-qa-db-fra.com

VS 15.8.2 Outils de construction défectueux - RuntimeIdentifier manquant

La dernière mise à jour de Windows a brisé toute notre chaîne de construction et je suis un peu confus quant à sa cause.

J'ai un projet existant qui est une résolution VS 2017 avec un nombre important de projets (winform, couple basé sur le Web, certains Webapi uniquement).

Localement, les choses fonctionnent parfaitement. Je peux juste les construire.

Sur le serveur, le projet a commencé à échouer et l'erreur est la suivante:

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'.

J'ai ajouté 

<RuntimeIdentifiers>win</RuntimeIdentifiers>

Pour un certain nombre de projets. Pas de changement. Je suis perdu, car le message d'erreur ne me dit même pas quel projet.

8
TomTom

Avant de créer, vous devez supprimer le dossier obj ..__ Plus d'une personne l'a montré pour résoudre le problème.

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

21
Señor CMasMas

Pour moi, c'était aussi simple que de compiler une application Windows IoT avec la plate-forme x86 au lieu de ARM

0
Dane Bouchie

Le RuntimeIdentifier devrait ressembler davantage à ce qui est décrit ici: https://docs.Microsoft.com/en-us/dotnet/core/rid-catalog .

Étant donné que cela semble construire juste localement, je comparerais le fichier .csproj de votre ordinateur local à celui de votre serveur de build. Quelque chose me dit, ils ne sont pas identiques.

FWIW, ligne 186 du fichier Microsoft.NuGet.targets indiqué, exécute la tâche ResolveNuGetPackageAssets et vous pouvez voir l’argument RuntimeIdentifier transmis en tant que propriété NuGetRuntimeIdentifier. Vous pouvez probablement revenir en arrière dans le journal de diagnostic de votre version de travail pour voir comment il est attribué.

Mais étant donné que cela fonctionne sur une boîte, et non sur une autre, je vérifierais simplement les fichiers de votre projet et vérifierais que la balise RuntimeIdentifier est identique sur les deux systèmes.

Cordialement,

0
Ed Dore