Visual Studio를 사용하여 웹 배포 ASP.NET: 명령줄 배포
작성자: Tom Dykstra
이 자습서 시리즈에서는 Visual Studio 2012 또는 Visual Studio 2010을 사용하여 ASP.NET 웹 애플리케이션을 Azure 앱 Service Web Apps 또는 타사 호스팅 공급자에 배포(게시)하는 방법을 보여 줍니다. 시리즈에 대한 자세한 내용은 시리즈의 첫 번째 자습서를 참조하세요.
개요
이 자습서에서는 명령줄에서 Visual Studio 웹 게시 파이프라인을 호출하는 방법을 보여줍니다. 이는 일반적으로 소스 코드 버전 제어 시스템을 사용하여 Visual Studio에서 수동으로 수행하는 대신 배포 프로세스를 자동화하려는 시나리오에 유용합니다.
배포를 변경합니다.
현재 정보 페이지에는 템플릿 코드가 표시됩니다.
이를 학생 등록 요약을 표시하는 코드로 바꾸겠습니다.
About.aspx 페이지를 열고 요소 내의 모든 태그를 MainContent
Content
삭제한 다음 해당 위치에 다음 태그를 삽입합니다.
<h2>Student Body Statistics</h2>
<asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
</asp:ObjectDataSource>
<asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="StudentStatisticsObjectDataSource">
<Columns>
<asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
ReadOnly="True" SortExpression="EnrollmentDate" />
<asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
SortExpression="StudentCount" />
</Columns>
</asp:GridView>
프로젝트를 실행하고 정보 페이지를 선택합니다.
명령줄을 사용하여 테스트에 배포
다른 데이터베이스 변경 내용은 배포하지 않으므로 aspnet-ContosoUniversity 데이터베이스에 대해 dbDacFx 데이터베이스 배포를 사용하지 않도록 설정합니다. 웹 게시 마법사를 열고 세 개의 게시 프로필 각각에서 설정 탭에서 데이터베이스 업데이트 확인란의 선택을 취소합니다.
Windows 8 시작 페이지에서 VS2012에 대한 개발자 명령 프롬프트를 검색합니다.
VS2012용 개발자 명령 프롬프트 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 클릭합니다.
명령 프롬프트에서 다음 명령을 입력하고 솔루션 파일의 경로를 솔루션 파일의 경로로 바꿉다.
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test
MSBuild는 솔루션을 빌드하고 테스트 환경에 배포합니다.
브라우저를 열고 이동한 http://localhost/ContosoUniversity
다음 정보 페이지를 클릭하여 배포가 성공했는지 확인합니다.
시험에서 학생을 만들지 않은 경우 학생 본문 통계 제목 아래에 빈 페이지가 표시됩니다. 학생 페이지로 이동하여 학생 추가를 클릭한 다음 일부 학생을 추가한 다음 정보 페이지로 돌아가 학생 통계를 확인합니다.
키 명령줄 옵션
입력한 명령이 솔루션 파일 경로와 두 개의 속성을 MSBuild에 전달했습니다.
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true
/p:PublishProfile=Test
솔루션 배포 및 개별 프로젝트 배포
솔루션 파일을 지정하면 솔루션의 모든 프로젝트가 빌드됩니다. 솔루션에 여러 웹 프로젝트가 있는 경우 다음 MSBuild 동작이 적용됩니다.
- 명령줄에서 지정하는 속성은 모든 프로젝트에 전달됩니다. 따라서 각 웹 프로젝트에는 지정한 이름의 게시 프로필이 있어야 합니다. 지정
/p:PublishProfile=Test
하는 경우 각 웹 프로젝트에는 Test라는 게시 프로필이 있어야 합니다. - 다른 프로젝트가 빌드되지 않을 때 한 프로젝트를 성공적으로 게시할 수 있습니다. 자세한 내용은 두 개의 패키지로 스택 오버플로 스레드 MSBuild가 실패하는 것을 참조하세요.
솔루션 대신 개별 프로젝트를 지정하는 경우 Visual Studio 버전을 지정하는 매개 변수를 추가해야 합니다. Visual Studio 2012를 사용하는 경우 명령줄은 다음 예제와 유사합니다.
msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0
Visual Studio 2010의 버전 번호는 10.0입니다. 자세한 내용은 Sayed Hashimi의 블로그에서 Visual Studio 프로젝트 호환성 및 VisualStudioVersion 을 참조하세요.
게시 프로필 지정
다음 예제와 같이 이름 또는 .pubxml 파일의 전체 경로로 게시 프로필을 지정할 수 있습니다.
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml
명령줄 게시에 지원되는 웹 게시 메서드
명령줄 게시에는 다음 세 가지 게시 메서드가 지원됩니다.
MSDeploy
- 웹 배포를 사용하여 게시합니다.Package
- 웹 배포 패키지를 만들어 게시합니다. 패키지를 만드는 MSBuild 명령과 별도로 설치해야 합니다.FileSystem
- 지정된 폴더에 파일을 복사하여 게시합니다.
빌드 구성 및 플랫폼 지정
빌드 구성 및 플랫폼은 Visual Studio 또는 명령줄에서 설정해야 합니다. 게시 프로필에는 이름이 지정 LastUsedBuildConfiguration
되고 LastUsedPlatform
속성이 포함되지만 프로젝트를 빌드하는 방법을 결정하기 위해 이러한 속성을 설정할 수는 없습니다. 자세한 내용은 MSBuild: Sayed Hashimi의 블로그에서 구성 속성을 설정하는 방법을 참조하세요.
스테이징에 배포
Azure에 배포하려면 명령줄에 암호를 추가해야 합니다. Visual Studio의 게시 프로필에 암호를 저장한 경우 .pubxml.user 파일에 암호화된 형식으로 저장됩니다. 명령줄 배포를 수행할 때 MSBuild에서 해당 파일에 액세스하지 않으므로 명령줄 매개 변수에서 암호를 전달해야 합니다.
스테이징 웹 사이트에 대해 이전에 다운로드한 .publishsettings 파일에서 필요한 암호를 복사합니다. 암호는 웹 배포
publishProfile
요소에userPWD
대한 특성의 값입니다.Windows 8 시작 페이지에서 VS2012용 개발자 명령 프롬프트를 검색하고 아이콘을 클릭하여 명령 프롬프트를 엽니다. (이번에는 로컬 컴퓨터의 IIS에 배포하지 않으므로 관리자 권한으로 열 필요가 없습니다.)
명령 프롬프트에서 다음 명령을 입력하고 솔루션 파일의 경로를 솔루션 파일의 경로와 암호를 암호로 바꿉다.
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
이 명령줄에는 추가 매개 변수
/p:AllowUntrustedCertificate=true
가 포함됩니다. 이 자습서를 작성AllowUntrustedCertificate
할 때 명령줄에서 Azure에 게시할 때 속성을 설정해야 합니다. 이 버그에 대한 수정 사항이 릴리스되면 해당 매개 변수가 필요하지 않습니다.브라우저를 열고 준비 사이트의 URL로 이동한 다음 정보 페이지를 클릭하여 배포가 성공했는지 확인합니다.
이전에 테스트 환경에 대해 보았듯이 정보 페이지에서 통계를 보려면 일부 학생을 만들어야 할 수 있습니다.
프로덕션에 배포
프로덕션에 배포하는 프로세스는 스테이징 프로세스와 유사합니다.
프로덕션 웹 사이트에 대해 이전에 다운로드한 .publishsettings 파일에서 필요한 암호를 복사합니다.
VS2012용 개발자 명령 프롬프트를 엽니다.
명령 프롬프트에서 다음 명령을 입력하고 솔루션 파일의 경로를 솔루션 파일의 경로와 암호를 암호로 바꿉다.
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
실제 프로덕션 사이트의 경우 데이터베이스 변경 내용도 있는 경우 일반적으로 배포 전에 사이트에 app_offline.htm 파일을 복사하고 배포에 성공한 후 삭제합니다.
브라우저를 열고 준비 사이트의 URL로 이동한 다음 정보 페이지를 클릭하여 배포가 성공했는지 확인합니다.
요약
이제 명령줄을 사용하여 애플리케이션 업데이트를 배포했습니다.
다음 자습서에서는 웹 게시 파이프라인을 확장하는 방법의 예를 볼 수 있습니다. 이 예제에서는 프로젝트에 포함되지 않은 파일을 배포하는 방법을 보여줍니다.