Presentation is loading. Please wait.

Presentation is loading. Please wait.

Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine

Similar presentations


Presentation on theme: "Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine"— Presentation transcript:

1 Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine
Inside MSBuild Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine

2 MSBuild 개요 MS의 새로운 빌드 플랫폼 Visual Studio가 설치되어 있지 않아도 빌드가능 프로젝트 파일
항목 (Item) 속성 (Property) 작업 (Task) 대상 (Target) 로깅 (Logging)

3 항목 (Item) <Project xmlns=" <ItemGroup> <Stuff Include=“*.cs" Exclude = “One.cs”> <Display>false</Display> </Stuff> <Stuff Include="Two.cs"> <Display>true</Display> </ItemGroup> <Target Name="Batching"> <Message Condition=" '%(Display)' == 'true' "/> </Target> </Project>

4 항목 (Item) 빌드 시스템에 대한 입력 항목 컬렉션으로 그룹화 빌드 프로세스의 단계를 수행하는 작업의 매개 변수
ItemGroup 노드의 자식노드 와일드 카드 사용 (**, * , ?) Ex) Include="Images\\**\*.jpg" - Images 폴더부터 모든 하위 폴더 에서 확장자가 jpg인 파일만 찾는다. Exclude 특성 사용 항목 참조 항목 메타데이타 Ex) <Display>false</Display> 항목 메타데이타 참조 : %(ItemMetadataName) or %(ItemCollectionName.ItemMetaDataName)

5 항목 (Item) 항목 메타데이터 설명 %(FullPath) 항목의 전체 경로를 포함합니다.
C:\MyProject\Source\Program.cs %(RootDir) 항목의 루트 디렉터리를 포함합니다. C:\ %(Filename) 확장명을 제외한 항목의 파일 이름을 포함합니다. %(Extension) 항목의 파일 이름 확장명을 포함합니다. .cs %(RelativeDir) 현재 작업 디렉터리에 상대적인 디렉터리 경로를 포함합니다. Source\ %(Directory) 항목의 루트 디렉터리를 제외한 디렉터리를 포함합니다. MyProject\Source\ %(RecursiveDir) Include 특성에 와일드카드 **가 있는 경우 이 메타데이터는 와일드카드를 대체한 디렉터리를 지정하여 항목을 찾습니다. <ItemGroup> <MyItem Include="C:\**\Program.cs" /> </ItemGroup> %(Identity) Include 특성에 지정된 항목입니다. 예를 들면 다음과 같습니다. Source\Program.cs %(ModifiedTime) 항목이 마지막으로 수정된 시간의 타임스탬프를 포함합니다. :21: %(CreatedTime) 항목이 만들어진 시간의 타임스탬프를 포함합니다. :26: %(AccessedTime) 시간이 마지막으로 액세스된 시간의 타임스탬프를 포함합니다. :52:

6 속성 (Property) <Project DefaultTargets = "Compile">
<ItemGroup> <CSFile Include = "consolehwcs1.cs"/> </ItemGroup> <PropertyGroup> <OutputType>WinExe</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>Framework.Tools.ErWinParser</RootNamespace> <AssemblyName>Framework.Tools.ErWinParser</AssemblyName> </PropertyGroup> <Target Name = "Compile"> <CSC Sources = OutputAssembly = "$(MSBuildProjectName).exe" > <!-- Set the OutputAssembly attribute of the CSC task to the name of the project --> <Output TaskParameter = "OutputAssembly" ItemName = "EXEFile" /> </CSC> <!-- Log the file name of the output file --> <Message Text="The output file </Target> </Project>

7 속성 (Property) 키 / 값 쌍으로 이루어 진다. 항목은 컬렉션에 저장 되지만 속성은 단일 스칼라 값을 포함한다.
메타데이타를 포함하지 않는다. PropertyGroup 노드의 자식노드 속성참조 : $(PropertyName) 명령줄 /property or /p

