2011-06-16 66 views
0

我有一个.cs文件,里面有我的代码。我编译了它,并且得到了一个.dll文件。 我可以打开我的.dll文件并查看我的c#代码,因为我想再次编译它?我可以打开我的Dll文件吗

+0

请不要在标题中加上“C#”来表明它是一个C#问题。这就是标签的用途。 – 2011-06-16 19:45:55

+0

编译后你把它放在哪里? – 2011-06-16 19:46:00

+1

他应该说“轻推微调眨眼睛”以及他的问题 - 他显然是在尝试反编译他没有源代码的东西。 – 2011-06-16 19:48:48

回答

1

使用Reflector.Net查看您的代码,您可以使用它来反汇编您的DLL。或者,如果您有原始的cs文件,那么您可以使用C#编译器进行重建。

0

您可以使用反汇编程序,如Reflector(或许多alternatives之一)将CIL反汇编回C#。

不确定为什么你需要它,如果你自己编译DLL - 你肯定有源代码?

2

呃,你说你编译过一次。这意味着你已经有了源代码。它在我看来有点异常,试图反编译DLL以重新编译它,假设你有源代码。这就是说C#编译器吐出了MSIL代码,这意味着你可以使用例如ildasm.exe这样的工具从编译后的程序集中得到这个MSIL代码。然后,您可以修改生成的IL,并使用ilasm.exe实用程序将其重新编译为托管程序集。

当然,如果初始程序集使用强密钥进行签名,如果不使用私钥进行处理,您将无法使用此密钥对其进行签名。

有一些工具,例如ILSpy(免费)和.NET Reflector(商业),它们允许您将托管程序集反汇编成一些托管语言(C#,VB.NET,...)。当然,在这个过程中,你不能期望获得最初编译程序集时使用的完全相同的源代码,特别是如果它是在Release模式下编译的,并且开启了优化功能,因为像本地变量名称和注释一样不是导致组装。

0

既然你使用.NET,是的。 .NET程序集实际上被设计为易于反编译,所以反射更容易和更快。

你只需要一个类似.NET Reflector的反编译工具就可以进行反编译。反射器现在是零售产品,但有几种免费软件替代品;我使用CodeReflect。但是,尽管像这样的工具会向您显示与您的原始代码接近的东西,但首先它不会是精确的(条件编译的代码不会出现,某些调用和构造可以被优化,或者看起来像在IL中也是一样的,只是略有不同的构造),其次,它不允许你改变任何东西。如果您有.cs文件和Visual Studio(或MSBuild;由VS使用的命令行工具)的副本,则可以将源文件重新编译到DLL中。

相关问题