对系统数据库的引用在SSDT数据库项目中重复

问题描述

在具有大量项目和引用的大型SSDT数据库解决方案中,我将项目中的引用添加到系统数据库(master,msdb)中,它运行良好,并且构建成功。

一段时间后,我开始收到有关不正确引用的错误。我转到参考资料部分,看到了:https://pasteboard.co/JqzDSDh.png

我尝试删除第二个引用,但错误消失了,但是这个问题又回来了,我再次看到两个相同的引用。

谢谢!

解决方法

您的project.sqlproj文件很可能有问题。尝试在此处搜索master.dacpac关键字,并确保没有多个条目。确保dacpac路径未完全硬编码,但在此处使用$(DacPacRootPath)变量。

这是一个示例,该引用应该是什么样的(请确保您在路径中定义了正确的SQL版本。这里是140。)

    <ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
    </ArtifactReference>

如果这没有帮助,请尝试运行“清理解决方案”,然后删除所有*.jfm文件和*.dbmdl文件,binobj文件夹,然后重新建立项目。