3

在构建我的数据库项目期间,我遇到了以下异常。

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.

奇怪的是,构建在主干上运行良好,但在功能分支上出现此异常而失败。

4

1 回答 1

7

我刚开始遇到这个完全相同的错误。我们都看到提到的事实Schema.SchemaModel向我表明我们都在使用某种文本模板策略。

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

似乎发生的事情 - 特别是在切换分支时 - 是你最终得到一个与模板所期望的非常dbmdl不同的旧文件,模板试图做的事情与构建正在尝试的“新”文件不一致创建 - 这就像试图根据旧文件挑选一个模板补丁并将其应用到新文件 - 它不起作用,因为基线相距太远。dbmdldbmdl

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

于 2014-10-29T23:08:05.490 回答