我正在尝试使用以下代码(它被反编译):
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应该返回它。
答案 0 :(得分:2)
使用Fusion日志视图启用程序集加载日志记录: Fusion Log View
它会告诉你为什么我找不到它的详细信息。
有些原因可能是,它是从应用程序目录以外的地方加载的,或者确实找到了相同dll的不同版本
答案 1 :(得分:1)
可能是Assembly.Load(string)
采用长整形式的汇编名称(即强名称,可能安装在GAC中),但是你给它的是短汇编名称?