TFS构建服务器上的无头构建.sqlproj文件

时间:2014-07-14 14:27:11

标签: sql-server tfs build msbuild

我正在尝试在TFS Build Server上构建.sqlproj。我按照这里的说明进行操作:

http://sqlproj.com/index.php/2012/03/headless-msbuild-support-for-ssdt-sqlproj-projects/

我从这里被指示:

How to build .sqlproj projects on a build server?

但我仍然无法建立。错误是:

  

C:\ Program Files   (86)\的MSBuild \微软\ VisualStudio的\ 11.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s.targets   (441):无法实例化“SqlModelResolutionTask”任务   来自“C:\ Program Files   (86)\ Common7 \ IDE \扩展\微软\ SQLDB \的Dac \ 120 \ Microsoft.Data.Tools.Schema.Tasks.Sql.11.dll”。   System.TypeInitializationException:类型初始值设定项   'Microsoft.Data.Tools.Schema.Tasks.Sql.DataTask'引发了异常。   ---> System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.Data.Tools.Schema.Sql,Version = 12.0.0.0,Culture = neutral,   PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该   系统找不到指定的文件。在   Microsoft.Data.Tools.Schema.Sql.Extensibility.ToolingShim.ConfigureExtensions()   ---内部异常堆栈跟踪结束---在Microsoft.Data.Tools.Schema.Tasks.Sql.DataTask..ctor()

SQL项目使用的SqlTask​​s.targets文件引用了这个:

  

C:\ Program Files(x86)\ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Dac \ 120 \ Microsoft.Data.Tools.Schema.Tasks.Sql.11.dll

反过来引用上面提到的无效版本。

但是,上述链接中的进程安装的文件不会安装此版本。他们安装版本10.3.0.0,由

引用
  

C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DAC \ bin \ Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll

但此文件不是.targets文件使用的文件。

我不知道这个dll末尾的数字是什么意思,但对我来说似乎很奇怪,一个结尾的12.dll引用了一个结尾为11.dll的早期版本。

我正在使用Visual Studio 2013和SQL Server 2012 - 它们都没有安装在构建服务器上,我认为这是建议的情况。我不知道IDE文件夹是什么,或者.targets文件使用它的原因。

我现在花了大约两天时间试图建立这个,但我没有想法。有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:3)

如果您正在运行VS2013,只要您在安装屏幕上选择SSDT,就会在内置于VST中。使用SSDT将VS2013安装到构建服务器上。创建一个构建定义,并在Process>下构建>高级将以下内容添加到MSBuild参数以构建sql proj

/ t:构建

如果您有发布配置文件并想要测试发布到SQL,那么添加发布开关并提供指向配置文件的链接

/ t:发布/p:SqlPublishProfilePath=MyDB.publish.xml。

这会将db发布到发布文件中指定的服务器。

可以通过在Visual Studio中打开项目来创建发布配置文件,右键单击项目并选择发布。一旦您对发布选项感到满意,请选择保存,然后将文件签入源代码控制,以便构建可以找到它(项目根目录)。

答案 1 :(得分:0)

我遇到了在Azure DevOps CI / CD管道上构建SQL Server项目的问题。预先构建的构建任务都不适合我。我想不可能在构建服务器上安装VS实例。

我通过避免将SQL Server项目添加到解决方案中来解决了这个问题。

我通过使用MSBuild SDK实现了这一目标,该功能能够从一组SQL脚本生成SQL Server数据层应用程序包(dfr%>%group_by(ID, price)%>% summarise(location = stringi::stri_paste(location,collapse=',')) # A tibble: 3 x 3 # Groups: ID [3] ID price location <dbl> <dbl> <chr> 1 1 10.2 A 2 2 9 B,C 3 3 8.5 F,G )。通过将第二个项目添加到解决方案中,我设法继续利用通过Visual Studio上的SQL Server Object Explorer将项目链接到实时数据库的优势。我在此answer中提供了更详细的说明。