【发布时间】:2020-05-25 14:20:18
【问题描述】:
在我的控制台应用程序中,我需要加载一些外部程序集的文件版本值。
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 = ... 呢?
【问题讨论】:
-
因为您正在将“my.dll”加载到正在运行的应用程序中。所以“my.dll”需要另一个你没有像错误一样加载的程序集。 (mvc.core)。使用 system.diagnostic 中的 FileVersionInfo.GetVersionInfo("my.dll").FileVersion 来避免错误。
-
@anilcemsimsek 你是对的,谢谢,它有效。我查了nuget包Microsoft.AspNetCore.Mvc.Core,没有3.1.0.0版本。这很奇怪
标签: c# .net-core-3.1