72 votes

Différentes manières de passer des variables dans MSBuild

Je suis plutôt novice en matière de MS Build et j'ai examiné un grand nombre des fichiers cibles intégrés qui sont livrés avec Visual Studio. J'ai vu des variables passées de plusieurs manières différentes et je ne suis pas tout à fait sûr des différences entre celles-ci :

$(...)
@(...)
%(...)

89voto

Julien Hoarau Points 23987
  • $(...) est utilisé pour accéder à Property (Plus d'informations sur Élément de propriété )

    <PropertyGroup>
      <Configuration>Debug</Configuration>
    </PropertyGroup>
    
    <Message Text="Configuration = $(Configuration)"/>
  • @(...) est utilisé pour accéder à Item (Plus d'informations sur Élément de l'article )

    <ItemGroup>
      <Reference Include="System.Data"/>
      <Reference Include="System.Web.*"/>
    </ItemGroup>
    
    <Message Text="References = @(Reference)"/>
  • %(...) est utilisé pour accéder à Item Metadata (Plus d'informations sur Métadonnées de l'article ). Il est également utilisé pour faire batching .

    <ItemGroup>
      <Compile Include="Account\ChangePassword.aspx.cs">
        <DependentUpon>ChangePassword.aspx</DependentUpon>
        <SubType>ASPXCodeBehind</SubType>
      <Compile/>
    </ItemGroup>
    
    <Message Text="Element @(Compile) of subtype %(SubType) and depend of %(DependentUpon)"/>

17voto

Indolent Coder Points 320

Dollar - $(MyProp) : Permet de référencer les valeurs spécifiées dans les PropertyGroups.

At Sign - @(CodeFile) : Permet de référencer des listes d'éléments spécifiés dans les ItemGroups.

Pourcentage - %(CodeFile.BatchNum) : Permet de référencer les valeurs d'ItemGroup en lot à l'aide de métadonnées. C'est un peu plus compliqué, alors consultez la documentation pour plus d'informations.

Jetez un coup d'œil à chaque lien pour obtenir des informations plus détaillées sur la façon dont ils sont utilisés. Bonne chance - j'espère que cela vous aidera !

0voto

selalerer Points 1754

Un peu plus loin que le % (métadonnées de l'article), il y a aussi les métadonnées de l'article bien connu : https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-well-known-item-metadata?view=vs-2017

Par exemple, ModifiedTime :

  <ItemGroup>
    <IntermediateAssembly Include="$(IntermediateOutputPath)$(TargetName)$(TargetExt)"/>
  </ItemGroup>

<PropertyGroup>
  <_AssemblyTimestampBeforeCompile>%(IntermediateAssembly.ModifiedTime)</_AssemblyTimestampBeforeCompile>
</PropertyGroup>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X