2012-09-13 23 views
5

2010年TFS我配置了一些CI構建該運行MSTest的單元測試過。這工作得很好,除了一個解決方案,其中我通常(但不總是)得到以下構建(未測試運行)錯誤:的MSBuild的NullReferenceException在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.

生成定義的Logging Verbosity設置爲DiagnosticSome social.msdn.com posts建議這個擺脫這個偶然的錯誤。如果是偶然的,順便說一句,我們可以解決它的,如果它被打破由於上述原因調度另一個版本。然而,這並不是,而且花費相當多的時間來構建。

即使它是構建錯誤,它可以通過將Disable Tests設置爲True來解決。但是,我確實想要運行測試。有人知道如何解決這個問題嗎?其他(工作)解決方案通常All Projects的項目的子集。 All Project是一個相當大的解決方案。

我有縮短的MSBuild的輸出在這裏,在情況下,它可以幫助:

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

你有私人訪問者在你提到的解決方案?一切似乎都在暗示此錯誤消息涉及到訪問私有訪問器,因此,如果他們不需要,你可以刪除它們。或許嘗試再生他們http://msdn.microsoft.com/en-us/library/ms184796%28v=vs.80%29.aspx –

回答

0

在的MSBuild \微軟\ VisualStudio的BuildShadowTask自定義任務\ V10.0 \ TeamTest \ Microsoft.TeamTest.targets導致錯誤。當您禁用測試此構建任務時,您看不到錯誤的原因在禁用測試時不會運行。

推薦加入的MSBuild消息任務輸出的各個值,以確定哪一個是導致錯誤的「未設置爲一個對象的實例對象引用」。

這一行之前:

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

添加消息任務輸出傳遞到BuildShadowTask每個參數的值,以確定哪一個是錯誤的:

<Message Text="AssemblyOriginatorKeyFile $(AssemblyOriginatorKeyFile)" Importance="High" /> 
相關問題