我在现有的ASP.NET MVC项目上工作。该解决方案使用FluentNHibernate组件(v 1.0.0)。
前团队中的某个人(解决方案是MVC2)在其上工作,修改了组件源(为了改变行为)。修改和编译的dll包含在MVC解决方案中。
现在,我将解决方案转换为MVC 5,并通过NuGet包更新现有库。不幸的是,我不能用FluentNHibernate组件做同样的事情,因为如果我更新它,它会丢失修改后的行为,如果我使用更新的版本会产生错误。
修改后的组件的来源不可用。我能做什么?
我决定从gitHub获取FluentNHibernate 1.0.0版,比较项目文件,注意差异,并将其包含在实际的(v 1.4.0.0)FluentNHibernate代码中。
为了比较差异,我需要从(修改过的)dll中获取原始代码。
是否有加载项或可以将dll转换为项目的内容? 我知道(并且我使用)RedGate的 Reflector ,但我想从dll获取所有必需的 c#文件,而不仅仅是查看类定义代码。
答案 0 :(得分:3)
如果你的dll是用.NET语言(C#/ Vb.NET)创建的,它可以用一些工具反编译,比如JetBrains dotPeek或Telerik JustDecompile。这些工具可以从dll(或exe)生成所有C#文件和项目文件。
如果您的dll / exe已被混淆,请小心,结果代码将难以读取(您将不得不重命名)。
在dotPeek和JustDecompile中,右键单击加载的dll,然后选择“创建项目”(或“导出到项目”)。您将获得所有C#文件(或vb.net)和项目文件。
在某些情况下,其中一个工具将无法反编译。你可以测试另一种工具,它可以工作......