我写过一个使用互联网的桌面软件。发送Http请求并使用Linq2Twitter库。
软件的目标是/ NET 3.5,并且引用中没有程序集作为.NET 4.0
我在几台机器上成功测试了不同版本的Windows。
然而,我的一位客户报告我的软件崩溃了,从日志文件中我发现了这个:
Could not load file or assembly 'System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
所以,我的问题是,这是怎么发生的? 为什么我不能在我身边看到这个问题?
它适用于只安装了.NET 3.5的机器,所以它不应该使用.NET 4程序集吗? 为什么它在我的客户端机器上混淆了?
PS:我不在我的软件中使用System.ServiceModel.Web,但显然Linq2Twitter确实如此,这可能是问题的根源吗? (顺便说一句,我使用的是.NET 3.5版本的Linq2Twitter)
有人可以帮忙吗? 当我使用Reflector或Telerik JustDecompile检查引用时,我根本看不到任何.NET 4程序集的依赖。
更新:
很奇怪,我有一个更详细的日志来帮助我找出问题所在。 看看StrackTrace,这是错误信息:
Could not load file or assembly 'System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
我也记录了内部错误,这里是:
Could not load file or assembly 'System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
它似乎首先寻找3.5.0.0版本,然后是4.0.0.0然后抛出错误。
导致这种情况的原因是什么?是否有可能错过一些装配??