【发布时间】:2019-09-30 21:20:19
【问题描述】:
我有一个应用程序已经使用了很长时间。我最近添加了一些新功能,包括 gMap。当我调试或构建它并进行测试时,我的应用程序运行良好。当我作为 clickonce 发布然后安装在我的同一台机器上时,会出现此问题。该应用程序安装并尝试运行时出现错误“WMS 工具箱已停止工作”。查看事件查看器,我发现它显然缺少与 gMap 相关的 dll 文件。
--事件查看器故障1--
Description: The process was terminated due to an unhandled exception.
Exception Info: System.DllNotFoundException
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_libversion()
at GMap.NET.CacheProviders.SQLitePureImageCache.Ping()
at GMap.NET.GMaps.SQLitePing()
at GMap.NET.WindowsForms.GMapControl..cctor()
Exception Info: System.TypeInitializationException
at GMap.NET.WindowsForms.GMapControl..ctor()
at wmsToolBox.wmsToolBox.InitializeComponent()
at wmsToolBox.wmsToolBox..ctor()
at wmsToolBox.Program.Main()
--事件查看器故障2--
Faulting application name: wmsToolBox.exe, version: 1.0.0.0, time stamp:
0x5d70eddb
Faulting module name: KERNELBASE.dll, version: 10.0.15063.1836, time
stamp: 0xbb572fa7
Exception code: 0xe0434352
Fault offset: 0x000f18e2
Faulting process id: 0x3a8
Faulting application start time: 0x01d563db00e3051a
Faulting module path: C:\windows\System32\KERNELBASE.dll
Report Id: 0bc8cd8f-c137-4cd8-a8d8-880ce20add89
Faulting package full name:
Faulting package-relative application ID:
我注意到这似乎是依赖于 sqlite.dll 的应用程序的一个已知问题。
从其他帖子中获取建议,这是我尝试过的:
- 从应用程序中删除所有引用并重新添加它们,确保它们都已更新
- 我尝试在我的应用程序中创建 x86 和 x64 文件夹,并为这两个文件夹提供 SQLite.Interop.dll(这不会改变应用程序的性能)
- 我已经下载了预编译的 .net,然后将 System.Data.SQLite.dll 放在了我的 exe 附近(这会导致安装错误,说明 dll 文件已经存在于文件夹中并且无法安装)
- 我已尝试将 dll 文件添加到 clickonce 安装文件夹并再次运行该应用程序。 (这导致了以下错误:
异常信息:System.BadImageFormatException 在 GMap.NET.CacheProviders.SQLitePureImageCache.Ping() 在 GMap.NET.GMaps.SQLitePing() 在 GMap.NET.WindowsForms.GMapControl..cctor())
我引用的来源
How to Publish a Winforms App with SQLite using ClickOnce
我还参考了以下网站上的建议。它们与 SO 上的帖子基本相同。
【问题讨论】: