Sql Server Data Tools无头构建因MissingMethodException而失败

时间:2013-10-02 15:05:00

标签: visual-studio-2010 msbuild sql-server-data-tools

尝试在我们的构建服务器上构建可视工作室2010数据工具项目。服务器是2008 R2(64位),我已按照说明here安装必要的先决条件。该项目在完整的VS 2010安装上本地构建良好(并不总是!)但在构建服务器上我看到以下错误(为简洁和匿名编辑):

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(513,5): error MSB4018:
The "SqlBuildTask" task failed unexpectedly. 
 System.MissingMethodException: Method not found: 'System.Collections.Generic.Dictionary`2<System.String,System.String> Microsoft.Data.Tools.Schema.Sql.Build.SqlPropertiesHelper.ParseContributorArgs(System.String)'.
  at Microsoft.Data.Tools.Schema.Tasks.Sql.SqlBuildTask.ExecuteValidateModelStep()
  at Microsoft.Data.Tools.Schema.Tasks.Sql.SqlBuildTask.ExecuteStep(Func`1 step)
  at Microsoft.Data.Tools.Schema.Tasks.Sql.SqlBuildTask.Execute()
  at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
  at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)

有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:2)

道歉自我回答,但希望这有助于某人。

我查看了SqlTask​​s.targets文件,看到SqlBuildTask源自“C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ DAC \ bin \ Microsoft.Data.Tools.Schema.Tasks.Sql”。 10.dll“文件。当构建在本地工作时,我比较了那里和构建服务器之间的版本。我注意到一些DLL具有相同的版本,但其他的则不同。我试图反思找到“遗漏方法”应该驻留在哪里但放弃并决定从我的开发机器上复制文件夹的内容,在构建服务器上的同一文件夹中除了“en”和“1033”文件夹。

这似乎已经解决了这个问题,我只能假设在构建服务器上我必须做的荒谬数量的单独安装的某个地方,已经引入了彼此不一致的dll,这有引起了这个问题。

如果有人能够正确解释或提出更合理的解决方案,那就太棒了。

答案 1 :(得分:0)

如果安装SQL Server 2012,Visual Studio中的SSDT也存在问题。对我来说,解决方法是在SQL安装后重新安装最新的SSDT。我注意到这个问题涉及VS2010,但SSDT问题似乎无处不在。

此处还有一些信息:http://fubnuts.wordpress.com/2013/05/31/fun-with-vs2012-sql-server-projects-and-sql-server-2012/

SSDT下载:http://msdn.microsoft.com/en-US/data/hh297027