我可以打开我的Dll文件吗

本文关键字:文件 Dll 我的 我可以 | 更新日期: 2023-09-27 17:59:16

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

我可以打开我的Dll文件吗

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

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

有一些工具,如ILSpy(免费)和.NET Reflector(商用),允许您将托管程序集反汇编回某些托管语言(C#、VB.NET…)。当然,在这个过程中,您不能期望获得最初用于编译程序集的完全相同的源代码,特别是如果它是在Release模式下编译的,并且启用了优化,因为局部变量名和注释等内容根本不属于生成的程序集。

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

您可以使用诸如Reflector之类的反汇编程序(或众多替代程序之一)将CIL反汇编回C#。

如果你自己编译了DLL,不知道为什么你会需要它——你肯定有源代码吗?

由于您使用的是.NET,是的。NET程序集实际上被设计成可以很容易地反编译,因此反射更容易、更快。

您只需要像.NETReflector这样的反编译工具就可以进行反编译。Reflector现在是一种零售产品,但有几个免费软件替代品;我使用CodeReflect。

然而,尽管像这样的工具会向您展示一些接近原始代码的东西,但首先它不会是精确的(有条件编译的代码不会出现,某些调用和构造可以优化,或者在IL中看起来与稍微不同的构造相同),其次,它不允许您更改任何内容。如果您有.cs文件和Visual Studio(或MSBuild;VS使用的命令行工具)的副本,则可以将源文件重新编译到DLL中。