ClickOnce发布的WPF程序遇到诡异的System.IO.FileNotFoundException
2012-11-15 09:25
525 查看
最近开发的一个WPF程序,使用ClickOnce发布,拿到测试环境启动不了,使用事件查看器,找到错误:“说明: 由于未经处理的异常,进程终止。异常信息:System.IO.FileNotFoundException...”。
分析了一下,感觉很诡异,使用比较笨的办法,在异常代码附近加try...catch...并用MessageBox提示信息,最后定位到找不到SQLite的一个DLL:“未能加载文件或程序集“XXX”或它的某一个依赖项。系统找不到指定的文件...”,找到执行程序所在的路径,确认该DLL是存在的。
所以开始怀疑是环境的问题,因为在开发电脑上是可以正常运行的,然后在测试虚拟机上装了一下VS2010,结果装了后就可以运行,不再报FileNotFoundException。难道要在用户端也装一个VS2010?想到上次为了解决打印问题,不得不在4.0外再带上.Net Framework 3.5,真是无语啊。
客户端装VS2010肯定是不现实的,只有想别的办法,然后一个一个看引用的DLL,终于找到差异,报FileNotFoundException的地方涉及的DLL是2.0的库,难道是这个原因吗?混合模式程序集?按这个思路找到这两篇文章:
/article/5967310.html
http://bbs.csdn.net/topics/390039989
修改app.config如下,终于把问题解决了:
整个过程,感觉很坑爹啊,有两个带偏的陷阱:一是错误提示,FileNotFoundException,离问题的核心有点远,如果按混合模式程序集来反推,可以沾边,没有找到匹配的程序集;一是安装了VS2010的环境就可以运行,这似乎是SDK还是什么开了一个全局选项,把混合模式程序集的开关打开了,这给问题的分析带来困扰。
分析了一下,感觉很诡异,使用比较笨的办法,在异常代码附近加try...catch...并用MessageBox提示信息,最后定位到找不到SQLite的一个DLL:“未能加载文件或程序集“XXX”或它的某一个依赖项。系统找不到指定的文件...”,找到执行程序所在的路径,确认该DLL是存在的。
所以开始怀疑是环境的问题,因为在开发电脑上是可以正常运行的,然后在测试虚拟机上装了一下VS2010,结果装了后就可以运行,不再报FileNotFoundException。难道要在用户端也装一个VS2010?想到上次为了解决打印问题,不得不在4.0外再带上.Net Framework 3.5,真是无语啊。
客户端装VS2010肯定是不现实的,只有想别的办法,然后一个一个看引用的DLL,终于找到差异,报FileNotFoundException的地方涉及的DLL是2.0的库,难道是这个原因吗?混合模式程序集?按这个思路找到这两篇文章:
/article/5967310.html
http://bbs.csdn.net/topics/390039989
修改app.config如下,终于把问题解决了:
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup>
整个过程,感觉很坑爹啊,有两个带偏的陷阱:一是错误提示,FileNotFoundException,离问题的核心有点远,如果按混合模式程序集来反推,可以沾边,没有找到匹配的程序集;一是安装了VS2010的环境就可以运行,这似乎是SDK还是什么开了一个全局选项,把混合模式程序集的开关打开了,这给问题的分析带来困扰。
相关文章推荐
- MSChart发布到网站的问题 System.IO.DirectoryNotFoundException: 图表处理程序配置 [c:\TempImageFiles\]
- wpf 加载窗体界面时出现异常System.IO.FileNotFoundException
- NET制作安装程序的错误提示:在初始化安装时发生异常 System.IO.FileNotFoundException
- System.IO.FileNotFoundException: 未能加载文件或程序集
- 关于VS中遇到System.IO.FileNotFoundException问题的解决办法
- 异常:System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.mshtml
- web服务发生错误 System.IO.FileNotFoundException 解决办法
- 解决 System.IO.FileNotFoundException: 未能加载文件或程序集“Team.DLinqDAL”或它的某一个依赖项。系统找不到指定的文件。
- 服务 在初始化安装时发生异常:System.IO.FileNotFoundException: 未能加载文件或******
- C# wcf 注册window服务 报System.IO.FileNotFoundException: 未能加载文件或程序集“file:///C:\Windows\system32\***
- n unhandled exception of type 'System.IO.FileNotFoundException' occurred in Unknown Module.Additional information: 未能加载文件或程序集“..
- asp.net上传文件使用fileupload控件,判断文件类型和大小,取得文件路径时报错【System.IO.FileNotFoundException:未能找到文件】的解决办法
- RDLC报表 在WinForm里运行出现 未能加载文件或程序集 Microsoft.ReportViewer.WinForms, Version=11.0.0.0 System.IO.FileNotFoundException
- 解决 System.IO.FileNotFoundException: 未能加载文件或程序集
- Android访问服务器出现W/System.err(9302): java.io.FileNotFoundException:怎么办
- failed parsing /data/system/wallpaper_info.xml java.io.FileNotFoundException
- NPOI 在 System.IO.FileNotFoundException 中第一次偶然出现的“mscorlib.dll”类型的异常
- Android出现W/System.err(384): java.io.FileNotFoundException: /mnt/sdcard/cache/XXX
- 安装错误: System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.VisualStudio.Zip.9.0, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它
- 【已解决】Windows Service 问题System.IO.FileNotFoundException: 未能加载文件或程序集“file:///”或它 的某一个依赖项。系统找不到指定的文件。。