c# - 如何列出我的解决方案中的所有 DLL 并获取它们的版本?
问题描述
我刚刚开始使用 C#,目前正在尝试创建一个类,它将所有 dll 文件的版本与我的数据库中的版本字符串进行比较。
但是,我不确定如何获取属于我的解决方案的所有 dll 文件。我尝试了以下方法:
Assembly[] applicationDLLs = AppDomain.CurrentDomain.GetAssemblies();
我在某处的论坛上找到了这个。但我不知道需要什么 using 语句,以及这是否是有效代码。
你们中的任何人都可以指出我正确的方向吗?
解决方案
由于程序集可以包含多个dll ( Module
s),因此从技术上讲,您可以尝试
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文件或类似文件。
推荐阅读
- powershell - 在 Powershell 中根据大小重命名文件
- dictionary - 为什么我的条件只消除字典中的第一个键/值对?
- php - 无法从 Guzzle EntityBody 获取响应正文
- javascript - 如何将特定行从一个电子表格拉到另一个,更新它然后在原始工作表上替换它
- excel - 为什么 CELL("Width", A1) 用“FALSE”填充右侧的单元格?
- node.js - 无法在 firebase 存储桶中创建文件夹 - firebase 管理员
- java - [java]我创建了一个添加类,它可以编译但没有任何东西添加到数组列表中
- angular - 来自html的角度过滤数据
- excel - 如何在 MS Excel 折线图中为每个不同的产品设置不同的水平(类别)标签
- r - R,毫升,毫升。特征重要性总是为每个特征返回 1