C# 我可以打开我的Dll文件吗

C# 我可以打开我的Dll文件吗,c#,C#,我有一个.cs文件,这是我的代码。我编译了它,得到了一个.dll文件。 我是否可以打开.dll文件并查看我的c代码,因为我想再次编译它 用于查看代码,您可以使用它来反汇编DLL。或者,如果您有原始的cs文件,则可以使用C#编译器重新生成。用于查看代码,也可以使用它来反汇编DLL。或者,如果您有原始的cs文件,则可以使用C#编译器重新生成。您可以使用诸如(或其中一个)的反汇编程序将CIL反汇编回C# 不确定如果您自己编译了DLL,为什么会需要它-您肯定有源代码吗?您可以使用诸如(或其中一个)的反汇

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

用于查看代码,您可以使用它来反汇编DLL。或者,如果您有原始的cs文件,则可以使用C#编译器重新生成。

用于查看代码,也可以使用它来反汇编DLL。或者,如果您有原始的cs文件,则可以使用C#编译器重新生成。

您可以使用诸如(或其中一个)的反汇编程序将CIL反汇编回C#


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

您可以使用诸如(或其中一个)的反汇编程序将CIL反汇编回C


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

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

当然,如果初始程序集是使用强密钥签名的,那么如果不使用私钥进行处理,则无法使用相同的密钥对其进行签名


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

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

当然,如果初始程序集是使用强密钥签名的,那么如果不使用私钥进行处理,则无法使用相同的密钥对其进行签名


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

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

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


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

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

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


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

请不要在标题中添加“C”仅仅表示这是一个C问题。这就是标签的作用。编译后你把它放在哪里了?他应该在提问的同时说“轻推-轻推-眨眼-眨眼”-他显然是在试图反编译一些他没有来源的东西。请不要在你的标题中放“C”,只是为了表明这是一个C问题。这就是标签的作用。编译后你把它放在哪里了?他应该在提问的同时说“轻推-轻推-眨眼-眨眼”-他显然是在试图反编译一些他没有来源的东西。