2009-10-20 2 views
0

MSBuild를 사용하여 Visual Studio, WiX, SandCastle, ... 프로젝트의 빌드 프로세스를 사용자 지정하고 있습니다. 가능한 한 포괄적으로 유지하려면 파일을로드해야하는 위치, 실행할 사용자 지정 실행 파일과 같은 '프로젝트 별'설정을 정의하는 텍스트 파일을 사용하고 싶습니다.MSBuild : ReadLinesFromFile로 예약 된 속성 평가

텍스트 파일은 다음과 같이 수 : $ (MSBuildProjectDirectory) .... \ 프로젝트 \ Project1의 \ 빈 \ 릴리스를 obj \의 $ (구성) \ Project1.Files.wxi -in * .DLL -id TEST

각 줄은 하나의 명령 또는 파일을 나타냅니다.

내 대상 안에는 ReadLinesFromFile을 사용하여 이러한 파일의 내용을 가져옵니다. 지금까지 너무 좋아!

문제는 '$ (Configuration), $ (MSBuildProjectDirectory)'와 같은 예약 된 속성은 평가할 때 평가되지 않으므로 일반 텍스트로 처리된다는 것입니다.

사용자 지정 작업을 만들지 않고 $ placeholder를 평가할 수있는 방법에 대한 아이디어가 있습니까?

미리 감사드립니다.

감사합니다. robert.oh.

답변

1

오히려 자신을 라인을 읽고 모든 것을 분석하는 것보다, 왜 별도의 파일을 만들 수 없습니다 (이름, 예를 들어, "local.build.config") 파일의

<PropertyGroup> 
    <someproperty>$(MSBuildProjectDirectory)..\Projects\Project1\bin\Release</someproperty> 
</PropertyGroup> 

정보를 가지고 있으며, 그 다음 실제 프로젝트에 빌드의 상단에 이와 같은 선을 사용하여 파일의 가져 오기를 수행

<Import Project="local.build.config" Condition="Exists('local.build.config')"/> 

은 MSBuild에서 엔진이 가장 좋은 것이 무엇을 할 수 있도록함으로써 바퀴를 재발 방지합니다.

+0

고마워요!
내 명령 목록 (하나의 명령 당 하나의 항목)에 ItemGroups를 사용하고 있으며 모든 것이 이제는 잘 작동합니다. –

+0

+1 좋은 생각인데, 저에게 맞는 예제를 얻으려면 PropertyGroup을 에 추가해야했습니다. –