在VS 2010中编译时导致间歇性“对象引用未设置为对象实例”的原因是什么?

时间:2012-09-13 18:32:43

标签: asp.net vb.net visual-studio-2010

我很抱歉,如果这不是一个真正的编码问题(这取决于我的代码是否会导致问题)。

我见过这个问题:Tracking down intermittent 'Object reference not set to an instance of an object.' error on build

然而,它没有多大帮助(尽管如果你阅读了这些评论,你会发现我认为它确实有一段时间有用)。

当我尝试发布我的网站时,偶尔会出现错误,没有文件或行参考:

Pre-compiling Web Site

Building directory '/App_Code/'.
Building directory '/'.: Publication (web): Object reference not set to an instance of an object.

Pre-compilation Complete
------ Skipped Publish: Project X:\, Configuration: Debug Any CPU ------

我知道“对象引用未设置为对象实例”的常见原因但这看起来有点不同,是不是应该是运行时错误?不是构建错误?

奇怪的是,它似乎随机发生(大约25%-33%的时间)。我可以尝试发布它并让它失败。然后直接再试一次,没有改变任何东西,它工作正常。

我将一些函数(VB.net btw)移动到App_Code文件夹中的新文件后开始出现此错误,因此可以通过该站点的所有页面访问它们。

如果您需要更多信息,请告知我们。

谢谢,

编辑:经过进一步调查后,似乎只有在我尝试在保存对其中任何文件的更改的几秒钟内发布网站时才会发生。什么可能导致这种情况?

4 个答案:

答案 0 :(得分:3)

我发生了同样的错误,我删除了已经在垃圾箱中的网站中的自定义控件的dll,然后我发布了网站,并成功了

答案 1 :(得分:0)

IF 您的项目中有任何自定义/用户控件,它们实际上是在设计时运行并且可能会给出对象引用错误。这也可以在构建期间发生。在这种情况下,正在引用的属性是NOTHING并抛出错误。

答案 2 :(得分:0)

我在Windows窗体项目中遇到了类似的问题。

无论我在Windows窗体上移动自定义控件,然后尝试保存表单,VS2010都会返回“对象未设置为对象的实例”。

我怀疑错误是在我继承的代码中的抽象层深处,但是如果没有查看每一行代码,就无法确定有多深。

我解决这个问题的方法就是这个。

  1. 打开Visual Studio 2010的另一个实例
  2. 菜单:调试|附加到过程..
  3. 搜索“devenv.exe xxx YourApplicationName ...”并选择它
  4. 点击“附加”
  5. 菜单:调试|例外..
  6. 勾选抛出列中的所有框,然后“确定”
  7. 您的第二个VS2010实例未调试您的第一个实例,包括所有自定义控件。

    返回VS2010的第一个实例,并首先重复导致错误的操作,VS2010的第二个实例将在有错误的代码行中断。

答案 3 :(得分:-1)