MSBuild在Microsoft.TeamTest.targets中出现了NullReferenceException异常

5
在TFS 2010上,我配置了一些CI构建,也运行MSTest单元测试。这很好用,但有一个解决方案除外,我通常(但不总是)会遇到以下构建错误(而不是测试运行器错误):

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.TeamTest.targets (14): 对象引用未设置为对象的实例。

构建定义的“日志记录详细程度”设置为“诊断”。一些social.msdn.com文章建议这可以消除这个非常偶尔的错误。顺便说一下,如果出现上述原因导致破坏,则我们可以通过安排另一个构建来解决它。然而,它并不是偶然发生的,并且构建所需的时间也很长。
虽然这是一个构建错误,但可以通过将禁用测试设置为True来解决。然而,我确实想运行测试。有人知道如何解决吗?其他(有效的)解决方案通常是所有项目的子集。 所有项目是一个相当大的解决方案。
如果有帮助,我在此处提供了缩短的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.

你提到的解决方案中是否有私有访问器?所有的迹象都表明这个错误消息与访问私有访问器有关,所以如果它们不是必需的,你可以将它们移除。或者尝试重新生成它们:http://msdn.microsoft.com/en-us/library/ms184796%28v=vs.80%29.aspx - Ed W
1个回答

0

在MSBuild\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.TeamTest.targets中的BuildShadowTask自定义任务引起了错误。当你禁用测试时,这个构建任务不会运行,所以你看不到错误。

建议添加MsBuild Message任务来输出各种值,以确定哪一个导致了“对象引用未设置为对象实例”的错误。

在此行之前:

  <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" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接