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

Recover custom code of Umbraco from compiled code

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

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

非常感谢任何帮助。

严格来说,您不会恢复源代码,但如前所述,您可以使用 ILSpy or dotPeek 等工具进行反编译,以查看 .NET 二进制文件正在执行的操作的代码表示。

我不得不反编译一个新客户的网站,该网站由于情有可原而丢失了源代码,所以这就是我最终回到原点所做的事情。

  1. 设置新的解决方案,项目结构与之前相同。
  2. 将现有二进制文件移植到测试服务器,并更改配置以将数据库指向新副本。您需要在此服务器上使用完全相同的代码 运行,但所有外部依赖项(数据库、日志记录、blob 存储等)都是独立的。
  3. 将您的反编译代码放在一个屏幕上,Visual Studio 放在另一个屏幕上,一个一个地检查每个文件,直到您得到一个可构建的解决方案。如果解决方案包含测试,请先执行这些测试。
  4. 将您的代码放入源代码管理!此外,请确保您的存储库位于其他位置,无论是在 GitHub/Gitlab 还是另一台机器上 - 只要它不在一个位置即可。
  5. 一旦您觉得代码可以正常工作,请在发布模式下构建新的二进制文件并再次反编译。在这里,将您的旧二进制文件与新二进制文件进行比较,看看是否有任何差异。
  6. 如果这不存在,请构建一个测试框架以确保您移植到新代码的所有功能都将继续工作。
  7. 一旦你觉得你有一个准确的端口,部署。如果您有 blue/green 设置,这将非常适合检查生产问题。

由于您已将 post 标记为 Umbraco,我认为这是一个 Umbraco 站点。确保您使用的 Umbraco 版本与您现有的站点相同,否则您将陷入痛苦的境地。还要确保您的所有第三方库都已正确配置,并且所有 assets/artefacts 都已备份。部署新代码时,您最不想做的就是清除媒体库或删除所有日志。