如何使用 "dotnet" 工具构建 .sqlproj 项目?

How to build .sqlproj projects using "dotnet" tool?

无法使用 "dotnet" 命令行工具构建 .Net .sqlproj。这是错误:

dotnet\sdk.1.300\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found

我已经安装了 SSDT 工具,但在上述位置不可用。

注:使用Visual Studio和MSBuild

构建没有任何错误

How to build .sqlproj projects using “dotnet” tool?

抱歉,但据我所知,目前不支持 方案。根据设计,dotnet cli 无法使用 旧框架样式 项目文件构建数据库项目。

至于为什么使用Visual Studio和MSBuild构建没有任何错误,但是使用dotnet却失败了。请检查您的SSDT安装路径,应该在pathC:\Program Files (x86)\Microsoft Visual Studio19\VSEditon\MSBuild\Microsoft\VisualStudio\v16.0\SSDT.

SSDT 作为 MSBuild(VS 构建工具)或 VS 的 MSBuild 的子模块安装,因此在通过 VS/MSbuild 构建它时效果很好。但是 dotnet cli 不知道在哪里可以找到这个位于 MSBuild 文件夹子文件夹下的模块,所以它会抛出错误。

在 github 中曾经 a discussion 关于此,在我看来,支持通过 Dotnet 构建 SQLProj 的功能尚未实现。如果您对该功能感兴趣,我建议您可以在那里开张新票 post 您的想法。

截至 2020 年 3 月,现在可以使用 MSBuild.Sdk.SqlProj 包。 从技术上讲,它不是在构建 sqlproj 文件本身,而是基于 csproj 生成 DACPAC 的等效版本。它目前有一些优势,例如 cross-platform 构建,并且能够构建整个文件夹而不是遗漏您总是忘记手动添加到 sqlproj 的那个文件。目前的缺点是由于没有 dbmdl 缓存而导致构建速度较慢,并且 IDE/tooling 至少对将更改从外部数据库或 DACPAC 导入项目源的支持较少。

已经取得一些进展,预览版已经发布 https://github.com/microsoft/DacFx/tree/main/src/Microsoft.Build.Sql

<Sdk Name="Microsoft.Build.Sql" Version="0.1.3-preview" />

Microsoft 已发布 SQL 数据库项目扩展(预览版),用于使用 dotnet 命令进行编译

dotnet build "sqlproj 文件路径" /p:NetCoreBuild=true /p:NETCoreTargetsPath="DotNet Core 构建文件夹"

https://docs.microsoft.com/en-us/sql/azure-data-studio/extensions/sql-database-project-extension-build-from-command-line?view=sql-server-ver15