web-dev-qa-db-de.com

v11.0\WebApplications\Microsoft.WebApplication.targets wurde nicht gefunden, wenn die Datei tatsächlich auf v10 verweist

Zuerst etwas Hintergrund. Ende 2012 haben wir unsere vs2008-Lösung auf vs2010 migriert, zielen aber weiterhin auf .NET 3.5. (Ich weiß nichts anderes als das Neueste und Beste hier!) 

Wir hatten bis vor einigen Wochen keine Probleme mit diesem Setup, als die Leute mit diesen Fehlern anfingen:

"foo.csproj" (Rebuild target) (16:5) ->
  C:\...\foo.csproj(142,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

Das Interessante dabei ist, dass die Projektdatei auf v10 verweist, was sinnvoll ist, weil wir Visual Studio 2012 nicht verwenden.

Dieser Fehler traf mehrere von uns gleichzeitig und sogar auf ältere Code-Zweige, die sich seit Monaten nicht geändert haben.

Ich habe den Verdacht, dass einige Updates auf unsere Maschinen verschoben wurden, die Dinge durcheinander bringen, aber ich weiß nicht, was ich dagegen tun soll.

Die kurzfristige Lösung bestand darin, VS 2012 zu installieren und nicht zu verwenden, aber ich hoffe auf etwas saubereres als das.

77
drs9222

Ich bin mit Visual Studio 2013 auf dasselbe Problem gestoßen. Es stellt sich heraus, dass ich die alte Version von MSBuild - diejenige, die mit .NET Framework ausgeliefert wird - von der Befehlszeile aus verwendet hat. Microsoft veröffentlicht MSBuild jetzt als Teil von Visual Studio selbst und auch als separates Installationsprogramm ( http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part- of-visual-studio.aspx ).

Die Lösung bestand darin, die neue Version von MSBuild.exe in C:\Program Files (x86)\MSBuild\12.0\Bin zu verwenden. Nachdem ich das getan hatte, verschwanden alle Zielfehler.

EDIT 1

Wie in den Kommentaren erwähnt, bringt jede neue Version von MSBuild ein neues Verzeichnis mit. Verwenden Sie für Visual Studio 2015 C:\Program Files (x86)\MSBuild\14.0\Bin.

EDIT 2

Wie in den Kommentaren erwähnt, verwenden Sie für Visual Studio 2017 C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe.

111
NathanAldenSr

Wenn Sie einen Build-Server haben, auf dem VS2012 nicht installiert ist, können Sie dies beheben

a) Installieren des Pakets MSBuild.Microsoft.VisualStudio.Web.targets in Ihrer Lösung und

b) Ersetzen dieser Zeile in der .csproj-Datei:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Wenn diese Zeile auf das Nuget-Paket zeigt

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />

BEARBEITEN 

Wie @joedragons darauf hinweist, sollte die Version in der aktualisierten Zeile mit der Nuget-Paketversion übereinstimmen, d. H. targets.11.0.2.1 durch targets.x.x.x.x für die aktuelle Version ersetzen.

50
Daniel de Zwaan

Eine einfache Lösung für dieses Problem:

Gehen Sie zum folgenden Pfad:

C:\Programme (x86)\MSBuild\Microsoft\VisualStudio

Je nach Ihrer Installation von Visual Studio 2010, 2012 oder 2013 wird die neueste Version V10.0, V11.0, V12.0 angezeigt.

Kopieren Sie den WebApplications-Ordner aus einem der neuesten Versionsverzeichnisse und fügen Sie ihn in ein anderes ein.

Ihre Probleme sollten gelöst sein.

23
samdubey

Ich habe festgestellt, dass beim Installieren der kostenlosen Visual Studio 2012-Shell (Isoliert) die MSBuild-Dateien für WebApplications v11 installiert werden. Leichter als eine vollständige Installation von Visual Studio 2012 und keine Lizenzprobleme.

9

Beeindruckend. Wir haben gerade das Gleiche auf unserer Build-Maschine gesehen. Wir verwenden VS2010 und zielen auf .NET 4.0. Unsere Projektdateien importieren explizit die Version 10.0 dieser Ziele. Ohne Änderungen am Code war gestern der Build in Ordnung und heute versagt er mit einer Beschwerde über eine fehlende Version von Version 11.0. .NET Framework 4.5.1 wurde letzte Nacht auf diesem Build-Computer als automatisches Update installiert/aktualisiert. Wir werden v10.0 mit dem Parameter (oder der Umgebungsvariable) erzwingen, aber das hat uns sicherlich überrascht ...

