不合逻辑的NullReferenceException

时间:2019-03-15 22:48:48

标签: c#

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

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

所以我改变了:

var data = service.GetData(someId);

var data = new DataType[]{};

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

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

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

要检验我的这种想法

  • 在VS中清洁
  • 手动删除垃圾箱
  • 手动删除的对象
  • 删除了所有软件包目录
  • 重新启动计算机
  • 在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; }
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

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

enter image description here

这些软件包引用最近没有更改,并且该项目已经将目标指向4.7.1了一段时间,因此不确定为什么会出现突然的问题。似乎在roslyn层中有些东西损坏了?

现在要从我的计算机上慢慢退出