2013-05-07 82 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