8 속성 (Property) 예약 속성 설명 MSBuildProjectDirectory
프로젝트 파일이 있는 디렉터리의 절대 경로입니다. C:\MyCompany\MyProduct MSBuildProjectFile 파일 이름 확장명을 포함하는 프로젝트 파일의 전체 파일 이름 MyApp.proj MSBuildProjectExtension 마침표를 포함하는 프로젝트 파일의 파일 이름 확장명 .proj MSBuildProjectFullPath 프로젝트 파일의 절대 경로와 전체 파일 이름 C:\MyCompany\MyProduct\MyApp.proj MSBuildProjectName 파일 이름 확장명을 제외한 프로젝트 파일의 파일 이름 MyApp MSBuildBinPath 현재 사용되고 있는 MSBuild 이진 파일이 있는 디렉터리의 절대 경로 C:\Windows\Microsoft.Net\Framework\v2.0 MSBuildProjectDefaultTargets 기본 Target <Project DefaultTargets="A;B;C" > MSBuildExtensionsPath Program Files 디렉터리 아래의 MSBuild 폴더입니다. 이 위치는 사용자 지정 대상 파일을 넣는 데 유용합니다. 예를 들어, 대상 파일을 \Program Files\MSBuild\MyFiles\Northwind.targets에 설치한 후 다음 XML을 사용하여 프로젝트 파일로 가져올 수 있습니다. <Import Project="$(MSBuildExtensionsPath)\MyFiles\Northwind.targets"/>

9 속성 (Property) 환경변수 항목은 컬렉션에 저장 되지만 속성은 단일 스칼라 값을 포함한다.
메타데이타를 포함하지 않는다. PropertyGroup 노드의 자식노드 속성참조 : $(PropertyName) 명령줄 /property or /p

10 작업 (Task) <Project xmlns=" <ItemGroup> <Stuff Include=“*.cs" Exclude = “One.cs”> <Display>false</Display> </Stuff> <Stuff Include="Two.cs"> <Display>true</Display> </ItemGroup> <Target Name="Batching"> <Message Condition=" '%(Display)' == 'true' "/> </Target> </Project>

11 작업 (Task) 재사용 가능한 실행 코드 단위 Managed Code 로 작성 (C#, VB.NET 등)
Using Task 문 ITask 인터페이스 구현

12 작업 (Task) Using Task <UsingTask TaskName="TaskName" AssemblyName = “AsmName" Condition="'String A'=='String B'" />

13 작업 (Task) Using Task <UsingTask TaskName="TaskName" AssemblyName = “AsmName" Condition="'String A'=='String B'" /> Using Task 특성 설명 AssemblyName AssemblyName 또는 AssemblyFile 특성이 필요합니다. 로드할 어셈블리의 이름입니다. AssemblyName 특성에서는 강력한 이름의 어셈블리를 허용하지만 필수적 요소는 아닙니다. AssemblyFile 특성을 사용하는 경우에는 이 특성을 사용할 수 없습니다 AssemblyFile 어셈블리의 파일 경로입니다. 이 특성에는 전체 경로와 상대 경로를 모두 사용할 수 있습니다. 상대 경로는 현재 프로젝트 디렉터리를 기준으로 합니다. AssemblyName 특성을 사용하는 경우에는 이 특성을 사용할 수 없습니다. TaskName 필수 특성입니다. 어셈블리에서 참조할 작업의 이름입니다. 모호성이 발생할 가능성이 있으면 이 특성에 항상 전체 네임스페이스를 지정해야 합니다. Condition 선택적 특성입니다.

14 작업 (Task) 작업 참조 (ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/dv_fxgenref/html/b3144b27-a b8ae-5f7991b202b6.htm) Copy Task Delete Task Exec Task MakeDir Task Message Task Csc Task Vbc Task 기타

15 대상 (Target) Target DependsOnTargets
<Target Name="Build" DependsOnTargets="Resources"> <Csc Sources="hello.cs" OutputAssembly="hello.exe"/> </Target>

16 로깅 (Logging) MSBuild 로거 빌드 Event, , 메시지, 경고 및 오류 정보 Console 로거 : 파일로거
/consoleloggerparameters - 사용 /noconsolelogger - 비활성화 파일로거 /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log Ex ) MSBuild MyProj.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log append=true;verbosity=diagnostic;encoding=utf-8 ILogger 인터페이스 구현 Logger 클래스 상속


Download ppt "Compile Apps Your Way With Custom Tasks For The Microsoft Build Engine"

Similar presentations


Ads by Google