我刚刚继承了一个源代码很久已丢失的Web应用程序(最初编写于2010年并搁置)。该应用程序有几个与应用程序本身相关的.dll程序集,例如“applicationCORE.dll”,“applicationBI.dll”,“applicationDATA.dll”和“application.dll”如何反编译ASP.NET/C#Web应用程序
我见过this question和建议的工具(Just Decompile)很棒,创建了一个.sln和.csproj文件为我反编译的第一个程序集。我的问题是,如何将通过反编译创建的各种项目与编译的Web应用程序文件(.aspx)合并,我如何解析.aspx文件中的引用,即引用不再存在的代码隐藏文件,例如“default.aspx”引用“default.aspx.cs”,而反编译器创建一个“default.cs”文件。重命名.cs文件还是更新引用更安全?
最后,将每个dll作为解决方案中的单独项目出现吗?
我意识到这可能被认为是一个重复的问题,但似乎并没有一个在线资源通过这个过程来引导开发人员。
不确定您的意思是“合并各个项目”。至于文件名等框架约定,您可能需要手动更正所有这些。将一个足够复杂的应用程序反编译成可用的源代码是一个艰难的过程,并且是丢失源代码的代价。我怀疑每个DLL都是自己的项目,我无法想象任何其他方式来构造,即使是原始的源代码。 – David
对不起,我的术语可能不正确,我指的是合并Web文件与不同的项目。从您的回复中,听起来像我应该使用“application.dll”解决方案文件,手动更新引用,然后将其他“.dll”文件生成的项目(反编译后)添加到解决方案中?我知道它的苦心经历 - 在你看来,与重写看似复杂的应用程序相比,它是一条更长的道路吗? – Daniel
我可能会采用创建应用程序/解决方案/等的空壳的方法。作为一种“受控环境”,然后手动将反编译的代码转换为该代码。至于什么是更长的路径,这是由你的组织来决定的。他们想要通往哪条路?一种可能会工作一段时间的胶带解决方案?具有文档和可测试性和支持的企业应用程序?中间某个地方?在正在编写的实际代码行之外,这个决定很多。 – David