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

Raz*_*aza 7 .net asp.net-mvc sql-server-data-tools azure-devops dotnet-tool

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

dotnet\sdk\3.1.300\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found
Run Code Online (Sandbox Code Playgroud)

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

注意:它是使用 Visual Studio 和 MSBuild 没有任何错误的建筑物

hol*_*irt 16

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

<Sdk Name="Microsoft.Build.Sql" Version="0.1.3-preview" />
Run Code Online (Sandbox Code Playgroud)


Cra*_*yro 7

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


Lan*_*SFT 5

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

抱歉,但据我所知,目前不支持这种情况。dotnet cli 无法使用旧框架样式项目文件构建数据库项目,这是设计使然。

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

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

github上曾经讨论过这个,我认为支持通过Dotnet构建SQLProj的功能还没有实现。如果您对该功能感兴趣,我建议您可以在那里打开一张新票来发表您的想法。