You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取C# Prism 6项目中各DLL版本?是否仅需遍历文件夹?

获取C# Prism 6项目中DLL版本的方法

遍历文件夹确实是常用方法,但绝对不是唯一途径,下面给你整理几个实用的方案:

1. 遍历文件夹读取版本信息

这是最直接的方式,你可以用Directory.GetFiles遍历指定目录下的DLL文件,再通过FileVersionInfo.GetVersionInfo获取版本信息。示例代码如下:

var dllDirectory = @"你的项目输出目录或依赖项目录";
foreach (var dllPath in Directory.GetFiles(dllDirectory, "*.dll"))
{
    var versionInfo = FileVersionInfo.GetVersionInfo(dllPath);
    Console.WriteLine($"{Path.GetFileName(dllPath)}: {versionInfo.FileVersion}");
}

这种方法能覆盖所有本地存在的DLL,包括自定义DLL和NuGet下载的依赖,通用性很强。

2. 通过NuGet包管理器直接查看

对于NuGet依赖项,完全不用自己写代码读取——打开Visual Studio的NuGet包管理器(右键项目→管理NuGet程序包),切换到「已安装」标签,就能直接看到每个NuGet包的版本号。如果是多模块项目,还可以在解决方案级别的NuGet管理器里统一查看所有项目的依赖版本。

3. 解析项目文件(.csproj)

Prism项目的每个模块都有对应的.csproj文件,里面会记录NuGet包的引用版本,以及自定义DLL的引用路径和版本信息。你可以直接读取这些XML格式的文件,解析<PackageReference>或<Reference>节点来获取版本。比如:

<!-- NuGet包引用示例 -->
<PackageReference Include="Prism.Core" Version="6.3.0" />
<!-- 自定义DLL引用示例 -->
<Reference Include="MyCustomDll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
  <HintPath>..\Libs\MyCustomDll.dll</HintPath>
</Reference>

这种方法适合在没有编译输出的时候,直接从项目配置里获取版本信息。

4. 利用反射在运行时获取

如果你的项目已经在运行中,可以通过反射加载程序集,读取Assembly.GetName().Version属性。不过要注意,这种方法只能获取当前已加载到应用程序域中的DLL版本,未被加载的依赖无法获取。示例代码:

// 获取当前程序集引用的所有已加载程序集
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
    Console.WriteLine($"{assembly.GetName().Name}: {assembly.GetName().Version}");
}

总结一下,遍历文件夹是靠谱的通用方法,但根据你的场景(比如是编译前查看、运行时获取,还是只关注NuGet包),可以选择更合适的方式。

内容的提问来源于stack exchange,提问作者Bro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:48:05