[已解决问题] .NET是什么时候判断程序集是否已经加载的?
提问时间: 2008-08-27 14:59
悬赏分:100 浏览:383 次
我的WinForm程序,每次打开其中一个窗口frmPersonClientInfo,就会有下面的异常
---------------
************** 异常文本 **************
System.IO.FileNotFoundException: 未能加载文件或程序集“CrystalDecisions.ReportSource, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”或它的某一个依赖项。系统找不到指定的文件。
文件名:“CrystalDecisions.ReportSource, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”
  在 NPSys.ClientApp.Client.frmPersonClientInfo.InitializeComponent()
  在 NPSys.ClientApp.Client.frmPersonClientInfo..ctor()
  在 NPSys.ClientApp.frmMain.ToolStripMenuItem_Click(Object sender, EventArgs e)
  在 System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
  在 System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
---------------
我知道这个异常说明我需要安装水晶报表,但是这个需要打开的窗口是没有引用水晶报表的功能的
为了避免出错,我还专门Ctrl+F搜索了 这个窗体的代码,里边确实没有 Crystal 之类的字符串
1.我的第一个问题是为啥不用水晶报表的窗体,打开的时候也会提示没有加载水晶报表的异常?因为这个程序的其他窗口是可以正常打开的,唯独这个不行……
为了找在什么地方抛的异常,我在这个窗体的构造函数里边,InitializeComponent();的前一行添加了一个MessageBox,在InitializeComponent()函数中的第一行也加了一个MessageBox,结果第一个MessageBox正常弹出,接着就抛异常了,第二个MessageBox不能出来。我很纳闷,其实两个MessageBox是挨着的,一个在函数里边,一个在外边,为啥调用InitializeComponent();之前一切正常,调用的时候就出错了呢?
2.我的第二个问题是,.NET是什么时候判断程序集时候已经加载的?
所有回答(5)
看看项目的引用里面是不是有这个~~
3个月前   回答者:沙加 - 老鸟四级
看看你窗口的命名 有时候调试的时候看不出来命名的问题 但是运行的时候由于命名一样是 有可能覆盖程序集的 这样运行的时候就会出错
3个月前   回答者:小眼睛老鼠 - 小虾三级
WinForm不太熟悉,不过可以推测一下。 1.“这个程序的其他窗口是可以正常打开的,唯独这个不行”,是不是说其它没用水晶报表的窗口可以打开?如果可以的话,那只能说明在这个窗体中确实有水晶报表的东西,可以详细看一下frmPersonClientInfo.designer.cs文件,因为InitializeComponent方法报错,大部分东西都在这个文件里。 2.程序集的加载,是在JIT编译的时候,JITCompiler会去在程序集元数据中查找被调用的方法IL。
3个月前   回答者:TerryLee - 老鸟四级
你这个窗体里面可能放了什么控件和水晶报表有关。
3个月前   回答者:eaglet - 老鸟四级
1.检查frmPersonClientInfo.designer.cs文件中是否有不符的代码. 2.检查引用. 3.窗体要在设计器中显示时,它所加载所有引用的程序集.
3个月前   回答者:hackenliu - 菜鸟二级
评论
3个月前   虫子的一天 :
项目里边肯定有水晶报表的引用的
但是我这边的结果是,如果打开的窗口有水晶报表的功能,会出错
但是如果这个窗口里边没有水晶报表的功能,是很正常的,只有这一个窗体有问题。。
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题



> 问题排行榜

相关内容

相关链接