visual-studio - 发布配置文件(或架构比较)不会评估 SQLCMD 变量
问题描述
SQLCMD 变量替换多年来一直在我们的项目中工作,但在更新到 VS 16.5 后它停止工作。
发布配置文件(或架构比较)不会评估 SQLCMD 变量。
生成的脚本始终包含使用 SQLCMD 变量并错误地更新目标数据库上的过程的任何文件。它使用变量名(例如($databasename))而不是替换值(即根本不发生替换)
Advanced... 下有一个选项,上面写着“不评估 SQLCMD 变量”。关闭或打开此功能无效。
此缺陷之前曾在 Visual Studio 社区中报告过,但似乎已过早关闭,其他人表示实际上并未修复。
我在 Visual Studio 社区页面中提出了另一个案例,该案例正在经历他们的分类过程,但是我想知道这里是否有其他人遇到过同样的问题并找到了替代解决方案?
我在 Visual Studio 2019 和 2022 中都看到了这个问题。
我目前正在使用
视觉工作室 2019 16.11.7
Microsoft SQL Server 数据工具 16.0.62111.11070
视觉工作室 2022 17.0.1
Microsoft SQL Server 数据工具 17.0.62110.20190
解决方案
对于遇到此问题的任何其他人,我们发现替代品正在为不同的项目工作,该项目针对同一服务器上的不同数据库。
这告诉我们,这可能与项目有关。在编译解决方案时,我们注意到我们有以下警告
Warning: SQL71502: Procedure: [XXX].[YYY] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects:....
但是,即使在数据库引用中将“抑制引用警告”设置为 false,这并没有使构建失败。
我们从导致我们出现问题的过程之一(例如)中删除了包含 SQLCMD 变量的表引用,并用手重新[$(MyDbName)].[Schema].[Table]
编写了它。输入此内容并使用智能感知选择引用的数据库 SQLCMD 变量非常重要。使用复制和粘贴并没有为我们解决问题!
生成的 SQL 是相同的(Git 认为没有更改,也没有什么要签入的),但很明显,Visual Studio 维护了某种类型的引用(可能是 .vs 文件夹中的某些东西??)。更奇怪的是,即使我们没有检入 .vs 文件夹,它也以同样的方式影响了所有用户。
无论如何-HTH
推荐阅读
- omnet++ - Omnet++ 相扑和静脉
- excel - 通过使用变量传递位于工作簿中任何位置的表的名称来创建 ListObject
- python - 使用 sklearn - python 具有分类特征的多元线性回归
- c# - 从循环引用类中的父类获取类和一些数据
- python - Python len() 方法不返回值
- c# - 不同对象的序列化列表
- typescript - 使用类和接口定义文件引发错误预期';'
- c# - Vector3:变量作为坐标
- java - Androidx 导航视图 - `setNavigationItemSelectedListener` 不起作用
- c# - MVC Core 2 - lambda 表达式中的 && 运算符不起作用