私はMSBuildにかなり慣れておらず、VisualStudioに付属している組み込みのターゲットファイルの多くを確認しています。変数がいくつかの異なる方法で渡されるのを見てきましたが、これらの違いについてはよくわかりません。
$(...)
@(...)
%(...)
$(...)
は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)"/>
_
Dollar-$(MyProp): PropertyGroups内で指定された値を参照できます。
アットマーク-@(CodeFile): ItemGroups内で指定されたアイテムのリストを参照できます。
パーセント-%(CodeFile.BatchNum): メタデータを使用してバッチ処理されたItemGroup値を参照できます。これはもう少し複雑なので、詳細についてはドキュメントを必ず確認してください。
これらの使用方法の詳細については、各リンクをご覧ください。頑張ってください-これがお役に立てば幸いです!
%(アイテムメタデータ)の拡張機能として、既知のアイテムメタデータもあります: 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>