如何在Visual Studio 2017中按项目配置筛选.sqlproj文件显示的对象?
如何在Visual Studio 2017 SSDT项目中按配置控制显示的数据库脚本
我刚好做过类似的SSDT多配置管理需求,给你分享两种实用的实现方式,完全能满足你按CONFIG_A/CONFIG_B控制脚本显示的需求:
1. 先创建对应的项目配置
首先得把CONFIG_A、CONFIG_B这些配置在项目里建好:
- 打开你的SSDT项目,点击顶部菜单栏的Build > Configuration Manager
- 在「Active solution configuration」下拉框选**<New...>**,输入
CONFIG_A,选一个基础配置(比如Debug)复制,同时勾选「Create new project configurations」,点确定 - 重复同样的步骤创建
CONFIG_B配置
2. 选择合适的方式控制脚本显示/生效
方式一:让脚本在指定配置下完全“消失”(适合完全隔离不同配置的脚本)
这种方式会让目标脚本在对应配置下既不显示在解决方案资源管理器,也不参与构建:
- 右键你的SSDT项目,选Unload Project
- 右键卸载后的项目,选Edit [你的项目名].sqlproj
- 在打开的项目文件里找到你要控制的脚本条目,比如
firstTable.sql,修改它的<Include>节点,加上配置条件:
<Include Include="firstTable.sql" Condition=" '$(Configuration)' == 'CONFIG_A' "> <DependentUpon>Schema Objects\Tables\firstTable.sql</DependentUpon> </Include>
- 对于CONFIG_B要显示的脚本(比如
secondTable.sql),对应添加条件:
<Include Include="secondTable.sql" Condition=" '$(Configuration)' == 'CONFIG_B' "> <DependentUpon>Schema Objects\Tables\secondTable.sql</DependentUpon> </Include>
- 修改完后右键项目选Reload Project,切换配置就能看到对应的脚本显示/隐藏了
方式二:在同一个脚本里切换不同配置的代码(适合部分内容差异)
如果只是想让脚本的部分内容在不同配置下生效,而不是隐藏整个文件,可以用条件编译:
- 打开目标脚本,比如
multiConfigObjects.sql,用条件编译块包裹不同配置的代码:
#if CONFIG_A CREATE TABLE dbo.firstTable ( Id INT PRIMARY KEY ) #endif #if CONFIG_B CREATE TABLE dbo.secondTable ( Name VARCHAR(50) PRIMARY KEY ) #endif
- 右键项目选Properties,切换到
CONFIG_A配置,在Build选项卡的「Conditional Compilation Symbols」里添加CONFIG_A - 切换到
CONFIG_B配置,添加CONFIG_B作为条件编译符号 - 这样切换配置时,IDE会高亮当前配置生效的代码块,构建时也只会编译对应部分
3. 验证效果
- 在Visual Studio顶部的配置下拉框切换到
CONFIG_A,检查解决方案资源管理器里是不是只显示firstTable.sql - 切换到
CONFIG_B,确认对应的脚本正常显示,其他配置的脚本要么隐藏要么代码块不生效
两种方式各有侧重,你可以根据自己的实际需求选:如果是完全不同的脚本文件,用方式一;如果是同一个文件里的不同逻辑,用方式二就好。
内容的提问来源于stack exchange,提问作者Rafael Faquini
相关产品推荐
相关产品推荐

