我有一个 winform 应用程序,我使用 Windows 安装项目将其构建为安装程序。现在,在安装程序的帮助下,我已成功地将应用程序安装到我的系统中。在检查安装文件夹时,我可以注意到所有外部 .dll 都存在于此与应用程序 .exe 一起。现在,我从用户程序菜单启动了应用程序,然后从应用程序屏幕单击按钮,我收到错误为 ..
System.IO.FileNotFoundException: Could not load file or assembly 'EPPlus, Version=3.1.3.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1' or one of its dependencies. The system cannot find the file specified.
虽然该文件存在于文件夹中。此外,当我尝试使用安装文件夹中的应用程序时,我可以访问所有功能而不会出现任何错误。
为什么会发生这种情况。请帮我解决这个问题..
就我而言,我尝试在 SSIS 包中使用 EPPlus 库,但遇到了同样的错误。 我的解决方案是将文件放在以下文件夹中:c:/Program Files (x86)/Microsoft SQL Server/100/DTS/binn/
谢谢
要调试此问题,请打开项目
Properties
->打开Debug
->将Working Directory
设置为“开始菜单”文件夹(即C:\ProgramData\Microsoft\Windows\Start Menu\Programs\YourPragram
)。然后开始调试以重新创建绑定错误。
您的应用程序可能需要
CurrentDirectory
设置为应用程序文件夹。如果是,您应该在代码中明确设置它。在Main
方法中,添加这个
Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
使用此行,即使应用程序从
Start Menu
启动,CurrentDirectory
也是应用程序文件夹,而不是开始菜单。
您还可以使用Fuslogvw.exe(程序集绑定日志查看器)来诊断绑定错误。
诊断结果如下所示,您可以看到尝试的路径。
日志: 尝试下载新的 URL 文件:///C:/Users/kennyzx/Desktop/cloudforge/svn/package/innosetup/Files/FolderBrowserDialogEx.DLL。 日志:尝试下载新的 URL 文件:///C:/Users/kennyzx/Desktop/cloudforge/svn/package/innosetup/Files/FolderBrowserDialogEx/FolderBrowserDialogEx.DLL。
LOG: All probing URLs attempted and failed.
在快捷方式中,您可能必须设置“开始于”目录,以便 Windows 可以设置应用程序的当前目录。
我使用了 EPP Plus 软件包的替代版本(据称可以解决性能问题的分支),并且在官方软件包失败的地方起作用。替代(非官方)软件包是 EPPlus.Performance。