我正在尝试在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.SqlTasks.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项目使用的SqlTasks.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文件使用它的原因。
我现在花了大约两天时间试图建立这个,但我没有想法。有谁知道发生了什么事?
答案 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中提供了更详细的说明。