Xai*_*oft 119 .net assemblies assembly-loading system.reflection
我正在查看msdn文档,我仍然对使用LoadFile
和LoadFrom
加载程序集之间的区别究竟有点困惑.有人可以提供一个例子或类比来更好地描述它.MSDN文档让我更加困惑.此外,它是ReflectionOnlyLoadFrom
相同的,LoadFrom
只是它只在反射模式下加载程序集.
由于我的.NET经验并不是最好的,因此以下是有关使用LoadFile的MSDN文档的一些问题:
1)LoadFile
检查具有相同标识但位于不同路径的程序集是什么意思?身份是什么(例子)?
2)它声明LoadFile
不会将文件加载到"LoadFrom上下文"中,并且不会使用加载路径解析依赖关系.这是什么意思,有人可以提供一个例子吗?
3)最后,它声明LoadFile
在这种有限的场景中很有用,因为LoadFrom无法加载具有相同身份但路径不同的程序集; 它只会加载第一个这样的组件,这再次带给我同样的问题,组件标识是什么?
Jef*_*nal 92
这清楚了吗?
// path1 and path2 point to different copies of the same assembly on disk:
Assembly assembly1 = Assembly.LoadFrom(path1);
Assembly assembly2 = Assembly.LoadFrom(path2);
// These both point to the assembly from path1, so this is true
Console.WriteLine(assembly1.CodeBase == assembly2.CodeBase);
assembly1 = Assembly.LoadFile(path1);
assembly2 = Assembly.LoadFile(path2);
// These point to different assemblies now, so this is false
Console.WriteLine(assembly1.CodeBase == assembly2.CodeBase);
Run Code Online (Sandbox Code Playgroud)
编辑:为了回答你在修改过的问题中提出的问题,你肯定想在集会身份上阅读Suzanne Cook.
有很多规则可以控制程序集的加载方式,其中一些规则与它们如何解决依赖关系有关 - 如果你的AssemblyA依赖于AssemblyB,.NET应该在哪里找到AssemblyB?在全局程序集缓存中,它找到AssemblyA的相同目录,还是完全在其他地方?此外,如果它找到该程序集的多个副本,它应该如何选择使用哪个?
LoadFrom
有一套规则,而LoadFile
另一套规则.很难想象有很多理由可以使用LoadFile
,但是如果你需要在同一个组件的不同副本上使用反射,它就在你身边.
Cra*_*gTP 60
LoadFile与LoadFrom
小心 - 这些不是一回事.
LoadFrom()通过Fusion,可以重定向到另一个路径,但是如果已经在LoadFrom上下文中加载了相同的身份,则可以使用相同的身份.
LoadFile()根本没有通过Fusion绑定 - 加载器只是继续并正好加载*调用者请求的内容.它不使用Load或LoadFrom上下文.
因此,LoadFrom()通常会为您提供所要求的内容,但不一定如此.LoadFile()适用于那些真正非常想要的人.(*但是,从v2开始,策略将应用于LoadFrom()和LoadFile(),因此LoadFile()不一定完全是请求的内容.另外,从v2开始,如果具有其标识的程序集在GAC,将使用GAC副本.使用ReflectionOnlyLoadFrom()来加载您想要的 - 但是,请注意,无法执行以这种方式加载的程序集.)
LoadFile()有一个catch.由于它不使用绑定上下文,因此不会在其目录中自动找到其依赖项.如果它们在Load上下文中不可用,则必须订阅AssemblyResolve事件才能绑定它们.
看到这里.
另请参阅在同一博客上选择绑定上下文文章.
Lor*_*ore 42
经过多次头疼,我今天下午发现了自己的不同之处.
我想在运行时加载DLL,DLL住在另一个目录中.该DLL有自己的依赖项(DLL),它们也存在于同一目录中.
LoadFile():加载特定的DLL,但不加载依赖项.因此,当第一次调用从DLL内部发送到其他DLL之一时,它会抛出FileNotFoundException.
LoadFrom():加载我指定的DLL以及该目录中的所有依赖项.
归档时间: |
|
查看次数: |
49838 次 |
最近记录: |