2013-05-07 84 views
0

如何知道反编译程序集是用C#还是VB.net编写的?反编译程序集,使用哪种编程语言

+1

在什么情况下会有影响? – 2013-05-07 11:45:53

+0

@MarcGravell一个新的.net项目我将要工作,我有一些程序集,但没有源代码。 – 2013-05-07 12:09:26

+0

,它不回答为什么它很重要的问题... – 2013-05-07 12:16:16

回答

1

我不清楚清单/属性中有任何明确的“我已经编译过...”信息。也许你可以使用特征检测(特别是,事情怎么样匿名类型实现,和模块级方法),但是:

  • 在大多数情况下,它不应该的问题
  • 编译器你不知道大概可能会出现类似的情况,给你错误的答案
  • 并非所有的IL都来自编译器;它可以被组装从原材料IL,无论是与IL作为源语言,或通过元编程技术

就个人而言,我会强烈建议避免对源语言的任何依赖

1

我依稀记得有是在VB项目中自动引用的实用程序集合,但不是C#项目。我在说.net 1.1时代(Visual Studio 2003)。它使得访问Explorer shell的部分非常简单。 我一直在寻找,但一直未能找到它(将编辑,如果我能记得它是什么)。它可能已经在以后的Visual Studios中被淘汰/放弃,但这对于原始VB来说是一个非常强大的指标(C#程序集也可以引用它)。

编辑:正如Hans在评论中指出的那样,程序集是Microsoft.VisualBasic。

除此之外,它可能通过找到不同版本的C#vs VB编译器使用的IL模式来编译不同的通用语言结构。

如果您只想查看编译程序集的源代码的近似值。 .Net反编译器,如ILSpy,.Net Reflector或dotPeek,如果原始程序集没有被模糊处理,它会做得很好。

+0

小问题:任何程序集都可以引用该组件(实际上有一些方便的东西,如果你可以通过名称中的VisualBasic来引用某些东西的语言势利的障碍) – 2013-05-07 13:23:06

+0

Yeap,我在回应中写道。事实上,我从来没有使用VB,但已经在我的C#程序中使用该程序集。 – 2013-05-07 21:45:24