Msbuild失败,并显示错误消息“字典中没有给定的密钥。”

时间:2012-08-30 07:16:52

标签: 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)

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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