首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于Visual Studio 2017的SQL Server Data Tools (SSDT)的无头安装

用于Visual Studio 2017的SQL Server Data Tools (SSDT)的无头安装
EN

Stack Overflow用户
提问于 2017-10-24 06:06:19
回答 3查看 4.9K关注 0票数 8

对于构建服务器,我们需要针对Visual Studio 2017的SQL server数据工具的无头安装。

我们的构建服务器已经有了“用于Visual Studio 2017的构建工具”,它为无头构建提供了很好的支持。但是,任何使用SSDT项目的解决方案都会因为缺少MSBuild目标而失败,例如:

[MSBuild] src\Database\Upfront.Database.sqlproj: Build default targets [10:27:46][src\Database\Upfront.Database.sqlproj] E:\BuildAgent\work\7769fbf76d8b9008\src\Database\Upfront.Database.sqlproj(56, 3): error MSB4019: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.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.

首先,我尝试修改由"Build Tools for Visual Studio 2017“安装的组件集,但似乎没有可用的SSDT组件。

其次,我尝试安装SSDT for Visual Studio 2017,它似乎没有正确安装到“构建VS2017工具”配置文件中。它确实允许我创建一个新的VS2017配置文件,例如SQL,所以所需的MSBuild文件安装在C:\Program Files (x86)\Microsoft Visual Studio\2017\SQL\下;但是它改变了我的msbuild环境变量,使得“VS2017的构建工具”文件(在C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools中)找不到,导致C#项目无法构建。

似乎"SSDT for Visual Studio 2017“和"Build Tools for Visual Studio 2017”彼此不兼容。有没有人能让他们一起工作?或者,是否有人找到了在构建服务器上构建SSDT项目的更好方法?

SSDT已经相当不错了,除了构建服务器支持,这是一个痛苦的每一次。

EN

回答 3

Stack Overflow用户

发布于 2017-10-24 13:23:23

对ssdt数据库项目的构建支持现在以nuget包的形式提供,适用于此场景。

这里有关于如何为ssdt数据库项目配置构建服务器的所有细节:

https://blogs.msdn.microsoft.com/ssdt/2016/08/22/part-5-use-your-own-build-and-deployment-agent/

它的要点是下载nuget包并将其解压缩到某个位置,然后设置两个环境变量来指向包内容,这样就可以在没有visual studio的情况下继续构建了。

边缘

票数 6
EN

Stack Overflow用户

发布于 2017-12-14 09:29:14

在服务器上安装SSDT for Visual Studio2017之后,您需要将名为SQLDBExtensionsRefPath的环境变量设置为"C:\Program Files (x86)\Microsoft Visual Studio\2017\SQL\MSBuild\Microsoft\VisualStudio\v15.0\SSDT".此环境变量由.sqlproj文件中的以下行使用:

代码语言:javascript
运行
复制
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />

现在,msbuild将能够找到.targets文件,但它仍然会在BuildTools文件夹中查找IDE扩展,而不是在SQL文件夹中查找。我认为设置msbuild环境变量应该可以解决这个问题(您可以尝试将其设置为"C:\Program Files (x86)\Microsoft Visual Studio\2017\SQL\Common7\IDE\Extensions\Microsoft\SQLDB\Dac\140“并查看您的构建是否可以工作),但我仍然收到错误,因为SSDTPath无法定位master.dacpac文件。

最后,我修改了.sqlproj文件以修复SSDTExists属性并修改VsInstallRoot属性。我更改了以下几行:

代码语言:javascript
运行
复制
<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
  <!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
  <SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
  <VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
</PropertyGroup>

至:

代码语言:javascript
运行
复制
<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
  <!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
  <SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets') Or '$(SQLDBExtensionsRefPath)' != ''">True</SSDTExists>
  <VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
</PropertyGroup>
<PropertyGroup>
  <!-- In the case that SSDT was installed separately from Visual Studio (e.g. for the Visual Studio build tools), change the VsInstallRoot so that the IDE extension will be found. -->
  <VsInstallRoot Condition="!Exists('$(VsInstallRoot)\Common7\IDE\Extensions\Microsoft\SQLDB') And Exists('$(VsInstallRoot)\..\SQL')">$(VsInstallRoot)\..\SQL</VsInstallRoot>
</PropertyGroup>

我没有遇到msbuild环境变量被SSDT安装弄乱的问题,所以只需这两个更改,我的构建服务器上的一切都可以顺利运行。

票数 4
EN

Stack Overflow用户

发布于 2017-11-10 00:32:10

我删除了Visual Studio 2017的构建工具(或者从一开始就避免了),并安装了带有SQL Server数据工具的完整Visual Studio,从而实现了这一点。

然后,只需从构建服务器的完整安装中引用MSBuild。

使用TeamCity,这涉及到重新启动构建代理,然后它们引用MSBuild的正确的、完整的VS路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46899252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档