SSDT构建错误

时间:2013-10-24 09:09:58

标签: visual-studio-2012 sql-server-data-tools

我在构建数据库项目时遇到以下异常。

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(513,5): Error:  MSB4018: The "SqlBuildTask" task failed unexpectedly.
14>Microsoft.Data.Tools.Schema.SchemaModel.ScriptCacheException: The cache identifier E:\Systems\MyProject\WorkingCopy-branch\source\Database.my_db_project\obj\debug.Deploy\ASMREXEXP.generated.sql does not exist.

奇怪的是,构建在trunk上工作正常,但在功能分支上出现此异常失败。

1 个答案:

答案 0 :(得分:6)

我刚刚开始得到同样的错误。我们都看到提到Schema.SchemaModel的事实告诉我,我们都在使用某种文本模板策略。

VS在数据库世界中的文本模板构建策略要求已创建dbmdl文件以便它们运行。这实际上意味着您必须两次构建项目;一旦建立新的dbmdl文件,然后再次获取让你的文本模板跳舞的效果。

似乎发生了什么 - 尤其是在切换分支时 - 最终会得到一个旧的dbmdl文件所以与模板所期望的不同,模板尝试的是什么要做的是构建试图创建的“新”dbmdl文件的可能性 - 这就像试图根据旧dbmdl文件挑选模板补丁并将其应用于新文件 - 它不起作用,因为基线距离太远。

解决方案是在源树中找到dbmdl文件并将其删除。 然后您可以构建以创建新的dbmdl文件。构建将失败,因为模板将失败,但您构建第二时间,模板应该选择新的dbmdl文件并成功。