2012-06-25 2 views
1

저는 MSBuild 초심자입니다. 지금까지 나는 'MakeTextFile'이라는 커스텀 태스크를 만들 수 있었다.이 태스크는 전달한 컨텐츠 속성을 기반으로 C : \에 텍스트 파일을 만든다. 이것은 명령 행 프롬프트에서 실행됩니다.Visual Studio에서 .targets 파일을 사용자 지정 빌드 작업과 함께 사용하려면 어떻게해야합니까?

나는 또한 (프로젝트 태그에서) 내 .targets 파일이 포함되어 있습니다

:

<ItemGroup> 
    <AvailableItemName Include="CreateTextFileAction" /> 
</ItemGroup> 

나는 지금 설정 항목 CreateTextFileAction '에 작업을 구축 할 수 .csproj 내 클라이언트 응용 프로그램에서 가져 오기 태그를 사용하는 경우 ',하지만 액션이 실행되지 않음 (C : \의 텍스트 파일이 생성되지 않음)

빌드 작업'CreateTextFileAction '으로 표시된 항목의 파일 경로를 모두 가져 와서 내 사용자 지정 작업으로 전달하는 방법 ?

는 참고로, 내 .targets 파일 :

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
     <AvailableItemName Include="CreateTextFileAction" /> 
    </ItemGroup> 

    <UsingTask AssemblyFile="CustomMSBuildTask.dll" TaskName="CustomMSBuildTask.MakeTextFile" /> 


    <Target Name="MyTarget"> 
     <MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" /> 
    </Target> 
</Project> 

답변

1

csproj 파일은이 목표의 설정하여 정의하고있다. 세 가지 주요 진입 점은 Build, Rebuild 및 Clean입니다. 이 대상에는 각각 종속성 세트가 있습니다. 표준 csproj 빌드의 일부로 자신의 목표를 작성하는 경우 이러한 종속성 내에서 적절한 주입 지점을 찾아야합니다.

쉽게 사용할 수 있도록 BeforeBuild 및 AfterBuild라는 두 가지 표준 대상을 재정의 할 수 있습니다. 이것을 csproj 파일 (csharp 대상 파일을 가져온 후에)에 정의하고 거기서 사용자 정의 작업을 호출하면 작동 할 것입니다 (또는 최소한 계속 진행해야합니다).

<Target Name="BeforeBuild"> 
     <MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" /> 
    </Target> 
관련 문제