.NET Core 3.1 读取程序集的文件版本
.NET Core 3.1 read Assembly's File Version
在我的控制台应用程序中,我需要加载一些外部程序集的文件版本值。
var assembly1 = Assembly.LoadFrom("my.dll");
var assembly2 = AssemblyLoadContext.Default.LoadFromAssemblyPath("my.dll");
var versionNumber = assembly1.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
事情是这样的——如果我使用 var assembly1 = ...
或 var assembly2 = ...
然后我会收到讨厌的错误消息
无法加载文件或程序集'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
当调用 GetCustomAttribute
方法时,但如果两行都被使用,则一切正常。那么,如何修复它才能使用 var assembly1 = ...
或 var assembly2 = ...
?
FileVersionInfo.GetVersionInfo
不尝试将整个 DLL 加载到应用程序中:
System.Diagnostics.FileVersionInfo fvo =
System.Diagnostics.FileVersionInfo.GetVersionInfo(@"my.dll");
string versionNumber = fvo.FileVersion;
如果用dotnet build -p:Version=4.4.4
构建my.dll
,versionNumber
将等于上述示例代码中的“4.4.4.0”。
以下代码正常,请检查路径是否正确
private const string AssemblyPath = "C:\Users\test.dll";
var assembly2 = AssemblyLoadContext.Default.LoadFromAssemblyPath(AssemblyPath);
var versionNumber = assembly2.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
或
private const string AssemblyPath = "C:\Users\test.dll";
var assembly1 = Assembly.LoadFrom(AssemblyPath);
var versionNumber = assembly1.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
在我的控制台应用程序中,我需要加载一些外部程序集的文件版本值。
var assembly1 = Assembly.LoadFrom("my.dll");
var assembly2 = AssemblyLoadContext.Default.LoadFromAssemblyPath("my.dll");
var versionNumber = assembly1.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
事情是这样的——如果我使用 var assembly1 = ...
或 var assembly2 = ...
然后我会收到讨厌的错误消息
无法加载文件或程序集'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
当调用 GetCustomAttribute
方法时,但如果两行都被使用,则一切正常。那么,如何修复它才能使用 var assembly1 = ...
或 var assembly2 = ...
?
FileVersionInfo.GetVersionInfo
不尝试将整个 DLL 加载到应用程序中:
System.Diagnostics.FileVersionInfo fvo =
System.Diagnostics.FileVersionInfo.GetVersionInfo(@"my.dll");
string versionNumber = fvo.FileVersion;
如果用dotnet build -p:Version=4.4.4
构建my.dll
,versionNumber
将等于上述示例代码中的“4.4.4.0”。
以下代码正常,请检查路径是否正确
private const string AssemblyPath = "C:\Users\test.dll";
var assembly2 = AssemblyLoadContext.Default.LoadFromAssemblyPath(AssemblyPath);
var versionNumber = assembly2.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;
或
private const string AssemblyPath = "C:\Users\test.dll";
var assembly1 = Assembly.LoadFrom(AssemblyPath);
var versionNumber = assembly1.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;