Assembly.Load失败甚至已经在域中加载程序集

时间:2013-10-23 12:56:56

标签: c# dll .net-assembly

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

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应该返回它。

2 个答案:

答案 0 :(得分:2)

使用Fusion日志视图启用程序集加载日志记录: Fusion Log View

它会告诉你为什么我找不到它的详细信息。

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

答案 1 :(得分:1)

可能是Assembly.Load(string)采用长整形式的汇编名称(即强名称,可能安装在GAC中),但是你给它的是短汇编名称?