首页 > 解决方案 > System.IO.FileNotFoundException:“无法在本地计算机上加载文件或程序集”

问题描述

我正在对我最近加入的一个项目实施单元测试,但遇到了一个令人费解的错误。我有这个类LoggerSettingsManager,我正在测试各种功能。调用某些函数时,一切正常。但是当调用相同的类但不同的函数时,我收到以下错误(该错误有一个内部代码_COMPlusExceptionCode -532462766):

Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
The system cannot find the file specified.

这些是LoggerSettingsManager需要的库:

许多功能似乎做得很好。它似乎只在函数引用MessageBox(的一部分System.Windows.Forms)时才会发生,即使这行代码从未真正执行过。

当我调用例如以下函数时会出现问题。然而,让我有点困惑的是,在导致错误之前我什至无法进入函数,好像函数的内容不是问题,而是与类关联的某个库。

public void UpdateLoggerSettings(string measurementType)
{
    ...

    try
    {
        _deviceSettings.GetLoggerSettings(LoggerSettings);

        if (LoggerSettings.DataIsValid)
            _deviceSettingsWin.UpdateWindowParameter();
    }
    catch (ArgumentException ex)
    {
        MessageBox.Show("Requesting Data Logger Settings: Packet contained invalid time stamps\n\n" +
            ex.Message + "\n\n" + ex.StackTrace);
    }
}

这些是usingsLoggerSettingsManager

using ExpoMRF4Utility.ExpomRF4; // internal company library
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Windows.Forms;

我是否需要“全新安装” System.Windows.Forms?我看过其他关于此错误的文章,但似乎很多问题与服务器客户端相关(我的绝对不是)或以另一种方式具体。帮助表示赞赏。

编辑:删除和添加引用并没有解决问题..

编辑 2:在 pastebin 上添加最少的可重现文件:LoggerSettingsManagerLoggerSettingsManager_Tests

标签: c#visual-studiowinforms

解决方案


我似乎已经能够通过创建一个不同的测试项目来解决这个问题。在下图中,Visual Studio 提供了用于创建测试项目的选项。以前我选择了一个xUnit Test Project,结果证明它只运行 .NET Core,并且不可能引用与被测项目相同版本的 .NET,或者引用“缺失”库System.Windows.Forms

现在我创建了一个Unit Test Project (.NET Framework),同时添加 xUnit 并删除 MSTest。这似乎成功了。我希望这可以帮助任何有类似问题的人。

用于创建测试项目的 Visual Studio 提示


推荐阅读