为什么.Net找不到系统程序集?

为什么.Net找不到系统程序集?,.net,integration-testing,appdomain,assembly-resolution,.net,Integration Testing,Appdomain,Assembly Resolution,我在执行一些集成测试时出现以下错误: 无法在ID为4的AppDomain的“加载”绑定上下文中加载显示名为“System”的程序集。失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集“System,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。系统找不到指定的文件 这些测试在过去一直有效,我不知道怎么会找不到这样一个基本的dll。此外,系统部件已加载: 顺便说一句,执行的代码正在创

我在执行一些集成测试时出现以下错误:

无法在ID为4的AppDomain的“加载”绑定上下文中加载显示名为“System”的程序集。失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集“System,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。系统找不到指定的文件

这些测试在过去一直有效,我不知道怎么会找不到这样一个基本的dll。此外,系统部件已加载:

顺便说一句,执行的代码正在创建AppDomains,以便在这种情况下执行集成测试

编辑:看起来我们已经安装了所需的框架:


当测试环境没有安装目标框架时,可能会发生此错误。尤其是在使用后期绑定时。如果您使用的是IOC/DI,则可能会出现这种情况


请注意,这也可能是由于(由于后期绑定)需要另一个(额外的.NET版本。如果程序中使用的某个组件是根据.NET 2.0编译的,那么可能还需要安装该框架版本

当测试环境没有安装目标框架时,可能会发生此错误。尤其是在使用后期绑定时。如果您使用的是IOC/DI,则可能会出现这种情况


请注意,这也可能是由于(由于后期绑定)需要另一个(额外的.NET版本。如果程序中使用的某个组件是根据.NET 2.0编译的,那么可能还需要安装该框架版本

当您的应用程序针对的是与您正在测试的计算机上安装的不同版本的DotNet framework时,可能会发生这种情况。我注意到所需的所有这些程序集都是4.0,但看起来您也在VS2012+中显示模块窗口的输出,因此很可能安装了4.0

接下来,我们来看一下运行集成测试的运行时环境。因为对于DotNet,用于所有程序集加载的框架的验证是由初始可执行文件定义的。通常这不是问题,因为如果使用4.0 exe,并参考2.0框架,则通常可以替换新的。但是,如果运行2.0版本,则它将无法解析4.0程序集


如果你正在使用NUnit,那么你可以使用一些技巧来帮助我解决这个问题

当您的应用程序针对的是与您正在测试的计算机上安装的不同版本的DotNet framework时,可能会发生这种情况。我注意到所需的所有这些程序集都是4.0,但看起来您也在VS2012+中显示模块窗口的输出,因此很可能安装了4.0

接下来,我们来看一下运行集成测试的运行时环境。因为对于DotNet,用于所有程序集加载的框架的验证是由初始可执行文件定义的。通常这不是问题,因为如果使用4.0 exe,并参考2.0框架,则通常可以替换新的。但是,如果运行2.0版本,则它将无法解析4.0程序集


如果你正在使用NUnit,那么你可以使用一些技巧来帮助我解决这个问题

我终于发现了问题:app.config由于“太宽”的搜索和替换而损坏,似乎这是奇怪系统负载的罪魁祸首。

我终于发现了问题:app.config由于“太宽”而损坏搜索并替换,似乎这是奇怪系统负载的罪魁祸首。

只是为了检查:文件是否实际位于所述路径?只是为了检查:文件是否实际位于所述路径?