저는 MS Build를 처음 접했으며 Visual Studio와 함께 제공되는 많은 기본 제공 대상 파일을 검토했습니다. 변수가 몇 가지 다른 방법을 전달하는 것을 보았지만 이들 간의 차이점을 잘 모르겠습니다.
$(...)
@(...)
%(...)
답변:
$(...)
Property
값 에 액세스하는 데 사용됩니다 ( Property 요소 에 대한 자세한 정보 )
<PropertyGroup>
<Configuration>Debug</Configuration>
</PropertyGroup>
<Message Text="Configuration = $(Configuration)"/>
@(...)
Item
값 에 액세스하는 데 사용됩니다 ( 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)"/>
달러-$ (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>