SSDT - 预构建自动化 - 为存储过程设置 'buildAction' 标志
SSDT - pre-build automation - setting 'buildAction' flag for stored procedure
我想知道是否有人有在 SSDT 项目上设置预构建事件(项目属性、构建事件)的示例,以便我们可以将文件 'Build Action' 从 'build' 更改为None给定项目配置。
类似于:if $configuration is x then set buildAction = 'none' on abc.sql else set buildAction = 'build'
此致
如果您对同一个存储过程有不同的实现,那么您可能有 2 个选择:
- 在 SP 中创建条件逻辑。您需要在发布时定义变量值,并且在代码中您将拥有类似的内容:
IF ('$(EnvVar)' = 'PROD')
BEGIN
-- code needed to be executed in PROD
END
IF ('$(EnvVar)' = 'DEV')
BEGIN
-- code needed to be executed in DEV
END
- 创建 2 个(或者您可能需要更多)项目,这些项目将具有具有不同实现的单个过程(或一组对象)。然后使用“同一数据库”选项添加对主项目的引用。然后在项目中创建不同的发布配置文件并在那里使用正确的连接字符串。
我通过使用预构建事件将存储过程的克隆复制到正确的位置来解决这个问题,具体取决于构建设置。所以我也将以上标记为答案。
我也可以使用 .tt 文件在构建时生成存储过程。
我想知道是否有人有在 SSDT 项目上设置预构建事件(项目属性、构建事件)的示例,以便我们可以将文件 'Build Action' 从 'build' 更改为None给定项目配置。
类似于:if $configuration is x then set buildAction = 'none' on abc.sql else set buildAction = 'build'
此致
如果您对同一个存储过程有不同的实现,那么您可能有 2 个选择:
- 在 SP 中创建条件逻辑。您需要在发布时定义变量值,并且在代码中您将拥有类似的内容:
IF ('$(EnvVar)' = 'PROD')
BEGIN
-- code needed to be executed in PROD
END
IF ('$(EnvVar)' = 'DEV')
BEGIN
-- code needed to be executed in DEV
END
- 创建 2 个(或者您可能需要更多)项目,这些项目将具有具有不同实现的单个过程(或一组对象)。然后使用“同一数据库”选项添加对主项目的引用。然后在项目中创建不同的发布配置文件并在那里使用正确的连接字符串。
我通过使用预构建事件将存储过程的克隆复制到正确的位置来解决这个问题,具体取决于构建设置。所以我也将以上标记为答案。
我也可以使用 .tt 文件在构建时生成存储过程。