.net Visual Studio SSDT数据库项目(.sqlproj)生成-使用CLI生成.dacpac而不使用MSBUILD(MSBUILD.exe)

.net Visual Studio SSDT数据库项目(.sqlproj)生成-使用CLI生成.dacpac而不使用MSBUILD(MSBUILD.exe),.net,visual-studio,msbuild,dacpac,dotnet-cli,.net,Visual Studio,Msbuild,Dacpac,Dotnet Cli,看起来dotnet CLI不支持数据库项目。根据以下内容: 在我的情况下,dotnet构建失败,出现以下错误: C:…*.Database.sqlproj59,3: 错误MSB4019:导入的项目为C:\Program Files\dotnet\sdk\3.1.301\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets 找不到。确认导入声明中的表达式 C:\程序 Files\dotnet\s

看起来dotnet CLI不支持数据库项目。根据以下内容:

在我的情况下,dotnet构建失败,出现以下错误:

C:…*.Database.sqlproj59,3: 错误MSB4019:导入的项目为C:\Program Files\dotnet\sdk\3.1.301\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets 找不到。确认导入声明中的表达式 C:\程序 Files\dotnet\sdk\3.1.301\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets 正确,并且该文件存在于磁盘上

不用说,该解决方案通过Visual Studio中的内置编译并生成.dacpac。我需要这个从命令行工作。除了msbuild.exe,我还有其他解决方案吗?也许有一些可爱的裸体包能帮上忙

除了msbuild.exe,我还有其他解决方案吗?也许是一些可爱的 有什么可以帮到你的吗

实际上,除了msbuild.exe之外,没有其他生成工具可以生成数据库项目。因此,您必须使用msbuild.exe

自VS2017以来,msbuild.exe有一个不依赖于VS IDE的单独版本,称为VS的Build Tool,它是与VS工作负载环境集成的生成命令行

因此,我认为您希望在构建服务器上使用轻量级构建工具,而不是庞大的VS IDE,如果是这样,您应该下载它

暗示

1在所有下载->Visual Studio 2019工具->Visual Studio 2019构建工具下下载

2记住选择相应的工作负载数据存储和处理构建工具


完成后,您可以使用它构建数据库项目。

我已设法使其按本文所述工作:

它需要一种特殊类型的.NET标准Visual Studio项目-MSBuild.Sdk.SqlProj nuget download,它在编译时从数据库项目复制脚本

以下是我的build_database.cmd代码:

SET db_project=Database.Build
dotnet tool install -g dotnet-script  
cd %db_project%
dotnet build
dotnet-script Program.csx 
以及一个C脚本程序.csx,它使用Microsoft.SqlServer.DACFx nuget包创建并部署.dacpac:

#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上测试过。 希望这有帮助:

我的方法:

安装Visual Studio生成工具2019
包括数据存储和处理构建工具工作流和.NET Framework 4.6.1目标包单个组件

我认为您可以下载VS2019的构建工具。它是一个轻量级的构建工具,可以独立于VS集成各种模块。它只是一个命令工具。它是哪个工具?VS2019Build tool VS的构建工具更像是dotnet.exe的形式,更适合您在构建服务器上构建相关项目。如果您有任何问题,请随时告知我们: