您的位置:首页 > 其它

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如下,终于把问题解决了:

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>


整个过程,感觉很坑爹啊,有两个带偏的陷阱:一是错误提示,FileNotFoundException,离问题的核心有点远,如果按混合模式程序集来反推,可以沾边,没有找到匹配的程序集;一是安装了VS2010的环境就可以运行,这似乎是SDK还是什么开了一个全局选项,把混合模式程序集的开关打开了,这给问题的分析带来困扰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