【发布时间】:2020-01-30 10:28:28
【问题描述】:
在我的 Visual Studio 数据库解决方案中,我有一些对象,我不得不设置 Build action = None,原因有几个(OPENQUERY 引起的构建问题,...)。
不幸的是,Schema Compare 不比较这些元素。每当我比较“源 = 开发数据库”和“目标 = 解决方案”时,它们都会被标记为新的,并且架构比较会建议 添加这些对象。
如果我添加这些对象,更新将识别它们已经在解决方案中,并将添加具有新名称 [objectname]+_1 和 Build action = Build 的元素,这将当然会在下一次构建期间引起问题。
有人知道是否有解决此问题的简单方法吗?除了使用Pre-build 和Post-Build 命令行,在构建之前禁用对象并在再次构建之后启用它们。
提前致谢
【问题讨论】:
-
有一个原因,为什么某些对象被设置为
Build action = None,正如我在我的问题中所写的那样。当然,将它们设置回Build action = compile可以解决模式比较的问题,但会导致构建错误,我绝对想避免这种情况 -
很好的问题。我也有同样的问题。 DB 对象通常需要从构建中排除,因为它们会由于各种原因导致虚假的构建错误。在我的情况下,它是未使用的对象,它们保留在数据库中直到下一个版本,重命名为 ZZZ,以允许快速回滚。我们真正需要的是 SchemaCompare 上的一个选项,例如“包含 BuildNone 对象”。或者是“包含用于 SchemaCompare,但不用于构建”的构建选项。 DB 与其他代码项目的不同之处在于 VS 项目不 = 已部署的版本。
-
minimal reproducible example 在这里会有所帮助。
-
@GertArnold - 用一个例子编辑了 Esteban 的问题;等待同行评审。
标签: sql-server visual-studio compare