如何解决仅在调试模式下在发布中包含 PostDeployment sql 脚本
我有 Script.PostDeployment.sql
的 .dacpac 项目:
:r .\SiteType.sql
:r .\Enums.sql
:r .\DebugData.sql
我想有条件地包含 DebugData.sql
,仅当我使用在 Visual Studio 中选择的 DEBUG
配置文件发布时,因此在发布用于生产时不会包含此数据。
有什么办法可以实现吗?
解决方法
您可以编辑用于创建 dacpac 的 MSBuild 使用的 .sqlproj
文件。
您可以配置 .sqlproj,以便根据您使用的构建配置来包含或不包含某些脚本。
步骤:
-
创建项目并添加部署后脚本
-
编辑 .sqlproj 文件
-
更改包含 PostDeploy 脚本的 ItemGroup:
<ItemGroup Condition=" '$(Configuration)' == 'Debug' "> <PostDeploy Include="PostDeployment.sql" /> </ItemGroup>
-
在调试配置中构建。解压dacpac,你会发现PostDeployment.sql
-
内置发布配置。解压 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 举报,一经查实,本站将立刻删除。