在 M1 Mac 上的 Azure Data Studio 中构建 SQL Server 数据库项目真的不可能吗?

Posted

技术标签:

【中文标题】在 M1 Mac 上的 Azure Data Studio 中构建 SQL Server 数据库项目真的不可能吗?【英文标题】:Is it literally impossible to build a SQL Server database project in Azure Data Studio on an M1 Mac? 【发布时间】:2022-01-08 03:37:39 【问题描述】:

我正在尝试在我的新 M1 Mac Mini 上设置自己的 Azure Data Studio,但我正在处理的 SQL Server 数据库项目拒绝构建。这是我得到的(完全没用的)错误:

stdout: /Users/dumasded/.azuredatastudio/extensions/microsoft.sql-database-projects-0.13.0/BuildDirectory/Microsoft.Data.Tools.Schema.SqlTasks.targets(586,5): error MSB4181: The "SqlBuildTask" task returned false but did not log an error. [/Users/dumasded/Projects/db-project/DBProject.sqlproj]
stdout:     0 Warning(s)
stdout:     1 Error(s)

我既找不到也不记得我是从哪里得到这个想法的,但我不知何故想到这与我正在使用的 SDK 版本有关 - 我目前使用的是 6.0.100,即据我所知,它是唯一兼容 arm64 的。我在这台机器上下载、安装和运行早期版本的 SDK 的每一次尝试都失败了。如果这确实是问题所在,我什至无法找到足够的距离。

为了确保它与我试图建立的现有项目无关,我从头开始创建了一个全新的项目并尝试构建它。它因同样的错误而失败。这绝对是一个系统问题,而不是特定于项目的问题。

我还有希望吗?我注定要回到我那破烂的联想 Thinkpad 上工作吗?我喘不过气来。提前致谢。

编辑

我刚刚发现巧妙的 MSBuild.Sdk.SqlProj 作为我的问题的潜在解决方案,但是我尝试使用它仍然遇到 SDK 版本问题:

error : The current SDK bundles target framework 'netcoreapp6.0' which is not supported by MSBuild.Sdk.SqlProj. Either install a .NET Core SDK that supports 2.1, 3.1 or 5.0, or file an issue at https://github.com/rr-wfm/MSBuild.Sdk.SqlProj/ to add support.

这似乎证实了我最初的怀疑,即这是 SDK 版本的问题。

编辑 2

没有提到我正在使用带有 SQL 数据库项目扩展的 Azure Data Studio,它声称可以跨平台无缝地处理 DACPAC 创建。虽然到目前为止我还没有这样的经历。

【问题讨论】:

Sqlproj 类型使用旧的 .Net Framework,因此仅限 Windows。 ***.com/a/62124722/1043380 回家后我必须对此进行测试,但我确信我已经在我的家用 PC(运行 Ubuntu)上构建了一个 ADS 数据库项目。也许我弄错了……尽管至少那仍然是 x86/64 框架,而不是 ARM。 @gunr2171 - 在对同一问题的另一个回答中,用户 CrazyPyro 指的是 MSBuild.Sdk.SqlProj,它可用于跨平台生成 DACPAC:***.com/a/64346890/9182405。显然,在非 Windows 机器上是可能的。话虽如此,我使用它的尝试遇到了同样的问题:不支持 dotnet 6,并且我无法让任何早期版本的 dotnet SDK 在我的机器上运行。 【参考方案1】:

我会被扣篮的。我知道必须有一个看似简单的答案。

事实证明,我尝试在我的机器上下载、安装和运行早期版本的 SDK 并没有失败 - 他们只是进入了不同的目录。显然,在 arm64 机器上安装 x64 SDK 会导致在主 dotnet 安装的专用“x64”子目录中创建 SDK。现在这对我来说非常明显——dotnet --list-sdks 没有显示早期 SDK 的痕迹的原因是它们是为完全隔离的 dotnet 实例安装的。我所要做的就是将 SQL 数据库项目扩展指向该 dotnet 实例,它就开始工作了:

我希望我在 dotnet SDK 架构迷宫中的公开失误能够帮助其他人。就我而言,我终于如愿以偿了。

【讨论】:

以上是关于在 M1 Mac 上的 Azure Data Studio 中构建 SQL Server 数据库项目真的不可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

Docker-compose 在 M1 mac 上的 VM (Parallels) 中

来自 Electron 的 M1 mac 上的 Emacs 崩溃

使用 Azure Data Studio 备份和还原 Azure 数据库

M1 mac 上的 android studio 和 manager 错误(未安装模拟器)

M1 Mac 上的 Pyodbc

M1 mac 上的 Android 平台工具