跟踪间歇性的“对象引用未设置为对象的实例”。构建错误

时间:2008-10-16 17:10:20

标签: asp.net visual-studio compiler-construction

我可以使用一些帮助来尝试跟踪我在ASP.Net项目中遇到的间歇性错误已经有一段时间了。

在构建解决方案时间歇性地,构建将失败并显示错误“/:Build(web):对象引用未设置为对象的实例。”该错误没有关联的文件,行,列或项目信息。关于错误的奇怪之处在于它会在连续重建时消失,并且似乎不会导致我们在构建成功后遇到的任何运行时错误。有时错误只会弹出一次,有时会发生3-4次,但最终构建会成功完成,然后似乎每次构建都很好。我无法确定何时以及何时会发生错误的模式,并且因为它总是最终构建它对我们来说并不是一个关键问题。只是一个烦恼。但是我想要的一个原因显而易见。

我想我应该补充一点,这是一个最初在ASP.net 1.1中开发并转换为2.0的应用程序,之后我继续将它继承到了某个地方,所以我不知道问题最初是什么时候出现的。就这里的每个人而言,它始终存在。

显然,我不希望有人找出问题的原因,因为这需要他们查看我们的整个解决方案以找出潜在的问题。只是希望有人可以给我一些关于如何在代码中追踪错误的实际来源的新想法。它必须来自某个地方,对吧?你怎么去找到哪里?

11 个答案:

答案 0 :(得分:6)

当您在页面中存在无效HTML的Web控件时,我已经看到了这一点。如果你的代码隐藏试图对控件做某事,它将无法找到它并在编译时会给你Object Reference ...错误。根据我的经验,它不会产生运行时错误,如果在构建时关闭了相关文件,项目将构建。 HTH,祝你好运!

答案 1 :(得分:6)

在命令行运行此命令,看看是否有更详细的信息

%WINDIR%\ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe YourSolution.sln / v:n

答案 2 :(得分:5)

为了跟进这个问题,我们从未跟踪错误的来源,但是当我们升级到Visual Studio 2008并将项目转换为Web应用程序时它就消失了。

答案 3 :(得分:4)

我有这个问题很长一段时间,终于找到了一个适合我的解决方案。 它对我来说没有意义......但是使用以下内容更改我的web.config文件可以明确地消除这种间歇性的构建错误:

<buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    <!-- add this line below -->
    <remove extension=".rdlc"/> 
 </buildProviders>

希望这有帮助!

答案 4 :(得分:3)

我的构建时,我的项目包含自定义数据源(我自己的对象返回集合),编译错误(即我的对象有错误)。

如果您尝试添加数据源并且项目的根目录中没有任何数据源(例如,如果您已将所有数据源类放在子文件夹中),也会出现此错误。我找到的唯一解决方案是在项目的根目录中创建数据源。

抱歉不要更准确,但在编译时似乎有几件事可能会出现数据源/对象。

答案 5 :(得分:3)

我要尝试的第一件事就是增加编译器的详细程度。这可以在Visual Studio选项中设置 - 例如“工具 - &gt;选项 - &gt;项目和解决方案 - 构建和运行 - &gt; MSBuild项目构建输出详细程度”for VS2005。如果你将它设置为诊断,那么它应该告诉你在异常被提升的时候它正在做什么。

答案 6 :(得分:0)

“未设置为对象实例的对象引用”显然是运行时错误,而不是编译时错误。所以对我说的是,Visual Studio正在窒息某些东西,这些东西可能不一定在你的代码中,或者代码中的某些东西只是间接导致的。

下一个问题我会问:这是仅在Visual Studio中发生,还是在使用MSBuild或CSC构建时会出现同样的问题?

答案 7 :(得分:0)

真正奇怪的是它是一个运行时错误。你不应该在编译时看到它。您是否在解决方案中附加了任何预建或后建步骤?您在“构建”流程中包含的任何单元测试都会进行测试吗?

此错误出现在哪里?

答案 8 :(得分:0)

检查事件查看器的应用程序日志 - 它应该告诉您抛出异常的位置。

答案 9 :(得分:0)

只是澄清一下,编译器本身是不是很窒息?你在代码中使用#define和#if指令做了什么奇怪的事吗?也许某些事情在某些时候出现了故障......只是一个想法...

答案 10 :(得分:0)

  • 查看是否有任何可能失败的构建后事件。这些可以在每个项目的属性页面上找到。

  • 尝试使用Rebuild Solution而不是Build Solution。您可能需要从工具&gt;添加重建解决方案定制。如果您的Web应用程序安装或注册任何Windows服务,并且这些服务已启动,则重建可以解决这些类型的问题。