Как исправить ошибку MSB4018: задача" VCMessage "неожиданно не удалась" в Visual Studio 2013
вот что я вижу:
1>------ Build started: Project: xxx (xxxxxx), Configuration: Debug Win32 ------
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: The "VCMessage" task failed unexpectedly.
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at System.String.Format(IFormatProvider provider, String format, Object[] args)
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.Shared.ResourceUtilities.FormatString(String unformatted, Object[] args)
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.Utilities.TaskLoggingHelper.FormatString(String unformatted, Object[] args)
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.Utilities.TaskLoggingHelper.FormatResourceString(String resourceName, Object[] args)
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.Utilities.TaskLoggingHelper.LogErrorWithCodeFromResources(String messageResourceName, Object[] messageArgs)
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.CPPTasks.VCMessage.Execute()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V120Microsoft.Cpp.Platform.targets(64,5): error MSB4018: at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
и решения, перечисленные в google, и поэтому поиск не доставляют (удаление конечных косых черт, возврат к умолчанию $(OutDir)
или $(TargetDir)
дорожки и т. д.)
контекст
Это касается нескольких проектов, которые были перенесены из MSVC2012. Другие проекты с тем же макетом проекта/решения, перенесенные из той же среды MSVC2012, не моргнули глазом, в то время как некоторые показывают эту ошибку, которая предотвращает любой успешный результат компиляции / сборки.
1 ответов
Исправления
ошибка была вызвана полем конфигурации проекта Platform Toolset
будучи пустой. (The .vcproj
файл проекта должен содержать такое значение, как v120
здесь)
до:
<PlatformToolset>
</PlatformToolset>
после:
<PlatformToolset>v120</PlatformToolset>
это значение можно задать в DevStudio через панель свойств проекта > свойства конфигурации > общие > набор инструментов платформы :: выберите одно из значений из раскрывающегося списка там.
то, как это было обнаружено:
создать пустой новая проект в MSVC2013 того же типа
используйте Beyond Compare (или другой визуальный инструмент diff, который может легко редактировать сравниваемые файлы, копируя куски), чтобы скопировать файлы, установленные и протестировать (перезагрузив DevStudio и запустив .