UPDATE: Noch seltsamer ist es, dass es scheint, dass die heutige Version von msbuild die erste Zeile der sln-Datei zu verwenden scheint, um zu bestimmen, welche VisualStudioVersion standardmäßig verwendet wird. 

Format Version 12.00

Wir testeten dies manuell auf 11.00 und der Build funktionierte wieder.

In unserem Fall, obwohl wir alles für 2010/4.0 anvisieren und entwickeln, haben sich einige Entwickler auf VS2012 vorbereitet (da MS behauptete, dass die Projektdateien kompatibel sind) und diese spezielle Lösung zuletzt (vor Monaten) in gespeichert wurde VS2012. Vor heute war das kein Problem.

8
lesscode

Ich hatte das gleiche Problem. Fixiert durch Durchgehen der oben aufgeführten Lösungen. Das Problem wird dadurch verursacht, dass die entsprechende Version von Visual Studio Tools (BuildTools) auf dem Build-Server nicht verfügbar ist. Wie oben richtig erwähnt, kann dies durch die Installation von BuildTools behoben werden. Dies ist in meinem Fall jedoch nicht die Option. 

Hier ist eine weitere Alternative - verwenden Sie Nuget 

Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3

Identifizieren Sie das Startprojekt und installieren Sie die web.targets basierend auf der verwendeten Version von Visual Studio. Die folgenden Dateien werden modifiziert und enthalten die erforderlichen Änderungen

In packages.config:

<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />

In .csproj:

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />

Hoffe das hilft!!! Viel Glück,

Prost,

Pavan

5
user2964808

Hack, aber gelöst, indem Folgendes kopiert wurde: C:\Programme (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications *. * Nach C:\Programme (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications *. *

3
Wolf5

Ich habe diesen Fehler Ende November erhalten, ohne Änderungen an der Konfiguration meiner TeamCity-Installation, der MSBuild-Installation oder des Quellcodes vorzunehmen. Auf meinem Build-Server ist Visual Studio noch nicht einmal installiert, und die Umstellung von VS2010 auf VS2012 erfolgte Ende August ohne Probleme. 

Meine MSBuild-Version ist 4.0.30319.18408. Mein Build-Server ist ein Windows Server 2008 R2 SP1 mit TeamCity v6.5.3. 

Ich löste das Problem, indem ich einfach den v11-Ordner von einem anderen Build-Server kopierte, der nicht betroffen war.

Ich vermute, dass dies auf zwei Arten geschehen konnte:

  1. Es wurde etwas aktualisiert, was den v11-Ordner löschte. Könnte es ein Windows Update auf .NET sein oder so?

  2. Es wurde etwas aktualisiert, was meine TeamCity/MSBuild-Konfiguration von Version 10 auf Version 11 geändert hat und die Builds nicht mehr funktionieren, da Version 11 nie existiert hat.

Ich habe am 3. Dezember ein Update auf .NET Framework 4.5.1 erhalten. Kann dies der Grund sein?

Brgds

Jonas

1
Jonas

Ich bin vor kurzem mit dem gleichen Problem festgefahren. Und meine Schlussfolgerung ist, dass jede Version von VS (v10, v11, v12) den Pfad der Erstellungsvariablen ändert, wie MSBuildBinPath.

Die Angabe einer genauen Version von VS ist daher kein Hacker, da möglicherweise nicht einmal eine entsprechende Version von Dateien installiert ist. Daher sollten Sie einen Parameter angeben und Ziele verwenden, die auf Ihrem Computer vorhanden sind.

In einigen seltenen Fällen müssen Sie möglicherweise eine bestimmte Version des VS- und Web Deploy-Pakets installieren. In meinem Fall reichte die Version nur aus, um das Problem zu lösen.

0
Johnny_D

Sie können die VisualStudioVersion-Eigenschaft folgendermaßen hinzufügen:

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>
0
user3586919

Bei der Suche nach der Lösung dieses Problems empfahl fast jeder, entweder den fehlenden MSBUILD-Ordner zu kopieren oder ein SDK einer Version zu installieren.

Zum Glück habe ich diesen äußerst hilfreichen Beitrag von Donovan Brown gefunden: http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors!

Kurz gesagt, die Idee ist, die VisualStudio-Version zu konfigurieren, die Ihr Build in Ihrer Build-Definition verwenden soll:

Rechtsklick -> "Build-Definition bearbeiten ..."

Gehen Sie zu "Procss" -> "3. Advanced" 

und setzen Sie "MSBuild Arguments" mit 

/p:VisualStudioVersion=12.0
0
A. Yosupov