Devo essere in grado di pubblicare un progetto SSDT a livello di codice. Sto cercando di utilizzare Microsoft.Build per farlo, ma non riesco a trovare alcuna documentazione. Sembra piuttosto semplice creare il .dacpac, ma come potrei pubblicare su un database esistente o almeno su un file .sql. L'idea è di farlo fare quello che fa quando faccio clic destro sul progetto e selezionare pubblicare. Dovrebbe essere confrontato con un database selezionato e generare uno script di aggiornamento.Utilizzo di Microsoft.Build.Evaluation per pubblicare un progetto di database (.sqlproj)
Questo è ciò che ho finora per creare il .dacpac:
partial class DBDeploy
{
Project project;
internal void publishChanges()
{
Console.WriteLine("Building project " + ProjectPath);
Stopwatch sw = new Stopwatch();
sw.Start();
project = ProjectCollection.GlobalProjectCollection.LoadProject(ProjectPath);
project.Build();
//at this point the .dacpac is built and put in the debug folder for the project
sw.Stop();
Console.WriteLine("Project build Complete. Total time: {0}", sw.Elapsed.ToString());
}
}
In sostanza io sto cercando di fare ciò che questo MSBuild Example spettacoli ma nel codice.
Mi dispiace che questo è tutto ciò che ho. La documentazione sulle classi di build è molto scarsa. Qualsiasi aiuto sarebbe apprezzato.
Grazie.
Avevo bisogno di fare riferimento sia agli assembly 'Microsoft.Build' che a' Microsoft.Build.Framework' per far funzionare questo codice. – Sam
Assicurati di controllare il valore di ritorno di 'Build' per vedere se ha avuto successo o meno. – Sam
Per monitorare gli eventi di compilazione, utilizzare 'ConfigurableForwardingLogger' e impostare' BuildEventRedirector' su un 'IEventRedirector' personalizzato. È possibile verificare gli errori controllando che 'buildEvent' sia un' BuildErrorEventArgs'. – Sam