문제

확장되지 않은 속성 참조를 포함하는 MSBuild 속성을 만들 수 있습니다.다음은 그 예입니다.

텍스트 파일 property.txt에는 한 줄이 포함됩니다.

$(SomeProperty)

다음과 같은 msbuild 스크립트로 처리 할 수 있습니다.

<ItemGroup>
  <PropertyFile Include="property.txt"/>
</ItemGroup>

<!-- Standart task for file reading -->
<ReadLinesFromFile File="@(PropertyFile)" >
  <Output
      TaskParameter="Lines"
      ItemName="ItemsFromFile"/>
</ReadLinesFromFile>

<!-- Property LastLine now has value $(SomeProperty) -->
<PropertyGroup>
  <LastLine>%(ItemsFromFile.Identity)</LastLine>     
</PropertyGroup>

<Message Text="$(LastLine)"/>

이제 CurrentLine에 포함 된 속성 참조를 확장하고 싶습니다.가능합니까?

도움이 되었습니까?

해결책

파일에 나열된 단일 속성이 될 수있는 모든 속성을 미리 알고있는 경우 항목 필터링을 사용하여이를 수행 할 수있는 방법이 있습니다. 주의 사항 :

1) 속성 함수를 사용하여 문자열을 구문 분석하지 않으려면 $ (PropertyName)이 아닌 PropertyName 만 파일에 지정합니다.

2) 아래 접근 방식을 사용하면 파일에 한 줄만있을 수 있습니다. 여러 줄의 경우 추가 수준의 일괄 처리가 필요합니다. 라코 디스

위의 구성은 $ (SomeProperty) 및 $ (SomeOtherProperty)의 두 가지 후보 속성을 설정합니다. 이 예에서 property.txt의 내용은 한 줄이었습니다 ... 라코 디스

... 값이 1 인 $ (SomeProperty)와 관련이 있습니다. 라코 디스

위는 아래의 기본 타겟에 대한 두 개의 종속 타겟입니다. 이들은 @ (ChooseProperty) 항목 그룹에서 대상 일괄 처리와 함께 사용할 항목 그룹에 게시되도록 종속 대상을 사용하여 파일을 읽습니다. 주목해야 할 핵심 사항은 @ (_ FilteredItems) 항목 그룹의 생성 조건이며, 이로 인해 단일 구성원을 포함합니다 ... 라코 디스

... 조건이 작동하도록하기 위해 일괄 처리 된 항목 메타 데이터가 이러한 임시 속성으로 전송된다는 점에 유의하십시오 (이것이 파일에 단일 항목 만 있도록 한 줄만 포함 할 수있는 이유입니다). 라코 디스

... 마지막으로 $ (LastLine) 속성은 @ (_ FilteredItems)의 단일 항목에서 가져옵니다. 결과 출력은 다음과 같습니다. 라코 디스

'SomeOtherProperty'를 포함하도록 property.txt를 변경하면 다음과 같은 결과가 나타납니다. 라코 디스

다른 팁

이러한 방식으로 새 속성을 만들 수 없습니다.속성 이름을 동적으로 만들 수 없습니다.빌드 프로세스를 수정할 수 있습니다.예 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top