0

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

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

4

2 回答 2

2

使用融合日志视图打开装配负载日志记录: Fusion Log View

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

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

于 2013-10-23T13:04:06.743 回答
1

是否会Assembly.Load(string)采用长形式的程序集名称(即强命名,可能安装在 GAC 中),但您给它的是短程序集名称?

于 2013-10-23T13:05:49.463 回答