我有一个直接引用dll文件的应用程序:POSLink.dll
。
为了让它在我的本地计算机上运行,我必须手动将以下dll复制到输出目录:libea32.dll
和ssleay32.dll
。
当我在本地计算机上运行应用程序时,它会成功。
当我在目标计算机上运行应用程序时,出现以下错误:
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“POSLink.dll”或其依赖项之一。找不到指定的模块 在FileNotFoundExceptionExample.Program.Main(String [] args)
这是我的SSCCE
using POSLink;
using System;
namespace FileNotFoundExceptionExample
{
class Program
{
static void Main(string[] args)
{
// this is stuff found in the POSLink namespace
var commSetting = new CommSetting();
commSetting.saveFile();
Console.WriteLine("Success");
}
}
}
我尝试在POSLink.dll上使用Dependency Walker,但这对我来说并不是很有用,因为有381个错误显示出来,当我在成功的机器上运行它们时它们会出现。
我如何开始排除此错误?
当我运行Fuision日志查看器然后在目标计算机上运行应用程序时,我得到以下日志:
*装配活页夹日志条目(7/19/2016 @ 2:18:48 PM)*
手术成功。绑定结果:hr = 0x0。操作
顺利完成。装配管理员从以下位置加载:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ clr.dll在
下运行 可执行
C:\ Users \ Omitted \ Desktop \ notfoundexceptionexample \ debug \ FileNotFoundExceptionExample.exe
---详细的错误日志如下。===预绑定状态信息===日志:DisplayName = POSLink,版本= 1.0.5773.36725,文化=中性,
PublicKeyToken = f3876d2e4b7eb819(完全指定)日志:Appbase =
file:/// C:/ Users / Omitted / Desktop / notfoundexceptionexample / debug / LOG:
Initial PrivatePath = NULL LOG:Dynamic Base = NULL LOG:Cache Base =
NULL日志:AppName = FileNotFoundExceptionExample.exe调用程序集
:FileNotFoundExceptionExample,Version = 1.0.0.0,Culture = neutral,
公钥=空。
===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:
C:\ Users \用户略\桌面\ notfoundexceptionexample \调试\ FileNotFoundExceptionExample.exe.Config
日志:使用主机配置文件:日志:使用机器配置
来自的文件 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中
日志:政策后参考:POSLink,版本= 1.0.5773.36725,
Culture = neutral,PublicKeyToken = f3876d2e4b7eb819日志:GAC查询是
不成功。日志:尝试下载新网址
文件:/// C:/Users/Omitted/Desktop/notfoundexceptionexample/debug/POSLink.DLL
日志:程序集下载成功。尝试设置文件:
C:\ Users \用户略\桌面\ notfoundexceptionexample \调试\ POSLink.dll
日志:进入源自源设置阶段。日志:装配名称是:
POSLink,版本= 1.0.5773.36725,文化=中立,
PublicKeyToken = f3876d2e4b7eb819日志:绑定成功。返回
来自的装配 C:\ Users \用户略\桌面\ notfoundexceptionexample \调试\ POSLink.dll
。 日志:程序集在默认加载上下文中加载。
答案 0 :(得分:2)
因此,事实证明,有一种方法可以过滤依赖步行者告诉您的所有不重要的错误。
日志是在此屏幕截图中选择的中间窗口。
事实证明msvcr120.dll确实缺少了,找到合适的,并将其放入我的输出目录修复了问题。
注意: msvcr120.dll is the Visual C++ 2013 Runtime。而不是手动复制dll,正确的解决方案是安装the Visual C++ Redistributable Packages for Visual Studio 2013