假设我只有一个默认的应用程序域。
显然,即使它们的路径不同,使用Assembly.LoadFrom()可能会导致加载相同名称、版本和内容的多个程序集。 这似乎与此处所说的相反:
“在绑定时,程序集显示名称的组件确定标识”。(http://blogs.msdn.com/b/suzcook/archive/2003/07/21/57232.aspx)
因为如果标识相同,为什么.NET会第二次将其加载到进程中呢?看来有两种不同的标识。
从那篇博客文章中,还有一些不合理的地方:
“并非所有组件在所有情况下都很重要。如果程序集没有强名称,则版本对于绑定是无关紧要的。但是,如果它被强命名,则程序集引用中的整个版本需要与找到的程序集匹配。”
这与这里所说的有何意义:
当启用此功能时,在加载程序集时不会验证强名称的正确性。默认值为true。(来自http://msdn.microsoft.com/en-us/library/cc679069(v=vs.90).aspx)因此,根本不会验证强名称,这将使Suzanne在她的博客文章中所写的内容不正确。或者"验证"到底意味着什么?我认为所有这些都归结为对程序集标识的完全误解。我不明白程序集标识在何处、为什么以及如何在什么方面起作用。