我已设法使其按本文所述工作:https://erikej.github.io/efcore/2020/05/11/ssdt-dacpac-netcore.html https://erikej.github.io/efcore/2020/05/11/ssdt-dacpac-netcore.html
它需要特殊类型的 .NET Standard Visual Studio 项目 -MSBuild.Sdk.SqlProj
(nuget 下载),编译时从数据库项目复制脚本。
这是我的 build_database.cmd 代码:
SET db_project=Database.Build
dotnet tool install -g dotnet-script
cd %db_project%
dotnet build
dotnet-script Program.csx
以及一个 C# 脚本 (Program.csx),它使用以下命令创建并部署 .dacpacMicrosoft.SqlServer.DACFx
努吉特包:
#r "nuget: Microsoft.SqlServer.DACFx, 150.4769.1"
using Microsoft.SqlServer.Dac;
var dbName = "SampleDatabase";
var connectionString = $"Data Source=.;Initial Catalog={dbName};Integrated Security=True;";
var dacpacLocation = Directory.GetFiles(@".\bin", "Database.Build.dacpac",
SearchOption.AllDirectories)[0];
var dbPackage = DacPackage.Load(dacpacLocation);
var services = new DacServices(connectionString);
services.Deploy(dbPackage, dbName, true);
这种方法是完全自动化的,可以在 CI 或本地开发环境中使用,而且显然也是跨平台的(尽管我只在 Windows 上进行了测试)。
希望这可以帮助 :)