我想在linux容器中构建一个.sqlproj。问题是,构建.sqlproj依赖于SSDT和,到目前为止,我还没有找到可以作为独立安装在linux上的SSDT。
错误我看到在我的容器中运行'dotnet‘:
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.SqlTasks.targets文件,我假设SSDT创建了这个文件:
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />我看到了测试'dotnet‘的相同错误
有一个Windows独立选项:
https://www.nuget.org/packages/Microsoft.Data.Tools.Msbuild/10.0.61804.210
有人找到在linux容器中提供SSDT的方法了吗?
目标状态:生成生成dacpacs的步骤将发生在容器中。
当前状态:目前在我的机器上使用Visual作为构建机器,然后将dacpacs复制到容器中,然后sqlpackage.exe可以在容器中发布模式。
为什么是Linux?这个被坞化的DB将支持在linux容器中运行的一堆服务,所以windows容器并不理想。
发布于 2020-08-27 19:17:19
好的,在ErikEJ和社区其他成员的帮助下,在Brett在评论中给你的GitHub链接上,我终于想出了如何做到这一点。
接下来的步骤非常简单。
"database.build"

configurations.
完成此操作后,您将发现仍然可以访问visual studio中的SQL数据库项目,并获得所有语法突出显示和intellisense,但是您的CI将通过链接类库构建SQL代码,并在其输出文件夹中生成一个dacpac,可以随时部署。
右键单击该项目将允许您在Visual中构建该项目,右键单击并选择“发布”将允许您指定数据库参数并将其发布到正在使用的DB服务器。如果数据库中已有需要引用的其他对象,则可以使用从数据库中创建一个仅为dacpac的对象,然后可以将该对象添加到项目中并与其源签入,这样就不需要重新创建可能已经拥有的每个对象。
我写了一篇博文详细解释了这一切:https://shawtyds.wordpress.com/2020/08/26/using-a-full-framework-sql-server-project-in-a-net-core-project-build/
https://stackoverflow.com/questions/63384241
复制相似问题