gpt4 book ai didi

linux - 如何在 linux docker 容器中构建需要 SSDT 的 .sqlproj?

转载 作者:行者123 更新时间:2023-12-02 18:00:34 25 4
gpt4 key购买 nike

我想在 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.
在 .sqlproj 文件中搜索问题,我看到我们正在尝试导入 Schema.SqlTask​​s.targets 文件,我假设 SSDT 创建了该文件:
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
我在测试“dotnet build”时看到同样的错误
有一个 Windows 独立选项:
https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?redirectedfrom=MSDN&view=sql-server-ver15
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 链接上,我终于想出了如何做到这一点。
要遵循的步骤非常简单。

  • 添加您的 SQL Server 项目
  • 添加一个 .NET 标准类库项目并将其命名为“database.build”
  • 从类库项目中删除所有代码,并修改 csproj 文件,使其读取如下内容

  • Image of Csproj File contents
  • 更改解决方案上的属性,以便不为所有配置构建 sql server 项目。

  • 完成此操作后,您会发现您仍然可以访问 Visual Studio 中的 SQL 数据库项目,并获得所有语法突出显示和智能感知,但是您的 CI 将通过链接的类库构建 SQL 代码并在它是准备部署的输出文件夹。
    右键单击项目将允许您从 Visual Studio 中构建它,右键单击并选择“发布”将允许您指定数据库参数并将其发布到正在使用的数据库服务器。如果您的数据库中已经有其他需要引用的对象,您可以使用 SQL server management studio 从数据库中创建一个仅 dacpac 的对象,然后您可以将其添加到您的项目中并检查它的来源,以便您执行不需要重新创建您可能已经拥有的每个对象。
    我在这里写了一篇博文详细解释了这一切:
    https://shawtyds.wordpress.com/2020/08/26/using-a-full-framework-sql-server-project-in-a-net-core-project-build/

    关于linux - 如何在 linux docker 容器中构建需要 SSDT 的 .sqlproj?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63384241/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com