Partager via


MSBuild@1 - Tâche MSBuild v1

Utilisez cette tâche pour générer avec MSBuild.

Syntax

# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '17.0' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.

Entrées

solution - Projet
string. Obligatoire. Valeur par défaut : **/*.sln.

Si vous souhaitez générer plusieurs projets, spécifiez des critères de recherche. Vous pouvez utiliser un caractère générique à dossier unique (*) et des caractères génériques récursifs (**). Par exemple, **.*proj recherche tous les fichiers du projet MSBuild (.*proj) dans tous les sous-répertoires.

Vérifiez que les projets que vous spécifiez sont téléchargés par ce pipeline de build. Sous l’onglet Référentiel :

  • Si vous utilisez TFVC, vérifiez que le projet est un enfant de l’un des mappages sous l’onglet Référentiel.
  • Si vous utilisez Git, assurez-vous que le projet ou la solution est dans votre référentiel Git, dans une branche que vous générez.

Conseil

Si vous générez une solution, nous vous recommandons d’utiliser la tâche de génération Visual Studio au lieu de la tâche MSBuild.


msbuildLocationMethod - Msbuild
string. Valeurs autorisées : version, location (Spécifier l’emplacement). Valeur par défaut : version.


msbuildVersion - MSBuild Version
string. facultatif. Utilisez quand msbuildLocationMethod = version. Valeurs autorisées : latest, 17.0 (MSBuild 17.0), 16.0 (MSBuild 16.0), 15.0 (MSBuild 15.0), 14.0 (MSBuild 14.0), 12.0 (MSBuild 12.0), 4.0 (MSBuild 4.0). Valeur par défaut : latest.

Si la version par défaut est introuvable, la dernière version trouvée est utilisée à la place. Sur un agent macOS, xbuild (Mono) est utilisé si la version est inférieure à 15.0.


msbuildVersion - MSBuild Version
string. facultatif. Utilisez quand msbuildLocationMethod = version. Valeurs autorisées : latest, 16.0 (MSBuild 16.0), 15.0 (MSBuild 15.0), 14.0 (MSBuild 14.0), 12.0 (MSBuild 12.0), 4.0 (MSBuild 4.0). Valeur par défaut : latest.

Si la version par défaut est introuvable, la dernière version trouvée est utilisée à la place. Sur un agent macOS, xbuild (Mono) est utilisé si la version est inférieure à 15.0.


msbuildArchitecture - MSBuild Architecture
string. facultatif. Utilisez quand msbuildLocationMethod = version. Valeurs autorisées : x86 (MSBuild x86), x64 (MSBuild x64). Valeur par défaut : x86.

Fournit l’architecture MSBuild (x86, x64) à exécuter.


msbuildLocation - Chemin d’accès à MSBuild
string. facultatif. Utilisez quand msbuildLocationMethod = location.

Fournit le chemin d’accès à MSBuild.


platform - Plate-forme
string.

Conseil

  • Si vous ciblez un fichier projet MSBuild (.*proj) au lieu d’une solution, spécifiez AnyCPU (aucun espace).
  • Déclarez une variable de build telle que BuildPlatform sous l’onglet Variables (en sélectionnant Allow au moment de la file d’attente) et référencez-la ici en tant que $(BuildPlatform). De cette façon, vous pouvez modifier la plateforme quand vous mettez la build en file d’attente et activez la génération de plusieurs configurations.

configuration - Configuration
string.

Conseil

Déclarez une variable de build telle que BuildConfiguration sous l’onglet Variables (en sélectionnant Allow au moment de la file d’attente) et référencez-la ici en tant que $(BuildConfiguration). De cette façon, vous pouvez modifier la plateforme quand vous mettez la build en file d’attente et activez la génération de plusieurs configurations.


msbuildArguments - MSBuild Arguments
string.

Spécifie des arguments supplémentaires passés à MSBuild (sur Windows) et xbuild (sur macOS).


clean - Propre
boolean. Valeur par défaut : false.

Définissez sur False si vous souhaitez en faire une build incrémentielle. Ce paramètre peut réduire le temps de génération, en particulier si votre codebase est grand. Cette option n’a aucun effet pratique, sauf si vous définissez également le Clean dépôt sur False. Définissez sur True si vous souhaitez reconstruire tout le code dans les projets de code. Cela équivaut à l’argument /target:clean MSBuild. Pour plus d’informations, consultez Options de dépôt


maximumCpuCount - Générer en parallèle
boolean. Valeur par défaut : false.

Si votre configuration cible MSBuild est compatible avec la génération en parallèle, vous pouvez case activée cette entrée pour passer le /m commutateur à MSBuild (Windows uniquement). Si votre configuration cible n’est pas compatible avec la génération en parallèle, la vérification de cette option peut entraîner file-in-use des erreurs ou des échecs de build intermittents ou incohérents.


restoreNugetPackages - Restaurer des packages NuGet
boolean. Valeur par défaut : false.

Cette fonction est déconseillée. Pour restaurer des packages NuGet, ajoutez une tâche NuGet avant la génération.


logProjectEvents - Enregistrer les détails du projet
boolean. Valeur par défaut : false.

Enregistre éventuellement chronologie détails pour chaque projet (Windows uniquement).


createLogFile - Créer un fichier journal
boolean. Valeur par défaut : false.

Crée éventuellement un fichier journal (Windows uniquement).


logFileVerbosity - Détail du fichier journal
string. facultatif. Utilisez quand createLogFile = true. Valeurs autorisées : quiet, minimal, normal, detailed, diagnostic. Valeur par défaut : normal.

Spécifie le niveau de détail du fichier journal.


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

Dois-je utiliser la tâche Build Visual Studio ou la tâche MSBuild ?

Si vous générez une solution, dans la plupart des cas, vous devez utiliser la tâche Build Visual Studio. Cette tâche effectue automatiquement les actions suivantes :

  • Définit la propriété /p:VisualStudioVersion pour vous. Cela force MSBuild à utiliser un ensemble particulier de cibles qui augmentent la probabilité de succès d’une build.
  • Spécifie l’argument de version MSBuild.

Dans certains cas, vous devrez peut-être utiliser la MSBuild tâche. Par exemple, vous devez l’utiliser si vous générez des projets de code en dehors d’une solution.

Où peut-on se renseigner sur MSBuild ?

Informations de référence sur MSBuild

Informations de référence sur la ligne de commande MSBuild

Comment générer plusieurs configurations pour plusieurs plateformes ?

  1. Sous l’onglet Variables, vérifiez que vous avez défini des variables pour vos configurations et plateformes. Pour spécifier plusieurs valeurs, séparez-les avec des virgules. Par exemple :

    • Pour une application .NET, vous pouvez spécifier BuildConfiguration avec des valeurs de débogage et de mise en production, et vous pouvez spécifier BuildPlatform avec n’importe quelle valeur de processeur.
    • Pour une application C++, vous pouvez spécifier BuildConfiguration avec des valeurs de débogage et de mise en production, et vous pouvez spécifier BuildPlatform avec n’importe quelle valeur x86 et x64.
  2. Sous l’onglet Options, sélectionnez MultiConfiguration et spécifiez le Multipliers, séparé par des virgules. Par exemple : BuildConfiguration, BuildPlatform sélectionnez Parallel si vous souhaitez distribuer les travaux (un pour chaque combinaison de valeurs) à plusieurs agents en parallèle s’ils sont disponibles.

  3. Sous l’onglet Générer, sélectionnez cette étape et spécifiez les Platform arguments et Configuration . Par exemple :

    • Plateforme : $(BuildPlatform)
    • Configuration : $(BuildConfiguration)

Puis-je générer des fichiers TFSBuild.proj ?

Vous ne pouvez pas générer de TFSBuild.proj fichiers. Ces types de fichiers sont générés par TFS 2005 et TFS 2008. Ces fichiers contiennent des tâches et les cibles sont prises en charge uniquement à l’aide de builds XAML.

Dépannage

Cette section fournit des conseils de résolution des problèmes courants qu’un utilisateur peut rencontrer lors de l’utilisation de la MSBuild tâche.

Échec de la génération avec l’erreur suivante : une défaillance interne s’est produite lors de l’exécution de MSBuild

Causes possibles
  • Modifiez la version de MSBuild.
  • Problèmes liés à une extension tierce.
  • Nouvelles mises à jour de Visual Studio qui peuvent entraîner des assemblys manquants sur l’agent de build.
  • Déplacement ou suppression de certains des packages NuGet nécessaires.
Suggestions sur la résolution de problèmes
Exécuter le pipeline avec des diagnostics pour récupérer des journaux détaillés

L’une des options disponibles pour diagnostiquer le problème consiste à examiner les journaux générés. Vous pouvez afficher les journaux de votre pipeline en sélectionnant la tâche et le travail appropriés dans le résumé de l’exécution de votre pipeline.

Pour obtenir les journaux d’exécution de votre pipeline, consultez Obtenir les journaux d’activité pour diagnostiquer les problèmes

Vous pouvez également configurer et télécharger un journal détaillé personnalisé pour faciliter votre résolution des problèmes :

En plus des journaux de diagnostic du pipeline, vous pouvez également consulter ces autres types de journaux qui contiennent plus d’informations pour vous aider à déboguer et résoudre le problème :

Essayer de reproduire l’erreur localement

Si vous utilisez un agent de build hébergé, vous pouvez essayer de reproduire l’erreur localement. Cela vous aidera à déterminer si l’échec est le résultat de l’agent de build ou de la tâche de génération.

Exécutez la même MSBuild commande sur votre ordinateur local à l’aide des mêmes arguments. Consultez la commande MSBuild pour obtenir des informations de référence.

Conseil

Si vous pouvez reproduire le problème sur votre ordinateur local, l’étape suivante consiste à examiner le problème MSBuild.

En savoir plus sur les agents hébergés par Microsoft.

Pour configurer votre agent autohébergé et exécuter les travaux de génération :

Que puis-je faire d’autre ?

Certaines des erreurs MSBuild sont dues à une modification dans Visual Studio, de sorte que vous pouvez rechercher sur Visual Studio Developer Community pour voir si ce problème a été signalé. Vos questions, suggestions et commentaires sont également les bienvenus.

Configuration requise

Condition requise Description
Types de pipelines YAML, build classique
S’exécute sur Agent, DeploymentGroup
Demandes Les agents auto-hébergés doivent avoir des fonctionnalités qui correspondent aux exigences suivantes pour exécuter des travaux qui utilisent cette tâche : msbuild
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Quelconque
Variables settables Quelconque
Version de l’agent 1.95.0 ou version ultérieure
Catégorie de la tâche Build

Voir aussi