Как исправить ошибку 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 и запустив .


связанные так Вопросы и блоги, которые были опробованы до всего этого: