首页 > 解决方案 > 如何列出我的解决方案中的所有 DLL 并获取它们的版本?

问题描述

我刚刚开始使用 C#,目前正在尝试创建一个类,它将所有 dll 文件的版本与我的数据库中的版本字符串进行比较。

但是,我不确定如何获取属于我的解决方案的所有 dll 文件。我尝试了以下方法:

Assembly[] applicationDLLs = AppDomain.CurrentDomain.GetAssemblies();

我在某处的论坛上找到了这个。但我不知道需要什么 using 语句,以及这是否是有效代码。

你们中的任何人都可以指出我正确的方向吗?

标签: c#reflection

解决方案


由于程序集可以包含多个dll ( Modules),因此从技术上讲,您可以尝试

  var result = AppDomain
    .CurrentDomain
    .GetAssemblies()
    .SelectMany(asm => asm.GetModules())
    .Select(module => $"{module.Name,-40} {module.Assembly.GetName().Version}");

  Console.WriteLine(string.Join(Environment.NewLine, result));

结果:(可能会有所不同)

mscorlib.dll                             4.0.0.0
WFA_Junk_4.exe                           1.0.0.0
System.Windows.Forms.dll                 4.0.0.0
System.dll                               4.0.0.0
System.Drawing.dll                       4.0.0.0
System.Configuration.dll                 4.0.0.0
System.Core.dll                          4.0.0.0
System.Xml.dll                           4.0.0.0

但是,我怀疑您是否真的想要所有这些System...dll;您可能想检查Assembly.GetEntryAssembly()哪个是exe文件或类似文件。


推荐阅读