Necesito poder publicar un proyecto SSDT programáticamente. Estoy buscando utilizar Microsoft.Build para hacerlo, pero no puedo encontrar ninguna documentación. Parece bastante simple crear el .dacpac, pero ¿cómo podría publicarlo en una base de datos existente o al menos en un archivo .sql? La idea es hacer que haga lo que hace cuando haga clic derecho en el proyecto y seleccione publicar. Se debe comparar con una base de datos seleccionada y generar un script de actualización.Uso de Microsoft.Build.Evaluation para publicar un proyecto de base de datos (.sqlproj)
Esto es lo que tengo hasta ahora para crear el .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());
}
}
Esencialmente estoy tratando de hacer lo que esta MSBuild Example espectáculos, pero en el código.
Disculpa que esto es todo lo que tengo. La documentación en las clases de compilación es muy pobre. Cualquier ayuda sería apreciada.
Gracias.
Necesitaba hacer referencia a los ensamblados 'Microsoft.Build' y' Microsoft.Build.Framework' para que este código funcione. – Sam
Asegúrese de verificar el valor de retorno de 'Build' para ver si fue exitoso o no. – Sam
Para monitorear eventos de compilación, use 'ConfigurableForwardingLogger' y establezca' BuildEventRedirector' en un 'IEventRedirector' personalizado. Puede verificar si hay errores al verificar si 'buildEvent' es' BuildErrorEventArgs'. – Sam