몇 가지 매우 간단한 변경 사항으로 MSBuild BizTalk 프로젝트를 증분 컴파일 할 수 있습니다. 기본적으로 BizTalkCommon.targets
파일에 정의 된 두 개의 대상을 재정의해야합니다.
이러한 대상은 사용자의 .btproj 파일에서 재정의 될 수 있으며 BizTalk와 함께 제공되는 원래 .targets 파일을 수정할 필요가 없습니다.
예를 BizTalkCustom.targets
를 들어, 사용자 정의를 호스트하기 위해 당신이 .targets에게 파일을 소유
먼저 만드는 방법 : 당신의 .btproj 파일의 마지막 Import
문을 대체, 그리고
<Import Project="$(MSBuildExtensionsPath)\Microsoft\BizTalk\BizTalkC.targets" />
<!-- Rerun the build process (second pass) -->
<Target Name="SecondPass" Condition="$(SecondBuild)!=true and $(TempAssemblyOnly)!=true and @(XLang)!=''">
<MSBuild Projects="$(MSBuildProjectFile)" Properties="SecondBuild=true" />
</Target>
<!-- Compile XLang/s orchestration -->
<Target
Name="CompileODX"
Condition="$(SecondBuild)==true"
Inputs="@(XLang);$(MSBuildAllProjects);$(ClrTypesAssembly)"
Outputs="$(BuildDone)">
<!-- Delete previously generated C# files from XLang compilation -->
<Delete Files="@(IntermediateAssembly)" />
<Delete Files="@(CSharpOutputFromXLang)" />
<XLangTask XLangItems="@(XLang)"
ProjectReferences="@(ReferencePath)"
WarningLevel="$(WarningLevel)"
BpelCompliance="$(BpelCompliance)"
DefineConstants="$(DefineConstants)"
TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
TempAssembly="$(ClrTypesAssembly)"
OutputDirectory="$(XLangOutputPath)">
</XLangTask>
</Target>
:
를
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MyCustomExtensions)\BizTalkCustom.targets" />
어떻게 작동합니까?
BizTalk Server 프로젝트는 어떻게 든 두 단계로 컴파일해야합니다. 첫 번째 패스는 스키마, 맵 및 파이프 라인을 컴파일하는 반면 두 번째 패스는 오케스트레이션을 컴파일합니다.
오버라이드 된 타겟이 BizTalkCommon.targets file
내부에 정의 된 원래의 타겟과 매우 매우 비슷하다는 것을 알 수 있습니다.
첫 번째 변화는 SecondPass
목표를 수정하고 Condition
속성에 추가 테스트를 추가 포함 : 사실, 나는 두 가지 간단한 변경했습니다. 이 테스트는 프로젝트에 오케스트레이션이없는 경우에도 두 번째 패스가 발생하지 않도록하는 데 유용합니다.
불행하게도 프로젝트에 오케스트레이션이 포함되어 있으면 원래 SecondPass
대상이 중간 어셈블리를 삭제 한 다음 오케스트레이션을 컴파일합니다. 그러나 모든 파일이 이미 최신 상태 인 경우 CompileODX
대상을 실행할 필요가 없습니다.따라서 두 번째 변경은 작업을 SecondPass
대상에서 CompiledODX
대상으로 이동하는 것과 관련이 있습니다.
그게 전부입니다.
BizTalk 2010에서이 기능을 사용해 보셨습니까? –
은 BizTalk Server 2010에서 작동합니다. 그러나 BizTalk Server 2010 R2를 사용해 볼 기회는 없었습니다. –
시도해보십시오. 실제로 작동합니다. 빌드 시간이 크게 줄어 듭니다. 감사! –