1. ホーム
  2. visual-studio-2012

[解決済み] VS2015でMSBuildエラーMSB4018が発生しました。リンク」タスクが予期せず失敗する

2022-02-17 07:59:29

質問

25 個のプロジェクトを含むソリューションを VS2012 Update 4 から VS2015 RTM (14.0.23107.0) にアップグレードした後、プロジェクトの 1 つを構築中に次のエラーが発生しました。

(...) MSB4018: '"Link" タスクが予期せず失敗しました。(...) System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていない' (...)

ここに完全な出力があります。

1>------ Build started: Project: Buttons, Configuration: Release Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018: The "Link" task failed unexpectedly.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018: System.NullReferenceException: Object reference not set to an instance of an object.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.Link.ForcedRebuildRequired()
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.TrackedVCToolTask.ComputeOutOfDateSources()
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.TrackedVCToolTask.SkipTaskExecution()
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.Utilities.ToolTask.Execute()
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.CPPTasks.TrackedVCToolTask.Execute()
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(643,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.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に関連するいくつかの解決策をすでに試しましたが、成功しませんでした。エラーは '"Link" タスクが予期せず失敗しました' は、まだGoogleにインデックスされてもいませんでした。この問題は、ソリューションの中で唯一リソースDLLとして使われている(つまりエントリーポイントなどがない)プロジェクトなので、プロジェクトの種類と何らかの関係があるのだと思います。VS2015によってプロジェクトファイルに加えられた変更は、"のみです。 ToolsVersion: 4.0 => 14.0 "と" PlatformToolset: v110_xp => v140_xp "。

どなたか解決策をお持ちの方はいらっしゃいますか?

どのように解決するのですか?

私自身、この問題を解決することができましたので、今後の参考のため、ここに解決策を記録したいと思います。

プロジェクトファイル内のXML要素が空であることが原因で、以下のエラーが発生しました。

  • MSB4018: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

空の要素に 'Link' タスクがアクセスし、ちょうど失敗しました。

  • MSB4018: '"Link" タスクが予期せず失敗しました。

それぞれの要素を削除すると、問題が解決しました。

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

ヒント:他の投稿にもあるように、MSB4018エラーの多くは、予期せぬ値を含むプロジェクトファイルに関連しているようです。