webentwicklung-frage-antwort-db.com.de

MSBuild-Fehler MSB4018 in VS2015: Die "Link" -Task ist unerwartet fehlgeschlagen

Nach dem Upgrade einer Lösung mit 25 Projekten von VS2012 Update 4 auf VS2015 RTM (14.0.23107.0) wird beim Erstellen eines der Projekte die folgende Fehlermeldung angezeigt:

(...) MSB4018: 'Die "Link" -Task ist unerwartet fehlgeschlagen. (...) System.NullReferenceException: Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt. ' (...)

Hier die volle Ausgabe:

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 ==========

Ich habe bereits mehrere Lösungsvorschläge für MSB4018 ohne Erfolg ausprobiert. Der Fehler 'Die "Link" -Aufgabe ist unerwartet fehlgeschlagen' wurde von Google noch nicht einmal indiziert. Ich denke, dieses Problem hängt irgendwie mit dem Typ des Projekts zusammen, da es das einzige Projekt in der Lösung ist, das als Ressource DLL verwendet wird (d. H. Ohne Einstiegspunkt usw.). Die einzigen Änderungen, die VS2015 an der Projektdatei vorgenommen hat, sind " ToolsVersion: 4.0 => 14.0 " und " PlatformToolset: v110_xp => v140_xp ".

Hat jemand eine Lösung dafür?

11
alex.dev

Ich habe es geschafft, dieses Problem selbst zu beheben, und ich möchte die Lösung hier zum späteren Nachschlagen dokumentieren.

Der folgende Fehler wurde durch ein leeres XML-Element in der Projektdatei verursacht:

  • MSB4018: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt.

Auf das leere Element wurde von der Task 'Link' zugegriffen, die gerade fehlgeschlagen ist:

  • MSB4018: 'Die Task' Link 'ist unerwartet fehlgeschlagen.

Durch Entfernen des entsprechenden Elements wurde das Problem behoben:

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

Tipp: Wie in anderen Beiträgen zu sehen ist, scheinen viele der MSB4018-Fehler mit Projektdateien in Zusammenhang zu stehen, die unerwartete Werte enthalten.

15
alex.dev

VS 2015: Die Lösung des Problems ist wie folgt: Goto:

Projekteigenschaften-> Linker-> Debugging-> Debug-Informationen generieren,

Setzen Sie diese Eigenschaft entweder auf Zum Debuggen optimieren (/ DEBUG) oder Nein

Hinweis: Ich habe ein ähnliches Problem festgestellt, als es leer war (nicht gesetzt).

Es hat für mich funktioniert.

Hoffe, diese Informationen wären hilfreich.

Viel Glück:).

5
xs2harpreet

Eine andere Lösung ist, alle generierten Dateien löschen vom letzten Build durch ein Explorer-Fenster.

Alle Dateien löschen in:

.\Project\bin

.\Project\obj

Sie können zwar direkt durch Visual Studio "bereinigen" oder "neu erstellen", dies erfasst jedoch nur einige der Dateien. Durch das Erzwingen, alle Dateien neu zu kompilieren, werden jetzt alle Speicherorte korrekt ausgerichtet und das Problem sollte behoben werden.

2
Kevin K

Wenn die Fehleranweisung in etwa wie ' System.InvalidCastException: Objekt des Typs' System.Xml.XmlComment 'nicht in Typ' System.Xml.XmlElement '' umgewandelt werden kann, können Sie Folgendes versuchen:

Entladen Sie die .csproj-Datei und suchen Sie nach Project ToolsVersion. Stellen Sie sicher, dass ToolsVersion der Projekte weniger als 14 ist (zum Beispiel 12).

0