System.TypeLoadException

FancyMouse 2005-06-15 11:50:31
恐怕这个是老问题了吧:System.TypeLoadException发生在system.windows.forms.dll中,未能从某程序集中加载类型

背景是这样的,vs.net2003,一个solution里面有C#的两个项目,一个class library一个windows application。windows application引用那个class library,全部生成成功,在使用class library的一个class的时候引发错误。
问题是我以前的应用程序也有引用同一个solution的dll的,那时没有出现过错误。为什么这次就有问题了呢?
...全文
1123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bob 2005-06-16
  • 打赏
  • 举报
回复
C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\FUSLOGVW.exe

用这个工具看看日志。
psn 2005-06-16
  • 打赏
  • 举报
回复
不好意思,纠正,如果程序找不到指定assembly, module, type或类成员(fields,函数)信息,或者该部分il出错,报TypeLoadException
如果static变量创建实例出错或者没try的static constructor,报TypeInitializationException
另外我查了ECMA BCL,没有找到前者。这个意外可能是微软自定义的,一般而言,更可能出现在Interop中,dll entry point不存在或者COM接口找不到(Tlbimp.exe机制的弱点无法辨别同名层次接口函数。)
楼主确认下意外所在行,我猜测用到了COM,而COM的接口发生了改变或者老COM被卸载了,原先solution中obj目录下做的COM封装并没有更新。BCL的dll不该抛出这个意外。
FancyMouse 2005-06-15
  • 打赏
  • 举报
回复
没有,一个也没有。
zhongwanli 2005-06-15
  • 打赏
  • 举报
回复
MU JI ,察看错误任务

FancyMouse 2005-06-15
  • 打赏
  • 举报
回复
那是不是说,TypeLoadException的发生是与static变量实例的构造出错而导致的?
psn 2005-06-15
  • 打赏
  • 举报
回复
你修改了class项目,vs.net没能在winApp中反映最新的变化。可能的原因是vs.net认为class没发生改动,如果是强名,这个问题没有。你clean solution或者删除obj目录下所有文件即可。
TypeLoadException发生在type信息生成时,可能某个static变量实例生成时发生exception。因为type信息和static构造是有独立的系统线程运行的,你的代码是没法捕获exception的。代码中唯一可以逮住这个exception的地点在AppDomain.UnhandledException 事件
FancyMouse 2005-06-15
  • 打赏
  • 举报
回复
……

我把代码备份好,然后把原来project包括solution删掉,建立新的,然后再把代码恢复过去,就正常了。这样来说是不是project的设置有问题哈?如果是,又是哪里出问题了呢?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