以ILSPy 为例。当我查看我的程序集时,我是否正在查看我原来的 C#?或者,这段代码是否使用某种逆向工程过程从 CIL 重构?
我的理解是发布程序集不包含任何原始代码,仅包含 CIL。那么,如果我在发布模式下构建程序集会有所不同吗?
以ILSPy 为例。当我查看我的程序集时,我是否正在查看我原来的 C#?或者,这段代码是否使用某种逆向工程过程从 CIL 重构?
我的理解是发布程序集不包含任何原始代码,仅包含 CIL。那么,如果我在发布模式下构建程序集会有所不同吗?
发布和调试程序集都不包含原始源代码。
ILSpy 和朋友分析编译的 CIL 以提取合理的 C# 等效项。
发布与调试仍然有很大的不同。编译器确实进行了优化。请参阅Scott Hanselman 关于 Release vs Debug 的帖子。
就 ILSpy 的作用而言,是的,它显示 CIL,然后将其反向工程为合理的 C#/VB 表示。我承认 ILSpy 做得很好!我已经用它反转了其他人的程序集,并且可以完全理解他们的代码。我唯一一次遇到问题是使用 WPF 和 GUI 的东西,但我相信也有办法解决这个问题。
在防止组装逆转和保护您的知识产权方面,请使用 Dotfuscator 或其他混淆工具。
您看到的是从 IL 重构的代码。这个重建过程可以在任何 .NET 程序集上执行,无论它是在调试模式还是发布模式下构建的。
您无法阻止以这种方式从您的程序集中重构您的源代码,但如果您想让代码变得不那么有用/易于理解,您可以使用各种 .NET 混淆工具。
实际上,您可以使用 ILMerge 或 .net FuZe 将您的 exe 和 dll 包装到一个 exe 或 dll 容器中,使其更难反汇编。