2

Возможно ли создать «свежий» файл .dacpac из существующего проекта SSDT? Я хотел бы иметь возможность восстановить базу данных (Teardown + установка) перед каждым автоматическим концом в конец теста:Создать файл dacpac программно из проекта SSDT

const string dacPacFileName = @"D:\Bla.dacpac"; 
var connectionString = ConfigurationManager.ConnectionStrings["BlaConnectionString"].ConnectionString; 

var dacPackage = DacPackage.Load(dacPacFileName); 
var dacServices = new DacServices(connectionString);  
var dacOptions = new DacDeployOptions(); 
dacOptions.CreateNewDatabase = true; 
dacServices.Deploy(dacPackage, "Bla", true, dacOptions); 
+1

Вы посмотрели сообщение: http://stackoverflow.com/questions/10438258/using-microsoft-build-evaluation-to-publish-a-database-project-sqlproj? –

+0

@DavidTansey - извините, но в какой момент код создает необходимый ('свежий') файл dacpac, необходимый выше в строке const dacPacFileName = @ "D: \ Bla.dacpac" ;? – cs0815

+0

Возможно я могу опубликовать проект ssdt напрямую, а не использовать файл dacpac? – cs0815

ответ

1

Я сделал это с помощью PowerShell с помощью вызывающего что-то вроде

> msbuild.exe <mysolution>.sln /p:Configuration=<myconfig> 

Это построит решение и должно сделать dacpac.

После того, что я называю

> sqlpackage.exe /Action:<someaction> /SourceFile:<thatdacpac> /Profile:<publishprofile> 

но вы можете просто нужен первый шаг, если развертывание dacpac в отличии от выполнения схемы сравнения и публикации. Это вообще помогает?

+1

Отлично. Я надеялся, что смогу сделать это «чисто программно» (как в C# см. Пример в моем вопросе), но неважно (-: – cs0815