第三方 dll 中的奇怪 NullReferenceException:C#

Weird NullReferenceException in third party dll: C#

我有一个奇怪的错误,它突然开始,让我抓狂。在我的 C# 应用程序中,我正在进行一些繁重的数学计算,为此,我使用了 CenterSpace 的 NMath 库。最近,当我从 Visual Studio 2015 内部启动我的应用程序以调试它时,应用程序开始崩溃,因为 NMath.dll 中的 NullReferenceExceptions,每当我调用 NMath 库方法(以及我们拥有的另一个库也写了)。为了隔离问题,我只是 运行 以下非常基本的矩阵乘法代码:

    static void Main(string[] args)
    {
        var mA = new DoubleMatrix(100, 200, 1.5);
        var mB = new DoubleMatrix(200, 50, 1.2);
        var mC = NMathFunctions.Product(mA, mB);
        Console.WriteLine(mC[5, 6]);

        Console.WriteLine("Computation finished");
        Console.ReadLine();
    }

当我由于 NullReferenceException 而调用 "NMathFunctions.Product" 方法时,代码在第三行崩溃,异常详细信息如下:

它似乎只是在 "NMathKernel" 对象的构造函数中崩溃,因为未正确设置对象引用。

最奇怪的是,当我 运行 使用 Windows Explorer 直接从它的项目文件夹中,而不是在 Visual Studio 中,程序 运行 ]s 完美:第四行按预期打印“360.000000001”,达到 "Console.ReadLine()"!

我完全不知道这个 NullReferenceException 错误的原因。这似乎不是第三方 dll 相关的问题,因为程序只有在 Visual Studio 中启动时才会崩溃。这个错误完全阻止了我使用 Visual Studio 调试我的程序,这是一件痛苦的事情,让我唯一的选择是从 Visual Studio 外部使用 "Console.WriteLine" 调用调试它。这个问题的原因是什么?是不是我的构建设置搞砸了? (顺便说一句,我已经检查过,没有发现任何异常)非常欢迎任何线索或提示。

  1. 在 VisualStudio 中转到 Tools -> Options -> Debugging 并确保选中 Enable Just My Code 选项。
  2. 转到 Debug -> Exceptions 并取消选中所有 Thrown 复选框。仅选中 User-unhandled 个复选框。或者只使用 Reset all 按钮。