错误MSB4018:" VCMessage"任务意外失败。 System.FormatException:索引(从零开始)必须大于或等于零且小于参数列表的大小。 在System.Text.StringBuilder.AppendFormat(IFormatProvider提供程序,String格式,Object [] args) 在System.String.Format(IFormatProvider提供程序,String格式,Object [] args) 在Microsoft.Build.Shared.ResourceUtilities.FormatString(String unformatted,Object [] args) 在Microsoft.Build.Utilities.TaskLoggingHelper.FormatString(String unformatted,Object [] args) 在Microsoft.Build.Utilities.TaskLoggingHelper.FormatResourceString(String resourceName,Object [] args) 在Microsoft.Build.Utilities.TaskLoggingHelper.LogWarningWithCodeFromResources(String messageResourceName,Object [] messageArgs) 在Microsoft.Build.CPPTasks.VCMessage.Execute() 在Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost,TaskLoggingContext taskLoggingContext,TaskHost taskHost,ItemBucket bucket,TaskExecutionMode howToExecuteTask,Boolean& taskResult)C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Microsoft .CppBuild.targets 990 6 vtk_minimal
答案 0 :(得分:12)
我遇到了同样的问题。我有一个旧的Visual Studio 2005 C ++项目,我用Visual Studio 2010 C ++重新打开了它。对我来说,Microsoft Connect提出的第一个建议是:
问题源于在Link-> OutputFile下的属性页中发现的意外$(TargetDir)。在构建过程中,我们尝试将OutputFile扩展为完整路径,但只获得一个空值。因此,它导致了索引越界异常。
我们不太可能在VS2010发布之前解决这些问题。解决方法是更正OutputPath或从父级继承。
右键单击该项目,然后转到属性>链接器>一般。然后将“输出文件”设置为“<继承自父项或项目默认值>”
希望能为你修复它。
答案 1 :(得分:0)
我无法弄清楚出了什么问题。为我修复此错误的唯一方法是删除配置并创建一个新配置。 因此,在Configuration Manager中,我删除了无法构建的那个,并且我从类似的那个中重新创建了它。