빌드 및 배포 기여자를 사용하여 데이터베이스 빌드 및 배포 사용자 지정

Visual Studio는 데이터베이스 프로젝트에 대한 빌드 및 배포 작업의 동작을 수정하는 데 사용할 수 있는 확장성 지점을 제공합니다.

사용 가능한 확장성 지점

다음 테이블에서 보여지듯이 확장점에 대한 확장을 만들 수 있습니다.

작업 기여자 유형 참고
빌드 BuildContributor 이 유형의 확장은 프로젝트 모델의 유효성을 완전히 검사한 후 SQL 프로젝트가 빌드될 때 실행됩니다. 빌드 기여자 빌드 작업의 모든 속성 및 사용자 지정 인수 외에도 완료된 모델에 액세스할 수 있습니다.
배포 DeploymentPlanModifier 이 유형의 확장은 배포 계획이 생성된 후 실행되기 전에 배포 파이프라인의 일부로 SQL 프로젝트가 배포될 때 실행됩니다. DeploymentPlanModifier를 사용하여 단계를 추가 또는 제거하여 배포 계획을 수정할 수 있습니다. 배포 기여자는 배포 계획, 비교 결과 및 원본 및 대상 모델에 액세스할 수 있습니다.
배포 DeploymentPlanExecutor 이 유형의 확장은 배포 계획이 실행될 때 실행되며, 배포 계획에 대한 읽기 전용 액세스를 제공합니다. DeploymentPlanExecutor는 배포 계획에 따라 작업을 수행합니다.

지원되는 확장성 시나리오

빌드 또는 배포 기여자를 구현하여 다음 예제 시나리오를 사용하도록 설정할 수 있습니다.

  • 프로젝트 빌드 중에 스키마 설명서 생성 - 이 시나리오를 지원하려면 BuildContributor를 구현하고 OnExecute 메서드를 재정의하여 스키마 설명서를 생성합니다. 확장을 실행할지 여부를 제어하고 출력 파일의 이름을 지정하는 기본 인수를 정의하는 대상 파일을 만들 수 있습니다.

  • SQL 프로젝트가 배포될 때 차이점 보고서 생성 - 이 시나리오를 지원하려면 SQL 프로젝트가 배포될 때 XML 파일을 생성하는 DeploymentPlanExecutor를 구현합니다.

  • 데이터 동작이 발생할 때 변경되도록 배포 계획 수정 - 이 시나리오를 지원하려면 DeploymentPlanModifier를 구현하고 배포 계획을 반복합니다. 해당 계획의 각 SqlTableMigrationStep에 대해 비교 결과를 조사해서 해당 단계를 수행하거나 건너 뛸지를 결정합니다.

  • SQL 프로젝트가 배포될 때 생성된 dacpac에 파일 복사 - 이 시나리오를 지원하려면 배포 기여자 구현하고 OnEstablishDeploymentConfiguration 메서드를 재정의하여 프로젝트 시스템에서 DeploymentExtensionConfiguration으로 표시된 파일을 지정합니다. 이러한 파일은 출력 폴더로 복사하고 생성된 dacpac 내에 추가해야 합니다. 또한 여러 파일을 출력 폴더에 복사되고 배포 매니페스트에 추가되는 하나의 새 파일로 병합하도록 참가자를 수정할 수도 있습니다. 배포하는 동안 OnApplyDeploymentConfiguration 메서드를 구현하여 dacpac에서 해당 파일을 추출하고 OnExecute 메서드에서 사용할 수 있도록 준비할 수 있습니다.

또한 데이터베이스 프로젝트 파일에 기록된 기여자 사용자 지정된 이름/값 인수 쌍을 공개할 수 있습니다. 이러한 인수를 사용하여 기여자가 MSBuild에서 정보를 추출하게 하거나 기여자의 최종 사용자가 동작을 사용자 지정할 수 있도록 설정할 수 있습니다. 예를 들어 사용자가 입력 또는 출력 파일의 이름을 지정하도록 허용할 수 있습니다.

일반 작업

일반 태스크 지원 내용
확장점에 대해 자세히 알아보세요. 빌드 및 배포 기여자 구현하는 데 사용하는 기본 클래스에 대해 읽어볼 수 있습니다. BuildContributor

DeploymentContributor
샘플 기여자 만들기: 빌드 또는 배포 기여자를 만드는 데 필요한 단계를 알아봅니다. 이러한 연습을 수행하면 다음이 가능합니다.

- 모델의 모든 요소를 나열하는 보고서를 생성하는 빌드 참가자를 만듭니다.
- 실행 전 배포 계획을 변경하는 배포 참가자를 만듭니다.
- SQL 프로젝트를 배포할 때 배포 보고서를 생성하는 배포 참가자를 만듭니다.

팀에 참가자를 분배하려는 방법에 따라 모든 참가자를 단일 어셈블리에 또는 여러 어셈블리 사이에 만들 수 있습니다.
연습: 데이터베이스 프로젝트 빌드를 확장하여 모델 통계 생성

연습: 데이터베이스 프로젝트 배포를 확장하여 배포 계획 수정

연습: 데이터베이스 프로젝트 배포를 확장하여 배포 계획 분석

참고 항목

SQL 단위 테스트에 대한 사용자 지정 조건 정의