我在构建数据库项目时遇到以下异常。
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上工作正常,但在功能分支上出现此异常失败。
答案 0 :(得分:6)
我刚刚开始得到同样的错误。我们都看到提到Schema.SchemaModel
的事实告诉我,我们都在使用某种文本模板策略。
VS在数据库世界中的文本模板构建策略要求已创建dbmdl
文件以便它们运行。这实际上意味着您必须两次构建项目;一旦建立新的dbmdl
文件,然后再次获取让你的文本模板跳舞的效果。
似乎发生了什么 - 尤其是在切换分支时 - 最终会得到一个旧的dbmdl
文件所以与模板所期望的不同,模板尝试的是什么要做的是构建试图创建的“新”dbmdl
文件的可能性 - 这就像试图根据旧dbmdl
文件挑选模板补丁并将其应用于新文件 - 它不起作用,因为基线距离太远。
解决方案是在源树中找到dbmdl
文件并将其删除。 然后您可以构建以创建新的dbmdl
文件。构建将失败,因为模板将失败,但您构建第二时间,模板应该选择新的dbmdl
文件并成功。