微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅在调试模式下在发布中包含 PostDeployment sql 脚本

如何解决仅在调试模式下在发布中包含 PostDeployment sql 脚本

我有 Script.PostDeployment.sql 的 .dacpac 项目:

:r .\SiteType.sql
:r .\Enums.sql
:r .\DebugData.sql

我想有条件地包含 DebugData.sql,仅当我使用在 Visual Studio 中选择的 DEBUG 配置文件发布时,因此在发布用于生产时不会包含此数据。

有什么办法可以实现吗?

解决方法

您可以编辑用于创建 dacpac 的 MSBuild 使用的 .sqlproj 文件。

您可以配置 .sqlproj,以便根据您使用的构建配置来包含或不包含某些脚本。

步骤:

  1. 创建项目并添加部署后脚本

  2. 编辑 .sqlproj 文件

  3. 更改包含 PostDeploy 脚本的 ItemGroup:

    <ItemGroup Condition=" '$(Configuration)' == 'Debug' "> <PostDeploy Include="PostDeployment.sql" /> </ItemGroup>

  4. 在调试配置中构建。解压dacpac,你会发现PostDeployment.sql

  5. 内置发布配置。解压 dacpac,你将找不到 PostDeployment.sql。

,

一种选择是每次在运行时运行脚本,但根据服务器名称跳过其执行。如果有严格的环境命名约定,这将起作用。

在DebugData.sql里面放守卫

-- here the condition is LIKE `DEV`,it could be NOT LIKE 'PROD'
IF @@SERVERNAME LIKE 'DEV%' 
BEGIN
    ... Here goes content of the script
END

选项二:

不要使用单个硬编码值,而是为每个配置准备版本:

:r .\DebugData.sql
=>
:r ."\"$(Config)Data.sql

现在你需要两个文件:

DebugData.sql    -- actual script
ReleasaeData.sql -- empty file

根据配置配置文件,将选择其中一个文件。对于release,它是空的,所以不会执行实际的代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。