在完全信任的asp.net mvc 2应用程序的上下文中,只是想知道两者之间是否存在任何差异。
答案 0 :(得分:56)
.NET Framework将加载程序集推迟到当前的AppDomain中,直到需要它们为止。例如,如果仅从SomeMethod()调用第三方库,则第一方DLL通常在第一次运行SomeMethod()之前不会加载。
AppDomain.GetAssemblies()为您提供已加载到当前AppDomain的所有程序集。 BuildManager.GetReferencedAssemblies()返回从Web.config和其他地方引用的所有程序集的列表,并将这些程序集加载到当前的AppDomain中。
以上是上述例子。
在此示例中,CLR将ThirdParty.dll加载到当前AppDomain中,直到绝对必要。因为有必要执行SomeMethod(),所以当它被加载时。
可替换地:
在这里,即使你从未调用过SomeMethod(),对BuildManager.GetReferencedAssemblies()的调用代表你将第三方库加载到当前的AppDomain中。
当然,这一切都需要进行某些优化等,但总体思路仍然存在。