删除 C# 二进制文件中未使用的预处理器符号
Posted
技术标签:
【中文标题】删除 C# 二进制文件中未使用的预处理器符号【英文标题】:remove unused preprocessor symbols in c# binary 【发布时间】:2017-08-22 21:42:29 【问题描述】:我有一个带有一些条件构建的项目。我编译它。然后用dotpeek看了一下。我注意到 ALL 条件语句和它包装的代码,即使没有定义。
由于此应用程序针对不同的客户端以某些关键方式进行了修改,因此我希望该客户端的构建具有一个 仅 包含已定义的活动 #ifs 的二进制文件。
如何进行自动化构建来实现这一目标?
【问题讨论】:
请分享一些带有条件语句的小代码,DotPeek 能够从已编译的二进制文件中恢复,这些代码可以在我们这边重现。 【参考方案1】:dotPeek 做了两件事
-
可以反编译IL代码
它可以读取PDB文件并查找源文件
您可以在上下文菜单中看到这一点。一项是“反编译的源代码”,另一项是“来自符号文件的源代码”:
通过双击一个项目,它会首先尝试执行操作2,即:显示您硬盘上存在的源文件。
这是一个非常简单的程序:
左:来自符号文件的源代码 中间:反编译的源代码 右:IL 代码如您所见,编译后的代码只包含编译后的那些部分。
因此,无需在构建脚本中剥离这些部分,因为 DLL 或 EXE 不包含它。
【讨论】:
以上是关于删除 C# 二进制文件中未使用的预处理器符号的主要内容,如果未能解决你的问题,请参考以下文章