web-dev-qa-db-ja.com

MSBuildで変数を渡すさまざまな方法

私はMSBuildにかなり慣れておらず、VisualStudioに付属している組み込みのターゲットファイルの多くを確認しています。変数がいくつかの異なる方法で渡されるのを見てきましたが、これらの違いについてはよくわかりません。

$(...)
@(...)
%(...)
73
Wallace Breza
  • $(...)Property値にアクセスするために使用されます( プロパティ要素 の詳細)

    _<PropertyGroup>
      <Configuration>Debug</Configuration>
    </PropertyGroup>
    
    <Message Text="Configuration = $(Configuration)"/>
    _
  • @(...)Item値にアクセスするために使用されます( アイテム要素 の詳細)

    _<ItemGroup>
      <Reference Include="System.Data"/>
      <Reference Include="System.Web.*"/>
    </ItemGroup>
    
    <Message Text="References = @(Reference)"/>
    _
  • %(...)は、_Item Metadata_値にアクセスするために使用されます( アイテムメタデータ の詳細)。 バッチ処理 を実行するためにも使用されます。

    _<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)"/>
    _
87
Julien Hoarau

Dollar-$(MyProp): PropertyGroups内で指定された値を参照できます。

アットマーク-@(CodeFile): ItemGroups内で指定されたアイテムのリストを参照できます。

パーセント-%(CodeFile.BatchNum): メタデータを使用してバッチ処理されたItemGroup値を参照できます。これはもう少し複雑なので、詳細についてはドキュメントを必ず確認してください。

これらの使用方法の詳細については、各リンクをご覧ください。頑張ってください-これがお役に立てば幸いです!

16
Indolent Coder

%(アイテムメタデータ)の拡張機能として、既知のアイテムメタデータもあります: https://docs.Microsoft.com/en-us/visualstudio/msbuild/msbuild-well-known- item-metadata?view = vs-2017

例えば。 ModifiedTime:

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

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