不合逻辑的NullReferenceException

MrT*_*tan 5 c#

因此,在完成一些正常工作的正常过程中,我遇到了一个通用类System.NullReferenceException: 'Object reference not set to an instance of an object.'

因此,当我开始寻找罪魁祸首时,我在想什么都没问题。经过大量的调试后,我举起手来想暂时放弃...我绕过此方法的策略是仅实例化一个数组,而不是为数据调用某些服务。

所以我改变了:

var data = service.GetData(someId);
Run Code Online (Sandbox Code Playgroud)

var data = new DataType[]{};
Run Code Online (Sandbox Code Playgroud)

使我的代码可编译和可调试,以便我可以回到这一点。

更重要的是:这样做之后,我仍然在那条线上遇到了例外。因此,仅数组实例化就会产生此异常。异常的数据为零。除了指向该行外,没有内部异常或堆栈跟踪。类本身只是一个没有方法(也没有构造函数)的poco,因此内部什么也没有发生。(有关课程,请参见下文)

我的下一个想法是,很明显,我看到的代码不是我的调试会话正在使用的代码。

为了测试这个想法,我已经

  • 在VS中清理
  • 手动删除垃圾箱
  • 手动删除的obj
  • 删除所有软件包目录
  • 重新启动我的电脑
  • 在VS的新Beta中试用了它
  • 在JetBrains的Rider中尝试过

仍然面对这个。

任何人都在思考如何获得更多有关为什么发生这种情况的详细信息,或者还有其他我应该清洁的东西?

我还查看了的输出,git clean -xdn以查看周围有什么样的临时性东西可以删除,并且那里没有任何有趣的东西...

不管实际使用的是什么代码,如果我完全注释掉了这一行并在其中放置了完全不同的代码(如最初所述),则代码将引发异常。我只是让我的一位同事抓住这个分支并运行它,对他们来说很好

到目前为止,深达3个小时...不好玩

编辑:

根据要求,这是一个定义:

using System;
using Dapper.Contrib.Extensions;

namespace some_namespace
{
#pragma warning disable 1591
    [Table ("CompanyOptions")]
    public class CompanyOption
    {
        [ExplicitKey]
        public Guid PKID { get; set; }
        public Guid CompanyPKId { get; set; }
        public string OptionName { get; set; }
        public string OptionValue { get; set; }
        public DateTime CreatedOn { get; set; }
        public string CreatedBy { get; set; }
        public DateTime? UpdatedOn { get; set; }
        public string UpdatedBy { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

MrT*_*tan 1

所以看来我安装的一些微软软件包存在问题。我发现Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r在包管理控制台中运行重新安装解决了我的问题。在查看产生的差异时,唯一有意义的是我的以下目标框架的变化packages.config

在此输入图像描述

这些包引用最近没有改变,并且该项目已经瞄准 4.7.1 相当长一段时间了,所以不确定为什么会突然出现问题。罗斯林层中似乎有什么东西被损坏了?

现在要慢慢远离我的电脑。