MSBuild에서 변수를 전달하는 다양한 방법


78

저는 MS Build를 처음 접했으며 Visual Studio와 함께 제공되는 많은 기본 제공 대상 파일을 검토했습니다. 변수가 몇 가지 다른 방법을 전달하는 것을 보았지만 이들 간의 차이점을 잘 모르겠습니다.

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

답변:


96
  • $(...)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)"/>
    

19

달러-$ (MyProp) : PropertyGroups에 지정된 값을 참조 할 수 있습니다.

서명시-@ (CodeFile) : ItemGroups 내에 지정된 항목 목록을 참조 할 수 있습니다.

백분율-% (CodeFile.BatchNum) : 메타 데이터를 사용하여 일괄 처리 된 ItemGroup 값을 참조 할 수 있습니다. 이것은 조금 더 복잡하므로 자세한 정보는 문서를 확실히 검토하십시오.

사용 방법에 대한 자세한 정보는 각 링크를 참조하십시오. 행운을 빕니다-이것이 도움이되기를 바랍니다!


0

% (항목 메타 데이터)에 대한 약간의 확장, 잘 알려진 항목 메타 데이터도 있습니다. 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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.