Отслеживание прерывистого 'Ссылка на объект не установлена ​​для экземпляра объекта.' ошибка при сборке - PullRequest
14 голосов
/ 16 октября 2008

Я мог бы использовать некоторую помощь, пытаясь отследить случайную ошибку, с которой я сталкивался в нашем проекте ASP.Net уже довольно давно.

Периодически при сборке решения сборка завершается с ошибкой «/: Build (web): ссылка на объект не установлена ​​на экземпляр объекта.» Ошибка не связана с файлом, строкой, столбцом или информацией о проекте. Странная вещь об ошибке заключается в том, что она исчезнет при последовательных перестройках и, по-видимому, не приведет к ошибкам во время выполнения, с которыми мы столкнемся после успешной сборки. Иногда ошибка выскакивает только один раз, иногда 3-4 раза, но в конце концов сборка завершится успешно, а затем, похоже, будет собираться нормально каждый раз после. Я не смог определить, почему и когда произойдет ошибка, и, поскольку она всегда создается, это не было для нас критической проблемой. Просто раздражение. Но тот, который я хочу, ушел по понятным причинам.

Полагаю, я должен добавить, что это приложение, которое изначально было разработано в ASP.net 1.1 и преобразовано в 2.0, и я унаследовал его где-то в дальнейшем, поэтому я не знаю, когда проблема возникла изначально. Что касается всех здесь, это всегда было там.

Очевидно, я не ожидаю, что кто-то определит причину моей проблемы, так как это потребует, чтобы они посмотрели на все наше решение, чтобы выявить потенциальные проблемы. Просто надеясь, что кто-то может дать мне пару свежих идей о том, как найти истинный источник ошибки в коде. Это должно быть откуда-то, верно? Как бы вы узнали, где?

Ответы [ 11 ]

6 голосов
/ 16 октября 2008

Я видел это, когда у вас есть веб-элемент управления на странице, где есть недопустимый HTML. Если ваш codebehind пытается что-то сделать с элементом управления, он не сможет найти его и выдаст ошибку Object Reference ... во время компиляции. По моему опыту, это не создает ошибку времени выполнения, и проект будет построен, если рассматриваемый файл будет закрыт во время сборки. HTH, удачи!

6 голосов
/ 19 октября 2008

Запустите эту команду в командной строке и посмотрите, получите ли вы более подробную информацию

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

5 голосов
/ 07 мая 2009

Чтобы решить эту проблему, мы никогда не отслеживали источник ошибки, но она исчезла при обновлении до Visual Studio 2008 и преобразовании проекта в веб-приложение.

4 голосов
/ 04 февраля 2011

У меня была эта проблема в течение долгого времени, и, наконец, я нашел решение, которое отлично работает для меня. Это не имеет смысла для меня ... но изменение моего файла 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>

Надеюсь, это поможет!

3 голосов
/ 20 октября 2008

Первое, что я бы попробовал, - это увеличить детализацию компилятора. Это может быть установлено в параметрах Visual Studio - например, "Tools-> Options-> Projects and Solutions-Build и Run-> MSBuild, подробности сборки проекта" для VS2005. Если вы установите его на диагностику, то он должен сообщить вам, что он делает в тот момент, когда возникает исключение, как минимум.

3 голосов
/ 20 октября 2008

У меня было это во время сборки, когда мой проект содержал пользовательские источники данных (мои собственные объекты возвращали коллекции) с ошибками компиляции (то есть, мои объекты имели ошибки).

Вы также получите эту ошибку, если попытаетесь добавить источник данных, и в вашем проекте нет источников данных в корне проекта (например, если вы поместили все свои классы источника данных в подпапку). Единственным решением, которое я нашел, было создание источника данных в корне проекта.

Извините, чтобы не быть более точным, но, кажется, есть несколько вещей, которые могут пойти не так с источниками данных / объектами во время компиляции.

0 голосов
/ 16 октября 2008
  • Проверьте, есть ли какие-либо события после сборки, которые могут быть неудачными. Их можно найти на странице свойств каждого проекта.

  • Попробуйте использовать Rebuild Solution вместо Build Solution. Вам может понадобиться добавить Rebuild Solution из Сервис> Настройка. Если ваше веб-приложение устанавливает или регистрирует какие-либо службы Windows, и эти службы запускаются, перестройка решает проблемы такого типа.

0 голосов
/ 16 октября 2008

Просто чтобы уточнить, задыхается ли сам компилятор? Вы делаете что-то странное с директивами #define и #if в вашем коде? Может быть, в какой-то момент что-то не работает ... Просто мысль ...

0 голосов
/ 16 октября 2008

Проверьте журнал приложений вашей программы просмотра событий - в нем должно быть указано, куда выдается исключение.

0 голосов
/ 16 октября 2008

Что действительно странно, так это то, что это ошибка во время выполнения. Вы не должны видеть это во время компиляции. У вас есть какие-либо шаги до или после сборки, приложенные к решению? Какие юнит-тесты вы включаете в процесс сборки?

Где появляется эта ошибка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...