2012-09-13 32 views
5

En TFS 2010, configuré algunas compilaciones de CI que también ejecutan pruebas de unidad MSTest. Esto funciona bien, a excepción de una solución, en la que generalmente (pero no siempre) sale el siguiente acumulación (no corredor de prueba) Error:MSBuild NullReferenceException en Microsoft.TeamTest.targets

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.TeamTest.targets (14): Object reference not set to an instance of an object.

El Logging Verbosity de la Definición de construcción se establece en Diagnostic. Some social.msdn.com posts sugiere esto para deshacerse de este error muy ocasional. Si fuera ocasional, por cierto, podríamos solucionarlo programando otra compilación si se rompe por la razón anterior. No es, sin embargo, y lleva mucho tiempo construir también.

Aunque es un error de compilación, se puede solucionar configurando Disable Tests en True. Sin embargo, quiero ejecutar la prueba. Sabe alguien cómo arreglar esto? Las otras soluciones (de trabajo) a menudo son subconjuntos de proyectos de All Projects. All Project es una solución bastante grande.

que tienen la salida de MSBuild abreviada aquí, en caso de que ayuda:

Run MSBuild for Project 
Initial Property Values 
AdditionalVCOverrides = 
CommandLineArguments = /p:SkipInvalidConfigurations=true 
Configuration = Release 
GenerateVSPropsFile = True 
LogFile = 
LogFileDropLocation = 
MaxProcesses = 1 
OutDir = All Projects-CI\Binaries\Release 
Platform = Any CPU 
Project = All Projects-CI\Sources\Shared\All Projects.sln 
ResponseFile = 
RunCodeAnalysis = AsConfigured 
Targets = 
TargetsNotLogged = String[] Array 
ToolPath = 
ToolPlatform = Auto 
Verbosity = Diagnostic 
Built $/.../DataAccessLayer.Testing.csproj for default targets. 

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.TeamTest.targets (14): Object reference not set to an instance of an object. 
+0

¿Usted se ha descriptores de acceso privado en la solución que mencionaste? Todo parece implicar que este mensaje de error se refiere al acceso a los accesadores privados, por lo que, si no son necesarios, puede eliminarlos. O quizás intente regenerarlos http://msdn.microsoft.com/en-us/library/ms184796%28v=vs.80%29.aspx –

Respuesta

0

Eso BuildShadowTask tarea personalizada en MSBuild \ Microsoft \ VisualStudio \ v10.0 \ TeamTest \ Microsoft.TeamTest.targets está causando el error . La razón por la que no ve el error cuando deshabilita las pruebas esta tarea de compilación no se ejecuta cuando las pruebas están deshabilitadas.

Sugiera agregar tareas de Mensaje de MsBuild para generar los diversos valores para determinar cuál está causando el error "Referencia de objeto no configurada como una instancia de un objeto".

Antes de esta línea:

<BuildShadowTask 
     ExecuteAsTool="False" 
     CurrentResolvedReferences="@(ReferencePath)" 
     CurrentCopyLocalFiles="@(ReferenceCopyLocalPaths)" 
     Shadows="@(Shadow)" 
     ProjectPath="$(ProjectDir)" 
     IntermediatePath="$(IntermediateOutputPath)" 
     SignAssembly="$(SignAssembly)" 
     KeyFile="$(AssemblyOriginatorKeyFile)" 
     DelaySign="$(DelaySign)"> 

añadir una tarea mensaje de salida de los valores de cada parámetro que se pasa a la BuildShadowTask para determinar cuál es un error:

<Message Text="AssemblyOriginatorKeyFile $(AssemblyOriginatorKeyFile)" Importance="High" /> 
Cuestiones relacionadas