web-dev-qa-db-ja.com

VS2015のMSBuildエラーMSB4018:「リンク」タスクが予期せず失敗しました

25プロジェクトのソリューションをVS2012 Update 4からVS2015 RTM(14.0.23107.0))にアップグレードした後、プロジェクトの1つをビルドしているときに次のエラーが発生します。

(...)MSB4018: '「リンク」タスクが予期せず失敗しました。(...)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に関連する提案された解決策をいくつか試しましたが、成功しませんでした。エラー「「リンク」タスクが予期せず失敗しました」は、まだGoogleによってインデックスされていません。この問題は、リソースとして使用されているソリューション内の唯一のプロジェクトであるため、プロジェクトのタイプに何らかの関係があると思いますDLL(つまり、エントリポイントなしなど)。唯一の変更点VS2015によってプロジェクトファイルに対して行われたのは、「ToolsVersion:4.0 => 14.0」と「PlatformToolset: v110_xp => v140_xp "。

誰かがこれに対する解決策を持っていますか?

12
alex.dev

私はこの問題を自分で解決できたので、今後の参考のために解決策をここに文書化します。

次のエラーは、プロジェクトファイル内の空のXML要素が原因でした。

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

空の要素は 'Link'タスクによってアクセスされましたが、失敗しました:

  • MSB4018: '「リンク」タスクが予期せず失敗しました。

それぞれの要素を削除すると問題が修正されました:

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

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

16
alex.dev

VS 2015:問題の解決策は次のとおりです。

プロジェクトのプロパティ->リンカ->デバッグ->デバッグ情報の生成、

このプロパティをデバッグ用に最適化(/ DEBUG)またはNoのいずれかとして設定します

注:空白(設定されていない)のときに同様の問題が発生しました。

それは私のために働いた。

この情報がお役に立てば幸いです。

幸運を:)。

5
xs2harpreet

別の解決策は、前回のビルドからエクスプローラーウィンドウを使用して生成されたすべてのファイルを削除するです。

内のすべてのファイルを削除:

。\ Project\bin

。\ Project\obj

Visual Studioから直接 "クリーン"または "再構築"できますが、これは一部のファイルのみをキャプチャします。すべてのファイルを強制的に再コンパイルすることで、すべてのメモリの場所が正しく整列し、問題が解決されます。

2
Kevin K

エラーステートメントが 'System.InvalidCastException:Unable to cast object of type' System.Xml.XmlComment 'to type' System.Xml.XmlElement ''のような場合は、以下を試すことができます。

.csprojファイルをアンロードして、Project ToolsVersionを確認します。プロジェクトのToolsVersionが14(たとえば12)未満であることを確認してください。

0