将ASP.NET源代码与已编译的Web应用程序匹配
我的客户端有一个编译过的ASP.NET 2.0应用程序.一年前部署.它们还有4个版本的源代码项目/解决方案,不受源代码控制(存储在以前的开发人员工作站文件系统中).没有文件日期看起来彼此匹配.
有没有办法确定哪些(如果有)这些版本是实际部署到生产网站的版本? 解决方法
我已经多次在客户端项目上完成此操作并使用Reflector,就像其他评论员一样.这种事情经常发生,而不是应该发生.例如,当有人突然离开开发团队时.在一个项目中,我的团队成员在整个开发团队离开之后被召集进来,我们不得不对生产中运行的每一段代码都遵循这个程序,以确保我们实际拥有的东西.
我处理它的方法是将每个版本的已编译代码放在文件系统的单独区域中.这包括源代码控制或开发工作站之外的版本.这很重要,因为Reflector看到IL而不是实际的原始源,并且您想要比较苹果和苹果. 我使用FileDisassembler for Reflector将每个二进制文件反编译成一个单独的文件夹.我最终得到一个看起来像这样的结构: ProjectXyzReconciliation |-production |-staging |-test |-qa |-devworkstation |-sourcecontrol |-reconciled (this is what will eventually go back in source control) 然后我使用WinMerge(但同样使用其他合并/比较工具)来比较目录并将它们合并到“reconciled”文件夹中.我通常会将生产中运行的内容填入其中并将其与其他版本进行比较. 第一步实际上只是为了看看有什么不同,并且反编译到文件允许您使用像WinMerge这样的工具来获取有关做出决策的实际不同的报告. 有时,此过程会产生一个或两个更改,这些更改很容易追溯到错误跟踪数据库或电子邮件等中的错误,并且可以决定是应该进入还是留在外面进行进一步的工作. 当解释每个差异并将其合并或拒绝以供以后重新工作或删除时,新协调的代码将用作未来开发和重构的新基础.这确实会丢失代码中的任何注释,但是当需要整个过程时,丢失注释并不是一件容易的损失. 第一次通过,这看起来令人生畏,但是我的团队成员已经发现,在以后的项目中,他们往往看起来像是在一个恶劣的情况出现时能够看似完成不可能的英雄,值得将其放入您的工具箱中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 为什么Ninject不会解析基类中的受保护属性
- asp.net-mvc – 使用Linq返回空字符串到SQL – 没有行的相关
- asp.net-mvc – 如何在.net MVC中使用Flux和事件发射器?
- 如何检查ASP.Net中客户端(JavaScript)的Page.Validate()?
- asp.net – 静态字段初始化程序有时在Application_start之前
- asp.net-mvc – TinyURL喜欢使用ASP.NET MVC进行路由吗?
- asp.net-mvc – 为什么在视图引擎中指定位置时,viewstart文
- asp.net-mvc-4 – 在MVC4中捕获404错误
- asp.net-mvc – .net MVC控制器动作方法的属性
- asp.net – 过滤掉字符串中的锚标记