Condividi tramite


Personalizzare la compilazione e la distribuzione del database tramite collaboratori alla compilazione e distribuzione

Visual Studio fornisce punti di estendibilità che è possibile utilizzare per modificare il comportamento delle azioni di compilazione e distribuzione per i progetti di database.

Punti di estendibilità disponibili

È possibile creare un'estensione per i punti di estendibilità, come illustrato nella tabella seguente:

Azione Tipo di collaboratore Note
Compilazione BuildContributor Questo tipo di estensione viene eseguito quando il progetto SQL viene compilato dopo che il modello di progetto è stato completamente convalidato. Il collaboratore alla compilazione può accedere al modello completato, oltre a tutte le proprietà dell'attività di compilazione e a qualsiasi argomento personalizzato.
Distribuzione DeploymentPlanModifier Questo tipo di estensione viene eseguito quando il progetto SQL viene distribuito, come parte della pipeline di distribuzione, dopo che il piano di distribuzione è stato generato ma prima che venga eseguito. È possibile utilizzare DeploymentPlanModifier per modificare il piano di distribuzione aggiungendo o rimuovendo passaggi. I collaboratori alla distribuzione possono accedere al piano di distribuzione, ai risultati del confronto e ai modelli di origine e destinazione.
Distribuzione DeploymentPlanExecutor Questo tipo di estensione viene eseguito quando il piano di distribuzione viene eseguito e fornisce accesso in sola lettura al piano di distribuzione. DeploymentPlanExecutor esegue azioni in base al piano di distribuzione.

Scenari di estendibilità supportati

È possibile implementare i collaboratori alla compilazione o distribuzione per consentire gli scenari di esempio seguenti:

  • Generare la documentazione dello schema durante una compilazione del progetto: per supportare questo scenario, implementare un elemento BuildContributor ed eseguire l'override del metodo OnExecute per generare la documentazione dello schema. È possibile creare un file targets che definisce gli argomenti predefiniti che controllano se l'estensione viene eseguita e per specificare il nome del file di output.

  • Generare un report delle differenze quando un progetto SQL viene distribuito: per supportare questo scenario, implementare DeploymentPlanExecutor che genera il file XML quando viene distribuito il progetto SQL.

  • Modificare il piano di distribuzione per modificare quando viene effettuato lo spostamento dei dati: per supportare questo scenario, implementare DeploymentPlanModifier ed eseguire l'iterazione del piano di distribuzione. Per ogni SqlTableMigrationStep nel piano, esaminare il risultato del confronto per determinare se il passaggio deve essere eseguito o ignorato.

  • Copiare i file nel dacpac generato quando viene distribuito un progetto SQL: per supportare questo scenario, implementare un collaboratore alla distribuzione ed eseguire l'override del metodo OnEstablishDeploymentConfiguration per specificare quali file sono contrassegnati come DeploymentExtensionConfiguration dal sistema del progetto. Questi file devono essere copiati nella cartella di output e aggiunti all'interno del dacpac generato. È anche possibile modificare il collaboratore per unire più file in un nuovo file copiato nella cartella di output e aggiunto al manifesto di distribuzione. Durante la distribuzione, è possibile implementare il metodo OnApplyDeploymentConfiguration per estrarre questi file da dacpac e prepararli per l'utilizzo nel metodo OnExecute.

È inoltre possibile esporre coppie personalizzate di argomenti nome/valore dal collaboratore scritti nel file progetto di database. È possibile utilizzare questi argomenti per consentire al collaboratore di estrarre informazioni da MSBuild o per consentire all'utente finale del collaboratore di personalizzare il comportamento. Ad esempio, è possibile consentire agli utenti di specificare il nome di un file di input o di output.

Attività comuni

Attività comuni Contenuto di supporto
Altre informazioni sui punti di estendibilità: altre informazioni sulle classi di base usate per implementare i collaboratori alla compilazione e alla distribuzione. BuildContributor

DeploymentContributor
Creare collaboratori di esempio: informazioni sui passaggi necessari per creare un collaboratore alla compilazione o alla distribuzione. Se si utilizzano queste procedure dettagliate, è necessario:

Creare un collaboratore alla compilazione che genera un report in cui sono elencati tutti gli elementi del modello.
Creare un collaboratore alla distribuzione che modifica il piano di distribuzione prima che venga eseguito.
Creare un collaboratore alla distribuzione che genera un report di distribuzione quando si distribuisce un progetto SQL.

È possibile creare tutti i collaboratori in un unico assembly o tra più assembly, a seconda di come si desidera che i collaboratori vengano distribuiti al team.
Procedura dettagliata: Estendere la compilazione del progetto del database per generare statistiche del modello

Procedura dettagliata: estendere la distribuzione del progetto di database per modificare il piano di distribuzione

Procedura dettagliata: estendere la distribuzione del progetto di database per analizzare il piano di distribuzione

Vedi anche

Definire condizioni personalizzate per unit test SQL