web-dev-qa-db-fra.com

Microsoft.CSharp.Core.targets manquant

Je crée un projet de service Web sur une mise à jour TFS2017 avec les outils de génération 2017. J'obtiens l'erreur suivante

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.CSharp.CurrentVersion.targets (322,5): Erreur MSB4019: le projet importé "C:\Program Files (x86) )\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targets "est introuvable. Confirmez que le chemin d'accès dans la déclaration est correct et que le fichier existe sur le disque.

Quelles mesures dois-je prendre pour corriger cette erreur?

7
doorman

J'ai mis à jour vers TFS2018 et le problème a été résolu.

0
doorman

Dans mon cas, ouvrir le fichier de solution existant (avec .sln extension), il a installé toutes les dépendances manquantes.

Sinon, recherchez manuellement les packages cibles manquants sur nuget.org et installez-les (par exemple MSBuild.Microsoft.VisualStudio.Web.targets ).

4
kenorb

Selon cela problème GitHub , vous devrez définir $(RoslynTargetsPath).

Si MSBuild est installé sur la machine et que vos tests s'exécutent dans une invite de commandes pour développeur Visual Studio, vous ne devez rien faire. Toutefois, MSBuild 15.0 ne se place plus dans le Registre, ce qui empêche MSBuild de se retrouver. Cela est dû à un mandat de Visual Studio où vous pouvez avoir plusieurs installations côte à côte. MSBuild dans ce cas serait installé une fois par instance de Visual Studio. MSBuild se retrouve désormais en regardant les variables d'environnement définies par l'invite de commande VS.

Si vous souhaitez redistribuer entièrement MSBuild via une combinaison de nos packages et de tous les autres packages nécessaires pour effectuer une évaluation complète du projet, vous devrez définir RoslynTargetsPath avant de charger des projets. Vous pourriez faire valoir que c'est un problème avec NuGet puisque tous les packages '<contentFiles /> allez à la racine de votre répertoire de sortie et vous ne pouvez pas spécifier de sous-répertoire pour certains packages.

2
kenorb

Vous devez d'abord suggérer d'utiliser directement la commande msbuild sur l'agent de génération avec le compte de service de génération TFS. Cela se réduira si le problème est lié à votre environnement d'agent ou à votre définition de build TFS.

Selon vos informations d'erreur, le chemin C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targets recherche le chemin de Visual Studio 2017.

Cependant, pour Build Tools, le chemin est différent devrait être C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn

Il semble que vous n'ayez pas installé VS2017 sur votre agent de génération. C'est peut-être la cause première du problème.

La solution la plus simple consiste à installer VS2017 sur votre agent de génération. Remarque, vous devez reconfigurer l'agent de build ou redémarrer le service d'agent de build pour capturer ces nouvelles capacités. Sinon, vous devez modifier la section d'importation correspondante dans votre .csproj fichiers de projet.

1
PatrickLu-MSFT