因此,在完成一些正常工作的正常过程中,我遇到了一个通用类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,因此内部什么也没有发生。(有关课程,请参见下文)
我的下一个想法是,很明显,我看到的代码不是我的调试会话正在使用的代码。
为了测试这个想法,我已经
我仍然面对这个。
任何人都在思考如何获得更多有关为什么发生这种情况的详细信息,或者还有其他我应该清洁的东西?
我还查看了的输出,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)
所以看来我安装的一些微软软件包存在问题。我发现Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r在包管理控制台中运行重新安装解决了我的问题。在查看产生的差异时,唯一有意义的是我的以下目标框架的变化packages.config:
这些包引用最近没有改变,并且该项目已经瞄准 4.7.1 相当长一段时间了,所以不确定为什么会突然出现问题。罗斯林层中似乎有什么东西被损坏了?
现在要慢慢远离我的电脑。