温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c# - System.IO.FileNotFoundException: Could not load file or assembly 'X' or one of its dependencies when

c# - System.IO.FileNotFoundException:在以下情况下无法加载文件或程序集“ X”或其依赖项之一

发布于 2020-04-07 23:31:18

我在部署以托管c ++编写的引用程序集的应用程序时遇到了一个奇怪的问题。

我已经创建了一个程序集X,对其进行了编译,并在一个名为Starter的exe文件中对其进行了引用。

Starter.exe通常在本地mashine上启动。但是,当我将启动调试文件夹的所有内容复制到虚拟mashine并尝试在其中启动时,它会崩溃,但出现以下异常:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or 
assembly 'X' or one of its dependencies. The specified module could not be found.

这对我来说没有任何意义,因为X与Starter.exe在同一文件夹中。

是什么导致此问题?

更新

我已经检查了目标计算机上Reflector中的依赖关系,它能够找到所有这些文件。

我还将所有项目的配置都更改为x86 / win32。

更新

这是Fusion Fusion日志中的日志(位置:C:\ FusionLog \ Default \ Starter.exe \ X,Version = 1.0.4538.22813,Culture = neutral,PublicKeyToken = null.HTM):

*** Assembly Binder Log Entry  (6/4/2012 @ 1:56:13 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Documents and Settings\Administrator\Desktop\tmp\k;k\Starter.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = MENKAUR-7683827\Administrator
LOG: DisplayName = X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Starter.exe
Calling assembly : Starter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Documents and Settings\Administrator\Desktop\tmp\k;k\Starter.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/X.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Documents and Settings\Administrator\Desktop\tmp\k;k\X.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
LOG: Binding succeeds. Returns assembly from C:\Documents and Settings\Administrator\Desktop\tmp\k;k\X.dll.
LOG: Assembly is loaded in default load context.

唯一的错误是在C:\ FusionLog \ NativeImage \ Starter.exe \目录中:

*** Assembly Binder Log Entry  (6/4/2012 @ 1:56:13 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Documents and Settings\Administrator\Desktop\tmp\k;k\Starter.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = MENKAUR-7683827\Administrator
LOG: DisplayName = BookmarkWiz.Kernel, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Documents and Settings/Administrator/Desktop/tmp/k;k/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = Starter.exe
Calling assembly : Starter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Start binding of native image X, Version=1.0.4538.22813, Culture=neutral, PublicKeyToken=null.
WRN: No matching native image found.
LOG: IL assembly loaded from C:\Documents and Settings\Administrator\Desktop\tmp\k;k\X.dll.

我无法对程序集进行签名,因为它引用了其他几个未签名的程序集

查看更多

提问者
Arsen Zahray
被浏览
75
2017-05-23 20:25

...无法加载文件或程序集'X'或其依赖项之一 ...

它很可能无法加载另一个依赖项。

您可以尝试使用依赖项遍历器检查依赖项。

即:http//www.dependencywalker.com/

还要检查您的构建配置(x86 / 64)

编辑:当我从“不受信任的”网络共享中以zip格式复制dll时,我也遇到了这个问题。Windows锁定了该文件,并引发了FileNotFoundException。

参见此处:检测到的来自Internet且被CASPOL“阻止”的DLL