Fonctions de propriétésProperty Functions

Dans les versions 4 et 4.5 de .NET Framework, des fonctions de propriété peuvent être utilisées pour évaluer des scripts MSBuild.In the .NET Framework versions 4 and 4.5, property functions can be used to evaluate MSBuild scripts. Les fonctions de propriété peuvent utilisées partout où figurent des propriétés.Property functions can be used wherever properties appear. Au contraire des tâches, les fonctions de propriété peuvent être utilisées en dehors des cibles et elles sont évaluées avant l'exécution des cibles.Unlike tasks, property functions can be used outside of targets, and are evaluated before any target runs.

Sans utiliser de tâches MSBuild, vous pouvez lire l'heure système, comparer des chaînes, établir des correspondances avec des expressions régulières et effectuer d'autres actions dans votre script de génération.Without using MSBuild tasks, you can read the system time, compare strings, match regular expressions, and perform other actions in your build script. MSBuild tente de convertir les chaînes en nombres et les nombres en chaînes, et d'effectuer les autres conversions nécessaires.MSBuild will try to convert string to number and number to string, and make other conversions as required.

Syntaxe des fonctions de propriétéProperty Function Syntax

Il y a trois sortes de fonctions de propriété. Chaque fonction a une syntaxe différente :These are three kinds of property functions; each function has a different syntax:

  • Fonctions de propriété (d'instance) de chaîneString (instance) property functions

  • Fonctions de propriété statiqueStatic property functions

  • Fonctions de propriété MSBuildMSBuild property functions

Fonctions de propriété de type chaîneString Property Functions

Toutes les valeurs de propriété de build sont simplement des valeurs de chaîne.All build property values are just string values. Vous pouvez utiliser des méthodes (d'instance) de chaîne pour effectuer des opérations sur toutes les valeurs de propriété.You can use string (instance) methods to operate on any property value. Par exemple, vous pouvez extraire le nom du lecteur (les trois premiers caractères) d'une propriété de build qui représente un chemin d'accès complet à l'aide de ce code :For example, you can extract the drive name (the first three characters) from a build property that represents a full path by using this code:

$(ProjectOutputFolder.Substring(0,3))

Fonctions de propriété statiqueStatic Property Functions

Dans votre script de génération, vous pouvez accéder aux propriétés et aux méthodes statiques de nombreuses classes système.In your build script, you can access the static properties and methods of many system classes. Pour obtenir la valeur d’une propriété statique, utilisez la syntaxe suivante, où Class est le nom de la classe système et Property le nom de la propriété.To get the value of a static property, use the following syntax, where Class is the name of the system class and Property is the name of the property.

$([Class]::Property)

Par exemple, vous pouvez utiliser le code suivant pour définir une propriété de build avec la date et l'heure actuelles.For example, you can use the following code to set a build property to the current date and time.

<Today>$([System.DateTime]::Now)</Today>

Pour appeler une méthode statique, utilisez la syntaxe suivante, où Class est le nom de la classe système, Method le nom de la méthode et (Parameters) la liste des paramètres de la méthode :To call a static method, use the following syntax, where Class is the name of the system class, Method is the name of the method, and (Parameters) is the parameter list for the method:

$([Class]::Method(Parameters))

Par exemple, pour définir une propriété de build avec un nouveau GUID, vous pouvez utiliser ce script :For example, to set a build property to a new GUID, you can use this script:

<NewGuid>$([System.Guid]::NewGuid())</NewGuid>

Dans les fonctions de propriété statique, vous pouvez utiliser toutes les méthodes ou propriétés statiques de ces classes système :In static property functions, you can use any static method or property of these system classes:

  • System.ByteSystem.Byte

  • System.CharSystem.Char

  • System.ConvertSystem.Convert

  • System.DateTimeSystem.DateTime

  • System.DecimalSystem.Decimal

  • System.DoubleSystem.Double

  • System.EnumSystem.Enum

  • System.GuidSystem.Guid

  • System.Int16System.Int16

  • System.Int32System.Int32

  • System.Int64System.Int64

  • System.IO.PathSystem.IO.Path

  • System.MathSystem.Math

  • System.Runtime.InteropServices.OSPlatformSystem.Runtime.InteropServices.OSPlatform

  • System.Runtime.InteropServices.RuntimeInformationSystem.Runtime.InteropServices.RuntimeInformation

  • System.UInt16System.UInt16

  • System.UInt32System.UInt32

  • System.UInt64System.UInt64

  • System.SByteSystem.SByte

  • System.SingleSystem.Single

  • System.StringSystem.String

  • System.StringComparerSystem.StringComparer

  • System.TimeSpanSystem.TimeSpan

  • System.Text.RegularExpressions.RegexSystem.Text.RegularExpressions.Regex

  • Microsoft.Build.Utilities.ToolLocationHelperMicrosoft.Build.Utilities.ToolLocationHelper

    Vous pouvez également utiliser les méthodes et propriétés statiques suivantes :In addition, you can use the following static methods and properties:

  • System.Environment::CommandLineSystem.Environment::CommandLine

  • System.Environment::ExpandEnvironmentVariablesSystem.Environment::ExpandEnvironmentVariables

  • System.Environment::GetEnvironmentVariableSystem.Environment::GetEnvironmentVariable

  • System.Environment::GetEnvironmentVariablesSystem.Environment::GetEnvironmentVariables

  • System.Environment::GetFolderPathSystem.Environment::GetFolderPath

  • System.Environment::GetLogicalDrivesSystem.Environment::GetLogicalDrives

  • System.IO.Directory::GetDirectoriesSystem.IO.Directory::GetDirectories

  • System.IO.Directory::GetFilesSystem.IO.Directory::GetFiles

  • System.IO.Directory::GetLastAccessTimeSystem.IO.Directory::GetLastAccessTime

  • System.IO.Directory::GetLastWriteTimeSystem.IO.Directory::GetLastWriteTime

  • System.IO.Directory::GetParentSystem.IO.Directory::GetParent

  • System.IO.File::ExistsSystem.IO.File::Exists

  • System.IO.File::GetCreationTimeSystem.IO.File::GetCreationTime

  • System.IO.File::GetAttributesSystem.IO.File::GetAttributes

  • System.IO.File::GetLastAccessTimeSystem.IO.File::GetLastAccessTime

  • System.IO.File::GetLastWriteTimeSystem.IO.File::GetLastWriteTime

  • System.IO.File::ReadAllTextSystem.IO.File::ReadAllText

Appel de méthodes d'instance sur des propriétés statiquesCalling Instance Methods on Static Properties

Si vous accédez à une propriété statique qui retourne une instance d'un objet, vous pouvez appeler les méthodes d'instance de cet objet.If you access a static property that returns an object instance, you can invoke the instance methods of that object. Pour appeler une méthode d’instance, utilisez la syntaxe suivante, où Class est le nom de la classe système, Property le nom de la propriété, Method le nom de la méthode et (Parameters) la liste des paramètres de la méthode :To invoke an instance method, use the following syntax, where Class is the name of the system class, Property is the name of the property, Method is the name of the method, and (Parameters) is the parameter list for the method:

$([Class]::Property.Method(Parameters))

Le nom de la classe doit être complet avec l'espace de noms.The name of the class must be fully qualified with the namespace.

Par exemple, vous pouvez utiliser le code suivant pour définir une propriété de build avec la date du jour.For example, you can use the following code to set a build property to the current date today.

<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>

Fonctions de propriété MSBuildMSBuild Property Functions

Vous pouvez accéder à plusieurs méthodes statiques dans votre build, qui prennent en charge des fonctions liées à l'arithmétique, à la logique au niveau du bit et aux caractères d'échappement.Several static methods in your build can be accessed to provide arithmetic, bitwise logical, and escape character support. Vous accédez à ces méthodes en utilisant la syntaxe suivante, où Method est le nom de la méthode et Parameters la liste des paramètres de la méthode.You access these methods by using the following syntax, where Method is the name of the method and Parameters is the parameter list for the method.

$([MSBuild]::Method(Parameters))

Par exemple, pour ajouter en même temps deux propriétés qui ont des valeurs numériques, utilisez le code suivant.For example, to add together two properties that have numeric values, use the following code.

$([MSBuild]::Add($(NumberOne), $(NumberTwo))

Voici une liste de fonctions de propriété MSBuild :Here is a list of MSBuild property functions:

Signature de la fonctionFunction Signature DescriptionDescription
double Add(double a, double b)double Add(double a, double b) Additionne deux doubles.Add two doubles.
long Add(long a, long b)long Add(long a, long b) Additionne deux longs.Add two longs.
double Subtract(double a, double b)double Subtract(double a, double b) Fait une soustraction entre deux doubles.Subtract two doubles.
long Subtract(long a, long b)long Subtract(long a, long b) Fait une soustraction entre deux longs.Subtract two longs.
double Multiply(double a, double b)double Multiply(double a, double b) Fait une multiplication de deux doubles.Multiply two doubles.
long Multiply(long a, long b)long Multiply(long a, long b) Fait une multiplication de deux longs.Multiply two longs.
double Divide(double a, double b)double Divide(double a, double b) Fait une division de deux doubles.Divide two doubles.
long Divide(long a, long b)long Divide(long a, long b) Fait une division de deux longs.Divide two longs.
double Modulo(double a, double b)double Modulo(double a, double b) Calcule le modulo de deux doubles.Modulo two doubles.
long Modulo(long a, long b)long Modulo(long a, long b) Calcule le modulo de deux longs.Modulo two longs.
chaîne Escape(chaîne sans caractère d'échappement)string Escape(string unescaped) Place un caractère d'échappement devant la chaîne selon les règles d'échappement de MSBuild.Escape the string according to MSBuild escaping rules.
chaîne Unescape(chaîne avec caractère d'échappement)string Unescape(string escaped) Enlève le caractère d'échappement de la chaîne selon les règles d'échappement de MSBuild.Unescape the string according to MSBuild escaping rules.
entier BitwiseOr(entier premier, entier second)int BitwiseOr(int first, int second) Effectue un OR au niveau du bit sur le premier et le second entier (premier
entier BitwiseAnd(entier premier, entier second)int BitwiseAnd(int first, int second) Effectue un AND au niveau du bit sur le premier et le second entier (premier & second).Perform a bitwise AND on the first and second (first & second).
entier BitwiseXor(entier premier, entier second)int BitwiseXor(int first, int second) Effectue un XOR au niveau du bit sur le premier et le second entier (premier ^ second).Perform a bitwise XOR on the first and second (first ^ second).
entier BitwiseNot(entier premier)int BitwiseNot(int first) Effectue un NOT au niveau du bit (~premier).Perform a bitwise NOT (~first).
bool IsOsPlatform(string platformString)bool IsOsPlatform(string platformString) Spécifie si la plateforme du système d’exploitation actuelle est platformString.Specify whether the current OS platform is platformString. platformStringdoit être membre de OSPlatform.platformString must be a member of OSPlatform.
bool IsOSUnixLikebool IsOSUnixLike True si le système d’exploitation actuel est un système Unix.True if current OS is a Unix system.
string NormalizePath(params string[] path)string NormalizePath(params string[] path) Obtient le chemin complet au format canonique du chemin fourni et vérifie qu’il contient les caractères de séparateur de répertoire appropriés au système d’exploitation actuel.Gets the canonicalized full path of the provided path and ensures it contains the correct directory separator characters for the current operating system.
string NormalizeDirectory(params string[] path)string NormalizeDirectory(params string[] path) Obtient le chemin complet au format canonique du répertoire fourni et vérifie qu’il contient les caractères de séparateur de répertoire appropriés au système d’exploitation actuel et qu’il se termine par une barre oblique.Gets the canonicalized full path of the provided directory and ensures it contains the correct directory separator characters for the current operating system while ensuring it has a trailing slash.
string EnsureTrailingSlash(string path)string EnsureTrailingSlash(string path) Si le chemin donné ne se termine pas par une barre oblique, ajoutez-en une.If the given path doesn't have a trailing slash then add one. Si le chemin est une chaîne vide, ne le modifiez pas.If the path is an empty string, does not modify it.
string GetPathOfFileAbove(string file, string startingDirectory)string GetPathOfFileAbove(string file, string startingDirectory) Recherche un fichier en se basant sur l’emplacement du fichier de build actuel ou sur startingDirectory, s’il est spécifié.Searches for a file based on the current build file's location, or based on startingDirectory, if specified.
GetDirectoryNameOfFileAbove(string startingDirectory, string fileName)GetDirectoryNameOfFileAbove(string startingDirectory, string fileName) Recherche un fichier dans le répertoire spécifié ou dans un emplacement de la structure de répertoire au-dessus de ce répertoire.Locate a file in either the directory specified or a location in the directory structure above that directory.
string MakeRelative(string basePath, string path)string MakeRelative(string basePath, string path) Rend path relatif à basePath.Makes path relative to basePath. basePath doit être un répertoire absolu.basePath must be an absolute directory. Si rendre path relatif n’est pas possible, il est retourné sous forme de chaîne textuelle.If path cannot be made relative, it is returned verbatim. Similaire à Uri.MakeRelativeUri.Similar to Uri.MakeRelativeUri.
string ValueOrDefault(string conditionValue, string defaultValue)string ValueOrDefault(string conditionValue, string defaultValue) Retourne la chaîne dans le paramètre 'defaultValue' seulement si le paramètre 'conditionValue' est vide ; sinon, retourne la valeur conditionValue.Return the string in parameter 'defaultValue' only if parameter 'conditionValue' is empty, else, return the value conditionValue.

Fonctions de propriété imbriquéesNested Property Functions

Vous pouvez combiner des fonctions de propriété pour former des fonctions plus complexes, comme dans l'exemple suivant.You can combine property functions to form more complex functions, as the following example shows.

$([MSBuild]::BitwiseAnd(32, $([System.IO.File]::GetAttributes(tempFile))))

Cet exemple retourne le bit FileAttributes de Archive (32 ou 0) du fichier spécifié par le chemin d'accès tempFile.This example returns the value of the FileAttributesArchive bit (32 or 0) of the file given by the path tempFile. Notez que les valeurs des données énumérées ne peuvent pas apparaître par leur nom dans les fonctions de propriété.Notice that enumerated data values cannot appear by name within property functions. La valeur numérique (32) doit être utilisée à la place.The numeric value (32) must be used instead.

Des métadonnées peuvent également apparaître dans des fonctions de propriété imbriquées.Metadata may also appear in nested property functions. Pour plus d’informations, consultez l’article Batching (Traitement par lot MSBuild).For more information, see Batching.

Fonction MSBuild DoesTaskHostExistMSBuild DoesTaskHostExist

La fonction de propriété DoesTaskHostExist de MSBuild retourne une valeur indiquant si un hôte de tâche est actuellement installé pour les valeurs de runtime et d'architecture spécifiées.The DoesTaskHostExist property function in MSBuild returns whether a task host is currently installed for the specified runtime and architecture values.

La syntaxe de cette fonction de propriété est la suivante :This property function has the following syntax:

$([MSBuild]::DoesTaskHostExist(string theRuntime, string theArchitecture))

MSBuild EnsureTrailingSlashMSBuild EnsureTrailingSlash

La fonction de propriété EnsureTrailingSlash dans MSBuild ajoute une barre oblique de fin s’il n’en existe pas déjà une.The EnsureTrailingSlash property function in MSBuild adds a trailing slash if one doesn't already exist.

La syntaxe de cette fonction de propriété est la suivante :This property function has the following syntax:

$([MSBuild]::EnsureTrailingSlash('$(PathProperty)'))

Fonction MSBuild GetDirectoryNameOfFileAboveMSBuild GetDirectoryNameOfFileAbove

La fonction de propriété MSBuild GetDirectoryNameOfFileAbove recherche un fichier dans les répertoires situés sous le répertoire actif du chemin d'accès.The MSBuild GetDirectoryNameOfFileAbove property function looks for a file in the directories above the current directory in the path.

La syntaxe de cette fonction de propriété est la suivante :This property function has the following syntax:

$([MSBuild]::GetDirectoryNameOfFileAbove(string ThePath, string TheFile))

Le code suivant est un exemple de cette syntaxe.The following code is an example of this syntax.

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))\EnlistmentInfo.props" Condition=" '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), EnlistmentInfo.props))' != '' " />  

MSBuild GetPathOfFileAboveMSBuild GetPathOfFileAbove

La fonction de propriété GetPathOfFileAbove dans MSBuild retourne le chemin du fichier qui précède immédiatement celui indiqué.The GetPathOfFileAbove property function in MSBuild returns the path of the file immediately preceding this one. Sur le plan fonctionnel, elle revient à appelerIt is functionally equivalent to calling

<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />

La syntaxe de cette fonction de propriété est la suivante :This property function has the following syntax:

$([MSBuild]::GetPathOfFileAbove(dir.props))  

Fonction MSBuild GetRegistryValueMSBuild GetRegistryValue

La propriété de fonction MSBuild GetRegistryValue retourne la valeur d'une clé de Registre.The MSBuild GetRegistryValue property function returns the value of a registry key. Cette fonction prend deux arguments, le nom de la clé et le nom de la valeur, et retourne la valeur qui se trouve dans le Registre.This function takes two arguments, the key name and the value name, and returns the value from the registry. Si vous ne spécifiez pas un nom de valeur, la valeur par défaut est retournée.If you don't specify a value name, the default value is returned.

Les exemples suivants montrent comment cette fonction est utilisée :The following examples show how this function is used:

$([MSBuild]::GetRegistryValue(`HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger`, ``))                                  // default value  
$([MSBuild]::GetRegistryValue(`HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger`, `SymbolCacheDir`))  
$([MSBuild]::GetRegistryValue(`HKEY_LOCAL_MACHINE\SOFTWARE\(SampleName)`, `(SampleValue)`))             // parens in name and value  

Fonction MSBuild GetRegistryValueFromViewMSBuild GetRegistryValueFromView

La fonction de propriété MSBuild GetRegistryValueFromView extrait des données du Registre système en fonction de la clé de Registre, de la valeur et d'une ou plusieurs vues ordonnées du Registre.The MSBuild GetRegistryValueFromView property function gets system registry data given the registry key, value, and one or more ordered registry views. La clé et la valeur sont recherchées dans chaque vue du Registre dans l'ordre, jusqu'à ce qu'elles soient trouvées.The key and value are searched in each registry view in order until they are found.

Le syntaxe de cette fonction de propriété est :The syntax for this property function is:

[MSBuild]::GetRegistryValueFromView(chaîne nom_clé, chaîne nom_valeur, objet valeur_par_défaut, paramètres objet[] vues)[MSBuild]::GetRegistryValueFromView(string keyName, string valueName, object defaultValue, params object[] views)

Le système d'exploitation Windows 64 bits gère une clé de Registre HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node qui présente une vue de Registre HKEY_LOCAL_MACHINE\SOFTWARE pour les applications 32 bits.The Windows 64-bit operating system maintains a HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node registry key that presents a HKEY_LOCAL_MACHINE\SOFTWARE registry view for 32-bit applications.

Par défaut, une application 32 bits s'exécutant sur WOW64 accède à la vue de Registre 32 bits et une application 64 bits accède à la vue de Registre 64 bits.By default, a 32-bit application running on WOW64 accesses the 32-bit registry view and a 64-bit application accesses the 64-bit registry view.

Les vues de Registre suivantes sont disponibles :The following registry views are available:

Vue de RegistreRegistry View DéfinitionDefinition
RegistryView.Registry32RegistryView.Registry32 Vue de Registre pour les applications 32 bits.The 32-bit application registry view.
RegistryView.Registry64RegistryView.Registry64 Vue de Registre pour les applications 64 bits.The 64-bit application registry view.
RegistryView.DefaultRegistryView.Default La vue de Registre qui correspond au processus sur lequel l'application s'exécute.The registry view that matches the process that the application is running on.

Voici un exemple.The following is an example.

$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Silverlight\v3.0\ReferenceAssemblies', 'SLRuntimeInstallPath', null, RegistryView.Registry64, RegistryView.Registry32))

extrait les données de SLRuntimeInstallPath de la clé ReferenceAssemblies, en recherchant d'abord dans la vue de Registre 64 bits puis dans la vue de Registre 32 bits.gets the SLRuntimeInstallPath data of the ReferenceAssemblies key, looking first in the 64-bit registry view and then in the 32-bit registry view.

Fonction MSBuild MakeRelativeMSBuild MakeRelative

La fonction de propriété MSBuild MakeRelative retourne le chemin d'accès relatif du second chemin par rapport au premier chemin.The MSBuild MakeRelative property function returns the relative path of the second path relative to first path. Chaque chemin peut être un fichier ou un dossier.Each path can be a file or folder.

La syntaxe de cette fonction de propriété est la suivante :This property function has the following syntax:

$([MSBuild]::MakeRelative($(FileOrFolderPath1), $(FileOrFolderPath2)))

Le code suivant est un exemple de cette syntaxe.The following code is an example of this syntax.

<PropertyGroup>  
    <Path1>c:\users\</Path1>  
    <Path2>c:\users\username\</Path2>  
</PropertyGroup>  

<Target Name = "Go">  
    <Message Text ="$([MSBuild]::MakeRelative($(Path1), $(Path2)))" />  
    <Message Text ="$([MSBuild]::MakeRelative($(Path2), $(Path1)))" />  
</Target>  

<!--  
Output:  
   username\  
   ..\  
-->  

Fonction MSBuild ValueOrDefaultMSBuild ValueOrDefault

La fonction de propriété MSBuild ValueOrDefault retourne le premier argument, sauf s'il est null ou vide.The MSBuild ValueOrDefault property function returns the first argument, unless it's null or empty. Si le premier argument est null ou vide, la fonction retourne le second argument.If the first argument is null or empty, the function returns the second argument.

L'exemple suivant montre comment cette fonction est utilisée.The following example shows how this function is used.

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

    <PropertyGroup>  
        <Value1>$([MSBuild]::ValueOrDefault(`$(UndefinedValue)`, `a`))</Value1>  
        <Value2>$([MSBuild]::ValueOrDefault(`b`, `$(Value1)`))</Value2>  
    </PropertyGroup>  

    <Target Name="MyTarget">  
        <Message Text="Value1 = $(Value1)" />  
        <Message Text="Value2 = $(Value2)" />  
    </Target>  
</Project>  

<!--  
Output:   
  Value1 = a  
  Value2 = b  
-->  

Voir aussiSee Also

Propriétés MSBuild MSBuild Properties
MSBuild Overview (Vue d’ensemble de MSBuild)MSBuild Overview