2012-08-30 26 views
2

当我开始构建我的应用程序时,Msbuild抛出异常。如果任何人有任何关于这个错误的想法,请让我知道。Msbuild失败,并显示错误消息“给定的键不在字典中”。

Unhandled Exception: Microsoft.Build.Shared.InternalErrorException: MSB0001: Internal MSBuild Error: The given key was not present in the dictionary. 
============= 
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. 
at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
at Microsoft.Build.Construction.SolutionProjectGenerator.AddMetaprojectReferenceItems(ProjectInstance traversalProject, ProjectInstance metaprojectInstance, ProjectInSolution project) 
at Microsoft.Build.Construction.SolutionProjectGenerator.CreateMetaproject(ProjectInstance traversalProject, ProjectInSolution project, ProjectConfigurationInSolution projectConfiguration) 
at Microsoft.Build.Construction.SolutionProjectGenerator.EvaluateAndAddProjects(List`1 projectsInOrder, List`1 projectInstances, ProjectInstance traversalInstance, String selectedSolutionConfiguration) 
at Microsoft.Build.Construction.SolutionProjectGenerator.CreateSolutionProject(String wrapperProjectToolsVersion, Boolean explicitToolsVersionSpecified) 
at Microsoft.Build.Construction.SolutionProjectGenerator.Generate() 
at Microsoft.Build.Execution.ProjectInstance.GenerateSolutionWrapper(String projectFile, IDictionary`2 globalProperties, String toolsVersion, ILoggingService loggingService, BuildEventContext projectBuildEventContext) 
at Microsoft.Build.Execution.ProjectInstance.LoadSolutionForBuild(String projectFile, PropertyDictionary`1 globalPropertiesInstances, String toolsVersion, BuildParameters buildParameters, ILoggingService loggingService, BuildEventContext projectBuildEventContext) 
at Microsoft.Build.Execution.BuildManager.LoadSolutionIntoConfiguration(BuildRequestConfiguration config, BuildEventContext buildEventContext) 
at Microsoft.Build.Execution.BuildManager.HandleNewRequest(Int32 node, BuildRequestBlocker blocker) 
at Microsoft.Build.Execution.BuildManager.Microsoft.Build.BackEnd.INodePacketHandler.PacketReceived(Int32 node, INodePacket packet) 
at Microsoft.Build.BackEnd.NodeManager.RoutePacket(Int32 nodeId, INodePacket packet) 
at Microsoft.Build.BackEnd.NodeProviderInProc.RoutePacket(Int32 nodeId, INodePacket packet) 
at Microsoft.Build.BackEnd.NodeEndpointInProc.SendData(INodePacket packet) 
at Microsoft.Build.BackEnd.InProcNode.OnNewRequest(BuildRequestBlocker blocker) 
at Microsoft.Build.BackEnd.BuildRequestEngine.RaiseRequestBlocked(BuildRequestBlocker blocker) 
at Microsoft.Build.BackEnd.BuildRequestEngine.IssueBuildRequest(BuildRequestBlocker blocker) 
at Microsoft.Build.BackEnd.BuildRequestEngine.ReportConfigurationResponse(BuildRequestConfigurationResponse response) 
at Microsoft.Build.BackEnd.InProcNode.HandlePacket(INodePacket packet) 
at Microsoft.Build.BackEnd.InProcNode.Run(Exception& shutdownException) 

---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. 
at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
at Microsoft.Build.Construction.SolutionProjectGenerator.AddMetaprojectReferenceItems(ProjectInstance traversalProject, ProjectInstance metaprojectInstance, ProjectInSolution project) 
at Microsoft.Build.Construction.SolutionProjectGenerator.CreateMetaproject(ProjectInstance traversalProject, ProjectInSolution project, ProjectConfigurationInSolution projectConfiguration) 
at Microsoft.Build.Construction.SolutionProjectGenerator.EvaluateAndAddProjects(List`1 projectsInOrder, List`1 projectInstances, ProjectInstance traversalInstance, String selectedSolutionConfiguration) 
at Microsoft.Build.Construction.SolutionProjectGenerator.CreateSolutionProject(String wrapperProjectToolsVersion, Boolean explicitToolsVersionSpecified) 
at Microsoft.Build.Construction.SolutionProjectGenerator.Generate() 
at Microsoft.Build.Execution.ProjectInstance.GenerateSolutionWrapper(String projectFile, IDictionary`2 globalProperties, String toolsVersion, ILoggingService loggingService, BuildEventContext projectBuildEventContext) 
at Microsoft.Build.Execution.ProjectInstance.LoadSolutionForBuild(String projectFile, PropertyDictionary`1 globalPropertiesInstances, String toolsVersion, BuildParameters buildParameters, ILoggingService loggingService, BuildEventContext projectBuildEventContext) 

谢谢。

回答

0

这是一个内部错误。您可以通过异常类型以及错误代码(MSB0001)来判断。这意味着它只会发生在某些MSBuild版本中,可能只会与某些特定的项目文件一起发生。

我曾见过类似的错误出现在VS2010中,并被后续版本修复的情况。我曾见过VS2013没有出现过的情况,并且与VS2015或VS2017一起推出(未检查所有版本)。这些案件可能不相关。

要问一个关于内部工具问题的正确问题,您需要花费一些时间修改(简化)您的项目,直到您知道哪种项目文件更改(或源文件更改)会打开和关闭此问题,并且使用哪个工具版本。

相关问题