asp.net – MSBuild:自动收集db迁移脚本?
环境概要.
> Asp.net Web应用程序(存储在svn中的源代码) 我的msbuild脚本在每个构建上更新Web应用程序(Major.Minor.Revision.Build)的程序集版本. ‘Revision’设置为当前检出的svn版本和’build’到hudson内部版本号(在每个自动构建时递增). 这样我可以将应用程序与特定的主干版本匹配,也可以从hudson内部版本号获取其他构建统计信息. 我想自动收集迁移脚本(更新的sprocs等)以添加到zip包中. 这可以通过手动调用svn diff -r REVNO:REVNO命令来列出已更改的.sql文件来轻松实现.然后可以手动将这些文件添加到包中. 首先,我想我必须编写一个自定义任务来检查尚未部署到的数据库的版本.在那之后,我很不确定. 最后,我必须自动将脚本添加到更新数据库版本表的包中,以便与应用程序保持同步. 解决方法
将SQL更改集成到自动构建/部署过程中是很困难的.我知道,因为我已经尝试了几次但收效甚微.你要做的事情大致是在正确的轨道上,但我认为它实际上有点过于复杂.在您的提案中,建议您在构建/打包时收集需要应用于数据库的特定SQL脚本.相反,您应该将所有delta脚本(对于数据库的整个历史记录)打包到项目中,并计算部署时实际需要应用的增量 – 这样,可部署的包可以部署到具有数据库的环境中不同版本.您需要实现两个实现部分:
1)您需要将增量打包到可部署的包中.请注意,您应该打包增量 – 而不是以当前状态创建架构的静态文件.这些delta脚本应该在源代码管理中.将静态模式保留在源代码控制中也是可以的,但是您必须使其与增量保持同步.实际上,您可以使用Red Gate的SQLCompare或VS数据库版本等工具从静态模式生成(大多数)增量.要将增量扩展到可部署的包中,并且假设您正在使用svn – 您可能需要查看svn:externals,以将delta脚本“软链接”到您的Web项目中.然后,您的构建脚本可以简单地将它们复制到可部署的包中. 2)您需要一个系统,可以读取增量文件列表,将它们与现有数据库进行比较,确定需要将哪些增量应用于该数据库,然后应用增量(并更新簿记信息,如数据库版本) .有一个名为dbdeploy的开源项目(由ThoughtWorks赞助)实现了这一目标.我亲自用这个工具取得了一些成功. 祝你好运 – 这是一个难以破解(正确). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Repeater Control中的条件逻辑?
- 从经典ASP检测移动用户代理并在会话启动时重定向
- 我的团队成员不支持使用asp.net中提供的验证控件(用于Web应
- asp.net-mvc-3 – 部署到“真实”IIs网站时默认Razor View的
- 为什么工作线程使我的ASP.NET生成器在睡眠期间遇到ThreadAb
- asp.net – 在更新面板中自动上传文件到服务器第一次不起作
- 如何缓存输出的action方法,返回图像到asp.net mvc中的视图?
- asp.net-mvc – 为什么要使用Url.Content来引用资源?
- asp.net – 将下一个/上一年的按钮添加到asp日历控件
- Asp.Net MVC @Html.TextBox 只允许输入数字问题
- ASP.NET中自动HtmlEncode
- asp.net-mvc – 覆盖默认身份表名称
- asp.net-mvc – Html.HiddenFor值属性未设置
- asp.net-membership – MiniProfiler和SqlMember
- asp.net-mvc – MVC帖子没有填充模型
- asp.net-mvc – 使用Web API不检查的并发检查
- 为ASP.NET/ASP.NET MVC配置IIS(Windows 7)3
- 将列表绑定到asp.net 3.5中的列表视图
- asp.net – 使用“async”(即使它应该完成)作为M
- asp.net-mvc-3 – 任务/线程的Ninject Scope问题