程序集.即使程序集已在域中加载,加载也会失败

本文关键字:加载 程序集 失败 | 更新日期: 2023-09-27 18:36:44

我正在尝试使用以下代码(已反编译):

foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
    if ((!assembly.FullName.StartsWith("System") && !assembly.FullName.StartsWith("Microsoft")) && !assembly.FullName.StartsWith("mscorlib"))
       {
           list.Add(assembly.FullName);//keep the name of assembly.
       }
}
foreach (string assemblyStirng in list)
{
     var assembly = Assembly.Load(assemblyString);//here FileNotFoundException is thrown.
}

怎么可能?Dll 已经在域中,Assembly.Load 应该返回它。

程序集.即使程序集已在域中加载,加载也会失败

使用融合日志视图打开程序集加载日志记录:融合日志视图

它会告诉您有关我找不到它的原因的详细信息。

一些原因可能是,它是从应用程序目录以外的其他地方加载的,或者它确实找到了同一dll的不同版本

可能是Assembly.Load(string)采用长格式的程序集名称(即强名称,可能安装在 GAC 中),但您给它提供了简短的程序集名称?