2017-04-10 34 views
0

我將實現一個函數,該函數可以提取exe中的所有引用的dll文件。通過System.Reflection.Assembly獲取dll文件擴展名

我正在使用「System.Reflection.Assembly」來做到這一點。

但我不知道如何獲得文件擴展名。

例如,text.exe包含x.dll,y.dll和z.dll

以上代碼僅返回X,Y,Z。

任何人都知道如何去呢?

謝謝大家。

System.Reflection.Assembly assemblyFile = System.Reflection.Assembly.LoadFile(exePath); 

System.Reflection.AssemblyName[] names = assemblyFile.GetReferencedAssemblies(); 

foreach (System.Reflection.AssemblyName data in names) 
{ 
    listBox2.Items.Add(data.Name); 
} 

回答

-1
foreach (System.Reflection.AssemblyName data in names) 
{ 
    listBox2.Items.Add(data.FullName); 
} 
+2

雖然這個代碼片斷可以解決的問題,[包括說明]( //meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高你的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess

2

如果你正在尋找完整的文件名(如x.dll),然後使用此:

 foreach (System.Reflection.AssemblyName data in names) 
     { 
      var assembly = System.Reflection.Assembly.ReflectionOnlyLoad(data.FullName); 
      listBox2.Items.Add(System.IO.Path.GetFileName(assembly.Location)); 
     } 
+0

如果程序集不在GAC中,也不在執行程序集的搜索路徑中,則無法在ReflectionOnlyLoad()方法中加載 – vitalygolub

+0

這絕對是我想要的!謝謝!! – ChiaHsien