【问题标题】:Why the assembly loader is not checkin the GAC for a C++/CLI mixed mode assembly?为什么程序集加载器没有在 GAC 中检查 C++/CLI 混合模式程序集?
【发布时间】:2011-06-20 20:54:25
【问题描述】:

我有一个引用 C++/CLI 混合模式程序集的 C# 项目。该程序集存储在 PATH 的文件夹中,它也存在于 GAC 中,但是当它执行时,我得到一个:

System.IO.FileNotFoundException: 无法加载文件或程序集 'PcsSocketCommunications500, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

版本 0.0.0.0 是因为 C++/CLI 没有 Assembly 版本类,但据我所知这应该不是问题。

运行进程监视器我看到系统只是在与主进程相同的文件夹中查找程序集...我不是程序集加载专家,但我希望至少会看到一些 GAC 搜索和“也许'一些 PATH 搜索.. 这就是我得到的(PcsSocketCommunication500.dll 是 C++/CLI 程序集,黑色是工作目录):

知道加载程序为什么不检查 GAC 或 PATH 吗?

【问题讨论】:

    标签: c++-cli classloader mixed-mode .net-assembly


    【解决方案1】:

    PublicKeyToken=null

    程序集不是强命名的。这意味着它不能位于 GAC 中,CLR 不会在那里查找。不确定你做了什么才能进入 GAC,但按原样应该是不可能的。

    【讨论】:

    • 对。在编译引用它的代码(试图解决问题)后,在 GAC 上签署并安装了该程序集。我认为,由于调用者知道它没有签名,所以它没有在 GAC 中进行搜索。再次感谢汉斯。
    猜你喜欢
    • 2015-08-03
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多