【问题标题】:remove unused preprocessor symbols in c# binary删除 C# 二进制文件中未使用的预处理器符号
【发布时间】:2017-08-22 21:42:29
【问题描述】:

我有一个带有一些条件构建的项目。我编译它。然后用dotpeek看了一下。我注意到 ALL 条件语句和它包装的代码,即使没有定义。

由于此应用程序针对不同的客户端以某些关键方式进行了修改,因此我希望该客户端的构建具有一个 包含已定义的活动 #ifs 的二进制文件。

如何进行自动化构建来实现这一目标?

【问题讨论】:

  • 请分享一些带有条件语句的小代码,DotPeek 能够从已编译的二进制文件中恢复,这些代码可以在我们这边重现。

标签: c# msbuild preprocessor-directive dotpeek


【解决方案1】:

dotPeek 做了两件事

  1. 可以反编译IL代码
  2. 它可以读取PDB文件并查找源文件

您可以在上下文菜单中看到这一点。一项是“反编译的源代码”,另一项是“来自符号文件的源代码”

通过双击一个项目,它会首先尝试执行操作2,即:显示您硬盘上存在的源文件。

这是一个非常简单的程序:

  • 左:来自符号文件的源代码
  • 中间:反编译的源代码
  • 右:IL 代码

如您所见,编译后的代码只包含编译后的那些部分。

因此,无需在构建脚本中剥离这些部分,因为 DLL 或 EXE 不包含它。

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 2017-01-10
    • 2011-01-01
    • 2020-05-04
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多