먼저 WebDeployment 프로젝트를 사용해야합니다. 그러면 코드와 마크 업을 더 많이 컴파일하고 검사 할 수 있습니다. 자세한 내용은 here을 참조하십시오.
나는 DV [개발], PY [프로토 타입], PP [프리 프로덕션], PD [프로덕션] TFS의 모든 일치하는 분기를 설치했습니다. 이들 각각은 sln 구성 관리자에 항목이있어서 빌드해야하는 프로젝트와 빌드 플래그를 설정할 수 있습니다.
제대로 설정되면 배포 스크립트 설정을 시작할 수 있습니다. MSbuild를 사용하면 배포에 훨씬 더 세분화 된 접근 방식을 제공하므로 배포하는 것이 더 바람직합니다. MSbuild는 약간 이상하지만 시작 후에는 매우 강력합니다.
TeamBuild 구성에 추가 된 내 배포 스크립트는 다음과 같습니다. 기본적으로 볼 수 있듯이 라이브 서버에 복사하기 전에 포스트 빌드 정리를 수행합니다. 또한 2 개의 MSbuild 프레임 워크를 사용합니다 (상단에서 가져옴).
<Import Project="$(MSBuildExtensionsPath)\Microsoft\SDC Tasks - Release 2.1.3155.0\Microsoft.Sdc.Common.tasks"/>
<Import Project="$(MSBuildExtensionsPath)\FreeToDev\MSBuild Tasks Suite 3.5\FreeToDev.MSBuild.tasks"/>
<PropertyGroup>
<InetpubFolder>\\PathToInetPub</InetpubFolder>
<AppFolder>AppFolder</AppFolder>
<AppFolderPath>$(InetpubFolder)$(AppFolder)</AppFolderPath>
<WebDeployName>WebDeployProjectName</WebDeployName>
<Debug>0</Debug>
<AppConfiguration>DV</AppConfiguration>
</PropertyGroup>
<Target Name="AfterDropBuild">
<Message Text="Begin Release to $(AppConfiguration) Webserver" />
<Message Text="DropLocation = $(DropLocation)" />
<CallTarget Targets="PostBuildCleanUp" />
<CallTarget Targets="DeployApp" />
</Target>
<Target Name="DeployApp">
<GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)">
<Output TaskParameter="DropLocation" PropertyName="DropLocation"></Output>
</GetBuildProperties>
<PropertyGroup>
<CodeDropLocation>$(DropLocation)\$(AppConfiguration) Release</CodeDropLocation>
</PropertyGroup>
<ItemGroup>
<AppFilesToDelete Include="$(AppFolderPath)\**\*.*" Exclude="$(AppFolderPath)\Library\*.*;$(AppFolderPath)\App_Offline.htm;$(AppFolderPath)\jobs\**\*.*" />
</ItemGroup>
<ItemGroup>
<FilesToDeploy Include="$(CodeDropLocation)\$(AppFolder)\**\*.*" Exclude="" />
</ItemGroup>
<Copy SourceFiles="$(CodeDropLocation)\$(AppFolder)\App_Offline[RemoveToActivate].htm" DestinationFiles="$(AppFolderPath)\App_Offline.htm" OverwriteReadOnlyFiles="true"/>
<Message Text="Deleting files in $(AppFolderPath)" />
<Microsoft.Sdc.Tasks.File.DeleteFiles Files="@(AppFilesToDelete)" Force="true" Condition="$(Debug)==0" />
<Message Text="Copy $(CodeDropLocation)\$(AppFolder) to $(AppFolderPath)" />
<Copy Condition="$(Debug)==0" SourceFiles="@(FilesToDeploy)" DestinationFiles="@(FilesToDeploy->'$(AppFolderPath)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true"/>
<Message Text="Deploy to $(AppConfiguration) Completed" />
<Microsoft.Sdc.Tasks.File.DeleteFiles Files="$(AppFolderPath)\App_Offline.htm" Force="true" />
<OnError ExecuteTargets="ErrorHandler" />
</Target>
<Target Name="ErrorHandler">
<Message Text="Error encountered!!" />
</Target>
<Target Name="PostBuildCleanUp">
<GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)">
<Output TaskParameter="DropLocation" PropertyName="DropLocation"></Output>
</GetBuildProperties>
<PropertyGroup>
<CodeDropLocation>$(DropLocation)\$(AppConfiguration) Release</CodeDropLocation>
</PropertyGroup>
<ItemGroup>
<PostBuildCleanUpFilesToDelete Include="$(CodeDropLocation)\*.*;$(CodeDropLocation)\bin\*.xml;$(CodeDropLocation)\bin\*.pdb"/>
</ItemGroup>
<RemoveDir Directories="$(CodeDropLocation)\_PublishedWebsites\Web" />
<Microsoft.Sdc.Tasks.File.DeleteFiles Files="@(PostBuildCleanUpFilesToDelete)" Force="true">
<Output TaskParameter="DeletedFiles" ItemName="FilesThatWereDeleted" />
</Microsoft.Sdc.Tasks.File.DeleteFiles>
<Message Text="The files that were removed were @(FilesThatWereDeleted)" />
<FTDFolder TaskAction="Move" Path="$(CodeDropLocation)\_PublishedWebsites\$(WebDeployName)" TargetPath="$(CodeDropLocation)\$(AppFolder)"/>
<RemoveDir Directories="$(CodeDropLocation)\_PublishedWebsites" />
<RemoveDir Directories="$(CodeDropLocation)\$(AppFolder)\WebDeploy" />
<OnError ExecuteTargets="ErrorHandler" />
</Target>
분명히 시스템 설정을 수정해야합니다. 또한 새 빌드 건너편을 복사하기 전에 대상 폴더를 지 웁니다. 이는 시스템이 깨끗한 지 확인하기위한 것이지만 분명히 ExcludedFiles 목록에 보관해야하는 항목을 추가해야합니다.
기본 응용 프로그램 프로젝트의 각 환경에 대한 폴더도 있습니다. 이것은 web.config 대체 (WebDeployment 프로젝트의 다른 기능) 및 기타 환경 관련 파일을 보유합니다.
제대로 작동하려면 시간이 오래 걸리지 만 잘하면 시작됩니다! (분명히이 apporach를 선택했다면!)
여기에 설명 된 내용을 설명하는 다른 리소스를 발견했습니다. 예전의 소스 제어 시스템에서 웹 응용 프로그램을 성공적으로 마이그레이션하고, 빌드를 생성하고 복사 명령 – kd7