尝试为在我们的构建服务器上运行的 Visual Studio 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)
关于如何解决这个问题有什么想法吗?
最佳答案
对 self 回答表示歉意,但希望这对某人有帮助。
我查看了 SqlTasks.targets 文件,发现 SqlBuildTask 源自“C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.Data.Tools.Schema.Tasks.Sql”。 10.dll”文件。由于构建在本地工作,我比较了那里和构建服务器之间的版本。我注意到一些 DLL 具有相同的版本,但其他版本不同。我试图反射(reflection)以查找“缺少的方法”应该驻留在哪里,但放弃并决定将文件夹的内容从我的开发计算机复制到构建服务器上的同一文件夹(不包括“en”和“1033”)文件夹。
这似乎已经解决了问题,我只能假设在我必须在构建服务器上进行的大量单独安装中的某个地方,引入了彼此不同步的 dll,这已经导致了这个问题。
如果有人能够正确解释或提出更合理的解决方案,那就太好了。
关于visual-studio-2010 - Sql Server Data Tools headless 构建失败并出现 MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19140207/