【问题标题】:Reflection.Assembly::Load methodReflection.Assembly::Load 方法
【发布时间】:2013-01-25 07:43:10
【问题描述】:

当我尝试使用此方法加载程序集时,长名称和部分名称之间有什么区别? 从MSDN,我得到这个: 对于长名称:如果您引用任何属于公共语言运行时的程序集或位于全局程序集缓存中的任何程序集,则需要完整的程序集引用。 对于部分名称:运行时仅在应用程序目录中查找程序集

客户遇到错误,因为我使用部分名称加载程序集,但程序集恰好在应用程序目录中。

那么,我想知道,在使用Load(string)方法时,长名和部分名还有什么区别吗?

非常感谢!

【问题讨论】:

  • 客户遇到了什么错误?
  • 它肯定说LoadWithPartialName 在应用程序目录和 GAC 中都有。如果在 GAC 中找到该版本,则将使用该版本而不是应用程序目录中的版本。此外,LoadWithPartialName 自 .NET 2 以来已过时。
  • 感谢您的回复! phoog -- 加载程序集失败的异常:无法加载文件或程序集或其依赖项之一。系统找不到指定的文件mike z -- 是的,我知道这个方法,但是我只是想知道使用Load(string)方法时长名和部分名的区别
  • 顺便说一句,MSDN 中“应用程序目录”的确切含义是什么?如果我在文件夹 A 中的应用程序和 GAC 中的另一个程序集(名为 assm1)调用代码“Assembly::Load”来加载程序集 assm2,则应用程序调用 assm1。那么,在我的场景中,什么是“应用程序目录”?是文件夹A吗?谢谢!
  • 您确定它在加载程序集而不是从属程序集时遇到问题吗?您是否尝试过运行类似 filemon 的程序来监视正在访问的文件?

标签: c# reflection


【解决方案1】:

@gTiancai:为了更安全,设置AssemblyName.CodeBase 属性可能会有所帮助。

这可能会有所帮助:Best Practices for Assembly Loading

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 2019-10-13
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多