Ошибка MSBuild MSB4018 в VS2015: неожиданно не удалось выполнить задачу " ссылка

после обновления решения с 25 проектами от VS2012 Update 4 до VS2015 RTM( 14.0.23107.0) я получаю следующую ошибку при создании одного из проектов:

(...) MSB4018: "неожиданно не удалось выполнить задачу "ссылка". (...) Система.Исключение NullReferenceException: ссылка на объект не указывает на экземпляр объекта.'(...)

здесь полный выход:

1>------ Build started: Project: Buttons, Configuration: Release Win32 ------
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018: The "Link" task failed unexpectedly.
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018: System.NullReferenceException: Object reference not set to an instance of an object.
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.Link.ForcedRebuildRequired()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.TrackedVCToolTask.ComputeOutOfDateSources()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.TrackedVCToolTask.SkipTaskExecution()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.Utilities.ToolTask.Execute()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.TrackedVCToolTask.Execute()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
1>C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__1.MoveNext()
========== Build: 0 succeeded, 1 failed, 24 up-to-date, 0 skipped ==========

Я уже пробовал несколько предложенных решений, связанных с MSB4018 без каких-либо успехов. Ошибка "задача" ссылка "неожиданно не удалась" еще даже не был проиндексирован Google. Я предполагаю, что эта проблема каким-то образом связана с типом проекта, потому что это единственный проект в решении, который используется как DLL ресурсов (т. е. без точки входа и т. д.). Единственными изменениями, которые были внесены в файл проекта VS2015, являются "ToolsVersion: 4.0 = > 14.0" и "PlatformToolset: v110_xp => v140_xp".

тут у кого есть решение для этого?

3 ответов


мне удалось исправить эту проблему самостоятельно и хотел бы документировать решение здесь для дальнейшего использования.

следующая ошибка была вызвана пустым XML-элементом в файле проекта:

  • MSB4018: система.Исключение NullReferenceException: ссылка на объект не указывает на экземпляр объекта.

к пустому элементу была обращена задача "ссылка", которая просто не удалась:

  • MSB4018: "ссылка" неожиданно задача не удалась.

удаление соответствующего элемента Исправлена ошибка:

<Link><GenerateDebugInformation></GenerateDebugInformation></Link>

подсказка: как видно из других сообщений, многие ошибки MSB4018, похоже, связаны с файлами проекта, содержащими неожиданные значения.


VS 2015: решение проблемы заключается в следующем: Гото:

Свойства Проекта - >Компоновщик - >Отладка - >Создание Отладочной Информации,

задайте это свойство как оптимизация для отладки (/DEBUG) или нет

Примечание: я заметил аналогичную проблему, когда она была пустой (не установлена).

Это сработало для меня.

Надеюсь, эта информация будет полезной.

Удачи:).


другое решение -удалить все сгенерированные файлы из последней сборки через окно Проводника.

удалить все файлы в:

.\Project\bin

.\Project\obj

хотя вы можете "очистить" или "перестроить" непосредственно через Visual Studio, это захватывает только некоторые файлы. Заставляя перекомпилировать все файлы, все места памяти теперь будут правильно выровнены, и проблема должна быть решенный.