VS2015中的MSBild错误MSB4018:"链接"任务意外失败

时间:2015-07-24 10:36:12

标签: visual-studio-2012 msbuild visual-studio-2015

将具有25个项目的解决方案从VS2012 Update 4升级到VS2015 RTM(14.0.23107.0)后,在构建其中一个项目时出现以下错误:

(...)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相关的建议解决方案但没有任何成功。错误&#39;&#34;链接&#34;任务意外失败&#39; 甚至没有被Google编入索引。我想这个问题在某种程度上与项目类型有关,因为它是解决方案中唯一用作资源DLL的项目(即没有入口点等)。 VS2015对项目文件所做的唯一更改是&#34; ToolsVersion:4.0 =&gt; 14.0 &#34;和&#34; PlatformToolset:v110_xp =&gt; v140_xp &#34;

有人有解决方案吗?

4 个答案:

答案 0 :(得分:15)

我自己设法解决了这个问题,并希望在此处记录解决方案以供将来参考。

以下错误是由项目文件中的空XML元素引起的:

  • MSB4018:System.NullReferenceException:未将对象引用设置为对象的实例。

空元素由“链接”任务访问,该任务刚刚失败:

  • MSB4018:'“链接”任务意外失败。

删除相应的元素解决了问题:

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

提示:正如在其他帖子中可以看到的,许多MSB4018错误似乎与包含意外值的项目文件有关。

答案 1 :(得分:5)

VS 2015:解决问题的方法如下: 转到:

项目属性 - &gt;链接器 - &gt;调试 - &gt;生成调试信息

将此属性设置为优化以进行调试(/ DEBUG)

注意:当它为空白(未设置)时,我发现了类似的问题。

它对我有用。

希望这些信息有用。

祝你好运:)。

答案 2 :(得分:2)

另一个解决方案是通过资源管理器窗口从上一次构建中删除所有生成的文件

删除以下所有文件:

即可。\项目\仓

即可。\项目\ OBJ

虽然你可以&#34;清洁&#34;或&#34;重建&#34;直接通过Visual Studio,这只捕获一些文件。通过强制重新编译所有文件,现在所有内存位置都将正确对齐,并且应该解决问题。

答案 3 :(得分:0)

如果错误声明类似于“ System.InvalidCastException:无法将类型为“ System.Xml.XmlComment”的对象转换为类型为“ System.Xml.XmlElement” ”,则可以尝试以下:

卸载.csproj文件并检查Project ToolsVersion。确保项目ToolsVersion小于14(例如12)。