【问题标题】:VB.NET Method Not Found when loading Assembly加载程序集时未找到 VB.NET 方法
【发布时间】:2010-11-16 06:42:18
【问题描述】:

运行 VB.NET 控制台应用程序时出现“找不到方法:'Boolean MyCompany.LibraryAssembly.SomeFunction(System.String)'”异常/错误。

该方法是外部程序集的一部分,并且肯定在程序集中。错误只发生在运行时,当我进入调用该方法的函数时。
我有我的项目引用的程序集,我没有在本地复制它。 Intellisense 没有显示错误,编译器也没有。我正在静态而不是动态地加载程序集。

我从本地文件夹(不是 GAC)引用 ,尽管 GAC 也提供相同的版本。

关于我可以检查的内容有什么建议吗?

【问题讨论】:

    标签: vb.net assemblies


    【解决方案1】:

    我发现解决方案是使用相同版本的本地程序集再次更新 GAC。我通过将程序集文件拖放到 C:\Windows\Assembly 文件夹中来做到这一点。完成此操作然后重建我的控制台应用程序后,问题就消失了。奇怪,因为 GAC 中的程序集已经显示与本地相同的版本号。

    【讨论】:

      【解决方案2】:

      这是哪个 .NET 版本?

      从您的方法名称来看,该方法似乎定义在 Module?
      我在网上发现了一些(较旧的)参考资料,说明模块功能在您的程序集之外无法访问。 然而,当我用我的 VS2008 进行测试时,它运行良好。

      模块使用共享方法编译为 NotInheritable 类。尝试参考包含模块/类名的方法,看看是否有区别?

      如果您使用强程序集名称,则从 GAC 加载优先。如果可能,请暂时从 GAC 中删除程序集,以确保您使用的不是旧版本。

      【讨论】:

        【解决方案3】:

        尝试删除引用并重新添加。这样做时,只需查看对象的 .NET 版本信息。然后将其与您的应用版本进行比较。

        (我认为 GAC 优先于本地文件夹..对此不了解。请同时检查 GAC Dl 的版本。)

        还要检查函数是否可访问(可能是受保护的或内部函数)

        【讨论】:

        • 如果函数无法访问,肯定会出现编译错误。
        • 同意。但只是提出一些想法。
        【解决方案4】:

        Clean and Rebuild 通常为我解决方法未找到异常。

        【讨论】:

          【解决方案5】:

          我认为您正在运行的应用程序的 bin 包含旧程序集。将新程序集复制到您的应用程序箱中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-08
            • 1970-01-01
            相关资源
            最近更新 更多