Amb*_* PB 8 linux docker sql-server-data-tools
我想在 linux 容器中构建一个 .sqlproj。问题是构建 .sqlproj 依赖于 SSDT,到目前为止我找不到可以在 linux 上作为独立安装的 SSDT。
错误我看到在我的容器中运行“dotnet msbuild”:
error MSB4019: The imported project "/usr/share/dotnet/sdk/2.2.402/Microsoft/VisualStudio/v11.0/SSDT/Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Run Code Online (Sandbox Code Playgroud)
在 .sqlproj 文件中搜索该问题,我看到我们正在尝试导入 Schema.SqlTasks.targets 文件,我假设 SSDT 创建了该文件:
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
Run Code Online (Sandbox Code Playgroud)
我在测试“dotnet build”时看到同样的错误
有一个 Windows 独立选项:
https://www.nuget.org/packages/Microsoft.Data.Tools.Msbuild/10.0.61804.210
有没有人找到在 linux 容器中提供 SSDT 的方法?
目标状态:生成 dacpac 的构建步骤将发生在容器内。
当前状态:现在我在我的机器上使用 Visual Studio 作为构建机器,然后将 dacpacs 复制到 sqlpackage.exe 然后可以发布架构的容器。
为什么是 Linux?这个 dockerized DB 将支持在 linux 容器中运行的一系列服务,因此 Windows 容器并不理想。
好的,在 ErikEJ 和社区其他成员的帮助下,通过 Brett Rowberry 在评论中提供的 GitHub 链接,我终于弄清楚了如何做到这一点。
遵循的步骤非常简单。
完成此操作后,您会发现您仍然可以访问 Visual Studio 中的 SQL 数据库项目,并获得所有语法突出显示和智能感知,但您的 CI 将通过链接的类库构建 SQL 代码并在中生成 dacpac它的输出文件夹已准备好部署。
右键单击该项目将允许您在 Visual Studio 中构建它,右键单击并选择“发布”将允许您指定数据库参数并将其发布到正在使用的数据库服务器。如果您的数据库中已有需要引用的其他对象,您可以使用 SQL Server Management Studio 从数据库创建一个仅 dacpac 的对象,然后您可以将其添加到您的项目中并签入其源,以便您可以不需要重新创建您可能已经拥有的每个对象。
我在这里写了一篇博客文章详细解释了这一切: https: //shawtyds.wordpress.com/2020/08/26/using-a-full-framework-sql-server-project-in-a-net-核心项目构建/
| 归档时间: |
|
| 查看次数: |
1242 次 |
| 最近记录: |