C# 使用应用程序用户程序菜单时无法加载文件或程序集错误

C# 使用应用程序用户程序菜单时无法加载文件或程序集错误,c#,winforms,visual-studio-2010,installation,setup-project,C#,Winforms,Visual Studio 2010,Installation,Setup Project,我有一个winform应用程序,我已使用windows安装项目将其构建为安装程序。现在在安装程序的帮助下,我已成功地将该应用程序安装到我的系统中。在检查安装文件夹时,我可以注意到所有外部。DLL与application.exe一起存在。现在,我从用户处启动了该应用程序程序菜单和应用程序屏幕上的按钮点击,我得到的错误为 System.IO.FileNotFoundException: Could not load file or assembly 'EPPlus, Version=3.1.3.0,

我有一个winform应用程序,我已使用windows安装项目将其构建为安装程序。现在在安装程序的帮助下,我已成功地将该应用程序安装到我的系统中。在检查安装文件夹时,我可以注意到所有外部。DLL与application.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.
同时,当我试图从安装文件夹中使用应用程序时,我能够访问所有功能,而不会出现任何错误


发生这种情况的原因。请帮助我解决此问题。

在快捷方式中,您可能必须设置“开始位置”目录,以便Windows可以设置应用程序的当前目录。

若要调试此问题,请打开项目
属性
->打开
调试
->将
工作目录设置为“开始菜单”文件夹(即
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\YourPragram
)。然后开始调试以重新创建绑定错误

您的应用程序可能希望将
CurrentDirectory
设置为应用程序文件夹。如果是,则应在code中显式设置。在
Main
方法中,添加此选项

Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath);
使用这一行,即使应用程序是从
开始菜单启动的,
当前目录是应用程序文件夹,而不是开始菜单

您还可以使用Fuslogvw.exe(程序集绑定日志查看器)诊断绑定错误

  • 以管理员身份启动Visual Studio命令提示符
  • 运行命令“Fuslogvw.exe”
  • 单击“设置”,在“日志设置”对话框中,选择“日志绑定错误到磁盘”,并选中“启用自定义日志路径”,设置类似“C:\”的路径
  • 从“开始”菜单运行程序,出现异常后,转到C:\Default以获取EPPlus.dll的绑定日志
  • 诊断结果如下所示,您可以看到尝试的路径

    日志: 正在尝试下载新的URLfile:///C:/Users/kennyzx/Desktop/cloudforge/svn/package/innosetup/Files/FolderBrowserDialogEx.DLL. 日志:正在尝试下载新URLfile:///C:/Users/kennyzx/Desktop/cloudforge/svn/package/innosetup/Files/FolderBrowserDialogEx/FolderBrowserDialogEx.DLL.


    在我的例子中,我试图在SSIS包中使用EPPlus库,但遇到了相同的错误。 我的解决方案是将文件放在以下文件夹中:c:/ProgramFiles(x86)/Microsoft SQL Server/100/DTS/binn/

    谢谢

    LOG: All probing URLs attempted and failed.