从已编译的代码中恢复Umbraco的自定义代码

时间:2018-11-25 19:27:58

标签: c# umbraco umbraco7

我丢失了Umbraco的自定义源代码(控制器,模型),但是我的网站在IIS上运行。

我可以从编译版本中恢复代码吗?如果是,我该如何实现?

我们将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:3)

严格来说,您将无法恢复源代码,但是正如已经说过的那样,您可以使用ILSpydotPeek之类的工具进行反编译,以查看.NET二进制文件的代码表示形式

不幸的是,我不得不对由于环境恶化而丢失了源代码的新客户的网站进行反编译,因此,这就是我最终要做的事情。

  1. 使用与以前相同的项目结构来设置新解决方案。
  2. 将现有二进制文件移植到测试服务器,然后更改配置以将数据库指向新副本。您将希望在此服务器上运行完全相同的代码,但所有外部依赖项(数据库,日志记录,blob存储等)都必须分开。
  3. 将反编译的代码放在一个屏幕上,将Visual Studio放在另一个屏幕上,并逐个浏览每个文件,直到获得可构建的解决方案。如果解决方案包含测试,请首先进行测试。
  4. 将您的代码放入源代码管理!另外,请确保您的存储库位于其他位置,无论它位于GitHub / Gitlab还是另一台机器上-只要它不在一个位置即可。
  5. 一旦您认为代码可以工作,就可以在“发布”模式下构建新的二进制文件,然后再次进行反编译。在这里,将您的旧二进制文件与新二进制文件进行比较,以查看是否存在差异。
  6. 如果不存在,请构建一个测试框架,以确保要移植到新代码的所有功能将继续起作用。
  7. 一旦您觉得端口准确,就进行部署。如果您使用的是蓝色/绿色设置,则可以很好地检查生产问题。

由于您已将帖子标记为Umbraco,因此我认为这是Umbraco网站。确保您使用的Umbraco版本与您现有的网站相同,否则您将遭受重创。另外,请确保正确配置了所有第三方库,并备份了所有资产/工件。部署新代码时,您要做的最后一件事是清除媒体库或杀死所有日志。