检查已编译程序集的内容
Posted
技术标签:
【中文标题】检查已编译程序集的内容【英文标题】:Inspecting contents of compiled assemblies 【发布时间】:2014-08-03 00:59:28 【问题描述】:我希望有人能够为我指明正确的方向。我们正在将数据库中的一些字段从 int 转换为 bigint。这意味着我们需要将代码库中的相应字段从 int 更新为 long。问题是我们的代码库非常庞大。我们有数百个项目,手动搜索它们会很乏味。因此,我想构建一个应用程序,当提供程序集时,它可以在所有代码中搜索特定字符串(在本例中为字段名称)。我已经使用反射来调用方法和获取属性值等,但我可以使用它来搜索已编译程序集的实际代码中的值吗?该值可以是任何东西——属性、常量、方法等。我也看过 ildasm,但它似乎没有为我提供搜索特定字符串值的方法。有什么想法吗?
【问题讨论】:
我建议查看Roslyn
,这是微软的编译器即服务。您可以连接到它的 AST(抽象语法树),这将帮助您解析代码并搜索属性、常量、方法等。您可以在这里查看:msdn.microsoft.com/en-us/vstudio/roslyn.aspx
我想这解释了它是如何变得“巨大”的:/这是技术债务,你等待的时间越长,它就越贵。今天是开始重构的时间。
【参考方案1】:
有几种产品可以为您做到这一点:
Red Gate 的反射器 (http://www.red-gate.com/products/dotnet-development/reflector/),付费
Telerik 的 JustDecompile (http://www.telerik.com/products/decompiler.aspx),免费
JetBrains 的 dotPeek (http://www.jetbrains.com/decompiler/),免费
我主要是出于习惯使用 Reflector,因为 1.) 我不久前付费购买了它,2.) 我一直在使用它,因为它是免费的,所以很难改掉这个习惯。它还可以让您将程序集直接导出到源文件,然后您可以从那里对其进行操作。
【讨论】:
【参考方案2】:您可以使用 Reflector 在程序集中进行搜索。
http://www.red-gate.com/products/dotnet-development/reflector/
【讨论】:
以上是关于检查已编译程序集的内容的主要内容,如果未能解决你的问题,请参考以下文章