删除c#binary中未使用的预处理程序符号

时间:2017-08-22 21:42:30

标签: c# msbuild preprocessor-directive dotpeek

我有一个带有一些条件构建的项目。我编译了它。然后使用dotpeek来查看它。我注意到 ALL 条件语句及其包装的代码,即使未定义也是如此。

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

如何实现实现此目的的自动构建?

1 个答案:

答案 0 :(得分:2)

dotPeek做了2件事

  1. 它可以反编译IL代码
  2. 它可以读取PDB文件并查找源文件
  3. 您可以在上下文菜单中看到这一点。一个条目是“Decompiled sources”,另一个是“来自符号文件的来源”

    Context menu

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

    在这里你看到一个非常简单的程序:

    • left:来自符号文件的来源
    • middle:反编译来源
    • 右:IL代码

    如您所见,编译后的代码仅包含为其编译的部分。

    Comparison

    因此,不需要在构建脚本中删除这些部分,因为DLL或EXE不包含它。