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

时间:2009-08-03 04:17:49

标签: vb.net assemblies

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

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

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

有关我可以查看的内容的任何建议吗?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这是哪个.NET版本?

从您的方法名称,看起来该方法是在Module中定义的? 我在网上发现了一些(较旧的)引用,模块函数无法在程序集外部访问。 当我用我的VS2008测试时,它运行良好。

模块使用Shared方法编译为NotInheritable类。尝试参考包含模块/类名称的方法,看看它是否有所作为?

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

答案 2 :(得分:0)

尝试删除参考&再加一次。这样做时,只需查看对象的.NET版本信息即可。然后将其与您应用的版本进行比较。

(我认为GAC已经优先考虑本地文件夹。不仅仅是这个。还请检查GAC Dl的版本。)

同时检查功能是否可访问(可能受保护还是内部功能)

答案 3 :(得分:0)

清理和重建通常会解决我找不到异常的方法。

答案 4 :(得分:0)

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