长话短说,VSS 决定不允许我进行一些代码更改。我错过了一个我不想重写的大小合适的功能(去年夏天作为工作交给了合作社)。它工作得很好,可以满足客户的需求。但是……我没有这台机器,而且它所开发的机器已经铺得很低了!
干!
我们直接从 Visual Studio 将站点发布到测试环境中,然后将文件复制到生产环境中。所以我有来自 VS 发布的“编译”文件。
我怎样才能把它重新变成代码?我确信我可以弄清楚它在哪个 DLL 中,并且我认为反射器之类的东西将是我最好的选择?是否保留了原始变量名?
长话短说,VSS 决定不允许我进行一些代码更改。我错过了一个我不想重写的大小合适的功能(去年夏天作为工作交给了合作社)。它工作得很好,可以满足客户的需求。但是……我没有这台机器,而且它所开发的机器已经铺得很低了!
干!
我们直接从 Visual Studio 将站点发布到测试环境中,然后将文件复制到生产环境中。所以我有来自 VS 发布的“编译”文件。
我怎样才能把它重新变成代码?我确信我可以弄清楚它在哪个 DLL 中,并且我认为反射器之类的东西将是我最好的选择?是否保留了原始变量名?
我会使用 .NET 反射器。如果您拥有 PDB 文件和 DLL,您的原始变量名将被保留(前提是您没有运行任何类型的混淆器)。
我建议尝试反映您编译的代码,看看它的可读性如何。
一路反光。您不能依赖局部变量名称,因为它们实际上并不存在(只有字段保留它们的名称),但是拥有匹配的 pdb 将大有帮助。如果您使用反射器的pro/EAP版本,它将为您完成必须的工作(生成完整的 C# 反汇编等,因此您不必逐个方法或使用插件)。
当然,您可能仍需要分别查看每个目录。
最好的方法是使用像http://www.red-gate.com/products/reflector/这样的反编译器。您将丢失变量名和注释,但您得到的将被编译。
糟透了,但可能比从头开始要好得多。
我使用 Telerik 的 JustDecompile 从预编译站点获取源代码。它是免费的,并且已经完成了我需要的一切。
Salamander - 一个 .NET 反编译器 http://www.remotesoft.com/salamander/index.html
我从未使用过这个工具,但他们在 .NET Rocks 上谈论过它!一会儿回来。http://www.dotnetrocks.com/default.aspx?showNum=194
我有类似的问题并使用反射器对其进行反编译。我得到了源代码,然后更改了我想要的位,然后重新构建它。然后我再次将该 dll 复制到生产站点。它开始反映我的变化。这很简单,一点也不难,可能是因为预编译站点的每个页面都有 dll,并且是可更新的,所以 dll 中只有代码隐藏文件。