2012-09-13 7 views
5

Su TFS 2010 ho configurato un po 'CI generazioni unit test run MSTest troppo. Questo funziona bene, tranne che per una soluzione, dove ho solito (ma non sempre) ottengo il seguente accumulo (non prova runner) errore:MSBuild NullReferenceException in 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.

La Logging Verbosity della definizione di compilazione è impostato su Diagnostic. Some social.msdn.com posts suggerire questo per sbarazzarsi di questo errore molto occasionale. Se fosse occasionale, a proposito, potremmo aggirare il problema programmando un'altra build se è rotta per il motivo sopra. Non è, tuttavia, e richiede anche molto tempo per essere costruito.

Anche se si tratta di un errore di compilazione, può essere risolto impostando Disable Tests su True. Voglio fare il test, comunque. Qualcuno sa come risolvere questo? Le altre soluzioni (di lavoro) sono spesso sottoinsiemi dei progetti di All Projects. All Project è una soluzione piuttosto grande.

ho l'uscita MSBuild accorciato qui, nel caso in cui aiuta:

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

Hai funzioni d'accesso privati ​​in la soluzione che hai citato? Tutto sembra implicare che questo messaggio di errore si riferisce all'accesso ai programmi di accesso privati, quindi se non sono necessari è possibile rimuoverli. O forse prova a rigenerarli http://msdn.microsoft.com/en-us/library/ms184796%28v=vs.80%29.aspx –

risposta

0

Che BuildShadowTask un'attività personalizzata in MSBuild \ Microsoft \ VisualStudio \ v10.0 \ TeamTest \ Microsoft.TeamTest.targets causa l'errore . Il motivo per cui non vedi l'errore quando disabiliti i test questa attività di build non viene eseguita quando i test sono disabilitati.

consiglia di aggiungere compiti segnalare MSBuild per emettere i vari valori per determinare quale di essi causa il "Oggetto non impostato a un'istanza di un oggetto" errore.

Prima di questa linea:

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

aggiungere un'attività Messaggio per emettere i valori di ciascun parametro passato alla BuildShadowTask per determinare quale è in errore:

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