代码之家  ›  专栏  ›  技术社区  ›  Anthony K

加载程序集时找不到VB.NET方法

  •  2
  • Anthony K  · 技术社区  · 17 年前

    当运行vb.net控制台应用程序时,我得到一个“找不到方法:”Boolean MyCompany.LibraryAssembly.SomeFunction(System.String)“”异常/错误。

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

    我从本地文件夹(而不是GAC)引用,尽管同样的版本也可以从GAC获得。

    有什么我可以检查的建议吗?

    5 回复  |  直到 17 年前
        1
  •  2
  •   Anthony K    17 年前

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

        2
  •  1
  •   Thorarin    17 年前

    这是哪个.NET版本?

    从方法名来看,该方法似乎是在 Module ?
    我在网上发现了一些(旧的)引用,模块函数在程序集之外是不可访问的。 然而,当我用我的VS2008测试这个时,它工作得很好。

    模块使用共享方法编译为不可继承的类。尝试引用包含模块/类名的方法,看看是否有区别?

    如果使用强程序集名称,则优先从GAC加载。如果可能,现在就从GAC中删除程序集,只是为了确保您没有使用旧版本。

        3
  •  0
  •   Ganesh R.    17 年前

    尝试删除引用并再次添加。执行此操作时,只需查看对象的.NET版本信息。然后将其与应用程序的版本进行比较。

    (我认为广汽对本地文件夹有先见之明……而不是我们。请同时检查GAC DL的版本。)

    还要检查功能是否可访问(它可能受到保护或内部功能)

        4
  •  0
  •   chrissie1    17 年前

    清理和重新生成通常为我解决方法未找到异常。

        5
  •  0
  •   Nakul Chaudhary    17 年前

    我认为正在运行的应用程序的bin包含旧程序集。在应用程序容器中复制新程序集。