asp.net - como - Rastreando intermitentemente ''Referencia de objeto no establecida en una instancia de un objeto''. error en la compilaciĆ³n
referencia a objeto no establecida como instancia de un objeto c# (11)
Podría utilizar algo de ayuda tratando de rastrear un error intermitente que he estado teniendo con nuestro proyecto ASP.Net durante bastante tiempo.
De forma intermitente al construir la solución, la compilación fallará con el error "/: Build (web): referencia de objeto no establecida en una instancia de un objeto". El error no tiene archivo asociado, línea, columna o información del proyecto. Lo extraño del error es que desaparecerá en las reconstrucciones sucesivas y no parece dar lugar a ningún error de tiempo de ejecución que hayamos encontrado una vez que la construcción sea exitosa. Algunas veces el error aparecerá una sola vez, a veces 3-4 veces, pero eventualmente la compilación finalizará exitosamente y luego parecerá que se compilará bien cada vez. No he podido establecer un patrón sobre por qué y cuándo ocurrirá el error, y dado que siempre se construye, no ha sido un problema crítico para nosotros. Solo una molestia Pero uno que quiero que se vaya por razones obvias.
Supongo que debería agregar que esta es una aplicación que fue desarrollada originalmente en ASP.net 1.1 y convertida a 2.0 y luego la heredé en algún lugar de la línea, así que no sé cuándo surgió el problema originalmente. En lo que a todos se refiere, siempre ha estado ahí.
Obviamente, no espero que alguien sepa cuál es la causa de mi problema, ya que eso requeriría que mirasen toda nuestra solución para detectar posibles problemas. Solo espero que alguien me pueda dar un par de ideas nuevas sobre cómo rastrear la fuente real del error en el código. Tiene que venir de algún lado, ¿verdad? ¿Cómo vas a averiguar dónde?
Solo para aclarar, ¿es el compilador el que se está ahogando? ¿Estás haciendo algo extraño con las directivas #define y #if en tu código? Tal vez algo se está haciendo fuera de orden en algún momento ... Solo un pensamiento ...
Una "Referencia de objeto no configurada para una instancia de un objeto" es claramente un error en tiempo de ejecución, no un error en tiempo de compilación. Entonces, lo que eso me dice es que Visual Studio se está ahogando en algo, que puede no estar necesariamente en su código, o que algo en su código solo está causando indirectamente.
La siguiente pregunta sería: ¿esto solo ocurre en Visual Studio o aparece lo mismo cuando compila con MSBuild o CSC?
Lo he visto cuando tienes un control web en una página donde no hay HTML válido. Si su código subyacente está tratando de hacer algo con el control, no podrá encontrarlo y le dará error de Referencia de objeto ... en tiempo de compilación. En mi experiencia, no crea un error de tiempo de ejecución, y el proyecto se compilará si el archivo en cuestión está cerrado en el momento de la compilación. HTH, buena suerte!
Lo que es realmente extraño es que es un error en tiempo de ejecución. No deberías ver eso en tiempo de compilación. ¿Tiene algún paso anterior o posterior a la construcción adjunto a la solución? ¿Alguna prueba de unidad que estés incluyendo con tu proceso de ''compilación''?
¿Dónde aparece este error?
Verifique el registro de la aplicación de su Visor de eventos: le indicará dónde se lanzará la excepción.
Vea si hay algún evento posterior a la construcción que podría estar fallando. Estos se pueden encontrar en la página de propiedades de cada proyecto.
Intenta usar Rebuild Solution en lugar de Build Solution. Es posible que deba agregar Rebuild Solution desde Herramientas> Personalizar. Si su aplicación web instala o registra cualquier servicio de Windows, y esos servicios se inician, Rebuilding se abre a través de ese tipo de problemas.
Ejecute este comando en la línea de comando y vea si obtiene información más detallada
% WINDIR% / Microsoft.NET / Framework / v3.5 / msbuild.exe YourSolution.sln / v: n
Lo primero que intentaría sería aumentar la verbosidad del compilador. Esto se puede establecer en las opciones de Visual Studio, por ejemplo, "Herramientas-> Opciones-> Proyectos y soluciones-Compilar y ejecutar-> Nivel de detalle de la salida de compilación del proyecto MSBuild" para VS2005. Si lo configura en diagnóstico, debe decirle lo que está haciendo en el momento en que se produce la excepción como mínimo.
Lo tuve en el momento de la compilación cuando mi proyecto contenía fuentes de datos personalizadas (mis propios objetos devolviendo colecciones) con errores de compilación (es decir, mis objetos tenían errores).
También obtendrá este error si intenta agregar una fuente de datos y su proyecto no tiene fuentes de datos en la raíz del proyecto (por ejemplo, si ha puesto todas sus clases de origen de datos en una subcarpeta). La única solución que encontré fue crear un origen de datos en la raíz del proyecto.
Lamento no ser más preciso, pero parece que hay varias cosas que pueden salir mal con las fuentes de datos / objetos en tiempo de compilación.
Para realizar un seguimiento de este problema, nunca rastreamos el origen del error, pero desapareció cuando actualizamos a Visual Studio 2008 y convertimos el proyecto a una aplicación web.
Tuve este problema durante mucho tiempo y finalmente encontré una solución que funciona bien para mí. No tiene sentido para mí ... pero al alterar mi archivo web.config con lo siguiente se elimina definitivamente este error de compilación intermitente:
<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>
Espero que esto ayude !