2010-06-18 3 views
0

기본 Task 클래스에서 상속하여 사용자 지정 MSBuild 작업을 개발하고 있습니다. 내 작업은 Microsoft.Build.Tasks.dll에 선언 된 복사 작업을 호출하여 프로세스의 DestinationFolder 속성을 설정합니다. 내 사용자 지정 작업은 내가 가지고있는 문제는 그 때입니다 같은MSBuild는 사용자 지정 작업 매개 변수에서 % (RecursiveDir) 지시문을 가져옵니다.

<MyTask DestinationFolder="C:\Development\Test\%(RecursiveDir)" 

내가 매개 변수를 전달할 수있는 빌드/프로젝트 파일에서이 작업을 호출 할 때 대상 폴더의라는 속성이

public ITaskItem DestinationFolder { get; set; } 

로 선언있다 작업이 실행될 때 DestinationFolder 속성은 %(RecursiveDir) 비트에 대한 지식이없는 것으로 보입니다. 대신 C:\Development\Test\Bin으로 설정됩니다.

This question이 문제에 대한 해결 방법이 없다고 제안하는 것으로 보입니다. 이것은 분명히 사실입니까? 간단한 문자열로 속성을 선언 한 다음 TaskItem 개체를 즉석에서 만들고 DestinationFolder 문자열에 Special %(RecursiveDir) 명령이 들어 있으면 그에 따라 TaskItem 개체를 적절히 설정하는지 궁금합니다.

답변

0

링크 된 질문은 태스크의 출력 매개 변수를 다루며 여기서는 입력을 처리합니다. 여기서 문제는 DestinationFolder를 ITaskItem으로 선언했지만 문자열을 전달한다는 것입니다.

"C : \ Development \ Test \ Bin \ SomeFile.txt"라는 파일이 있다고 가정하고 정확히 무엇을 하려는지 예제를 제시하지 않았습니다.

<ItemGroup> 
    <DestinationFolderArgument Include="C:\Development\Test\**\SomeFile.txt" /> 
</ItemGroup> 
<MyTask DestinationFolder="@(DestinationFolderArgument)" /> 

지금 당신의 작업은 항목의 모든 메타 데이터에 액세스 할 수 있습니다, 그리고 RecursiveDir는 "빈 \"이 포함됩니다 : 같은 프로젝트에서 항목을 정의 할 수 있습니다.

관련 문제