Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SSDT项目以编程方式创建dacpac文件_C#_Sql Server_Sql Server 2014_Sql Server Data Tools_Sql Server Data Project - Fatal编程技术网

C# 从SSDT项目以编程方式创建dacpac文件

C# 从SSDT项目以编程方式创建dacpac文件,c#,sql-server,sql-server-2014,sql-server-data-tools,sql-server-data-project,C#,Sql Server,Sql Server 2014,Sql Server Data Tools,Sql Server Data Project,是否可以从现有SSDT项目中创建“新的”.dacpac文件?我希望能够在每次自动端到端测试之前重新创建数据库(拆卸+设置): const string dacPacFileName = @"D:\Bla.dacpac"; var connectionString = ConfigurationManager.ConnectionStrings["BlaConnectionString"].ConnectionString; var dacPackage = DacPackage.Load(da

是否可以从现有SSDT项目中创建“新的”
.dacpac
文件?我希望能够在每次自动端到端测试之前重新创建数据库(拆卸+设置):

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); 

我使用PowerShell通过调用类似

> msbuild.exe <mysolution>.sln /p:Configuration=<myconfig>
>msbuild.exe.sln/p:配置=
这将构建解决方案,并使dacpac

之后我打电话

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

但是,如果部署dacpac而不是进行模式比较和发布,则可能只需要第一步。这有帮助吗?

你看过这篇文章了吗:?@DavidTansey-对不起,那里的代码在什么时候创建了上面所需的('fresh')dacpac文件,该文件位于const string dacPacFileName=@“D:\Bla.dacpac”;?也许我可以直接发布ssdt项目,而不是使用dacpac文件?太好了。我希望我可以“纯粹以编程方式”完成这项工作(如C中所示,请参见我问题中的示例),但没关系(-:在方法中使用此代码并尝试一下。不要忘记用字段替换数据您可以从现有数据库创建dacpac
var process = new System.Diagnostics.Process();
var startInfo = new System.Diagnostics.ProcessStartInfo
{
    WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
    FileName = @"C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe",
    Arguments = "/TargetFile:D:/output_target.dacpac /Action:Extract 
                /SourceServerName:ServerName /SourceDatabaseName:DatabaseName 
                /SourceUser:UserId /SourcePassword:Password"
};
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();