c#应用程序与c++;library System.IO.FileNotFoundException

c#应用程序与c++;library System.IO.FileNotFoundException,c#,c++,winforms,dll,C#,C++,Winforms,Dll,我遇到了一个非常棘手的问题。 我正在使用side dll使我的windows窗体应用程序与网络摄像头一起工作。该应用程序在使用VS2012的个人电脑和使用VS2012的笔记本电脑上运行良好,但在运行在虚拟机上的Windows XP上根本不起作用 我收到了JIT消息 System.IO.FileNotFoundException: Could not load file or assembly '---, Version=1.0.0.0, Culture=neutral, PublicKeyTok

我遇到了一个非常棘手的问题。 我正在使用side dll使我的windows窗体应用程序与网络摄像头一起工作。该应用程序在使用VS2012的个人电脑和使用VS2012的笔记本电脑上运行良好,但在运行在虚拟机上的Windows XP上根本不起作用
我收到了JIT消息

System.IO.FileNotFoundException: Could not load file or assembly '---, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
为了避免出现许多问题,我将自己回答:
是,dll是否使用.exe复制到目录
是的,我确实将其部署为“发布版”
是的,我确实将应用程序编译为x86目标平台
是的,我确实将dll编译为x86目标平台
是的,我确实安装了vcRedist所有版本,以Windows XP为目标
是的,我确实将.NET从3.0安装到了4.0,目标是Windows XP


我只是不明白为什么我的计算机和VisualStudio可以使用那个dll,但XP不能。

将是用来找出DLL中缺少哪个依赖项的工具,从而阻止XP加载它


你使用“V1xxxp”工具集(VisualStudio 2012——WindowsXP工具集与更新1一起)来构建你的本机C++ DLL吗?如果你没有,那就是你的问题。默认情况下,使用普通V110编译器配置在VS2012中构建的C++代码生成一个在WindowsXP上不工作的可执行文件,但需要Vista或更高版本。

< P>注意“或其依赖之一”短语…这可能是你的问题,而不是问题本身

您的dll可能正在调用某些api或使用XP中不可用的dll


您的朋友在这里

不是想变得密集,而是说您在运行时收到了一条文字上的“--,Version=…”消息吗?我是说,三个破折号,而不是程序集名称?我认为一些进程监视器的调查在这里非常有用,可以识别正在查找但在XP下找不到的模块。是的,我是用dll名称写的,它是WebCamLib.dland。你验证过程序集在虚拟盒上吗?如果是这样的话,那么这里的其他建议尝试DepWalker(或Process Monitor)是一个很好的下一步。我发现这些类型的错误经常会在应用程序事件日志中创建条目。是的,使用v110_xp工具集重新编译DLL绝对做到了这一点。抱歉,响应太晚,正在安装许多更新。谢谢你的帮助。依赖性Walker总是显示IESHIMS.DLL和WER.DLL来查找我提供给他的任何DLL,在这种情况下都是无用的