Ich versuche, unseren Buildserver (Jenkins) von Visual Studio 2015 auf 2017 zu aktualisieren. Wir erstellen über MS-Build. Ich habe MS-Buld-Tools wie in dieser Antwort beschrieben heruntergeladen und installiert . Wenn ich meine Projekte kompiliere, wird ein Fehler angezeigt, Microsoft.WebApplication.targets
der nicht gefunden wurde.
Detaillierter Fehler:
error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"
Ich habe eine Suche im MS-Build-Verzeichnis durchgeführt:
PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 11.01.2012 00:23 19654 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 22.07.2013 01:25 19995 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 06.07.2015 21:55 20118 Microsoft.WebApplication.targets
Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 22.07.2013 01:25 19995 Microsoft.WebApplication.targets
Wie zu sehen ist, existiert die Datei für alte Compilerversionen, aber für v15.0 fehlt sie.
Ich habe auch Visual Studio 2017 auf dem Build-Server installiert. Das Projekt kann erfolgreich erstellt werden, wenn ich mit Visual Studio 2017 kompiliere.
Irgendwelche Hinweise, wie man dieses Problem löst? Eine mögliche Lösung besteht darin, eine symbolische Verknüpfung vom C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
Punkt zu den alten v14.0-Dateien (unter C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
) zu generieren .
Danke
quelle
Antworten:
Anscheinend fehlt Ihnen die Arbeitslast für "Web Development Build Tools" :
Microsoft.VisualStudio.Workload.WebBuildTools
.Sie können es installieren, indem Sie das Installationsprogramm für Build-Tools von hier (VS2017) oder hier (VS2019) herunterladen und dann ausführen
oder Öffnen
vs_buildtools.exe
und Auswählen der Komponente "Web Development Build Tools" in der GUI:quelle
Build Tools for Visual Studio 2017
mitWeb development build tasks
über den angegebenen Link installiert, aber es wird immer noch keinC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
Ordner erstellt. Ich sehe auch nicht.vs_buildtools.exe
Ich habe das ganze `c:`$(MSBuildExtensionsPath)
inC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild
stackoverflow.com/questions/47077150/… geändert wurdeDie oben akzeptierte Antwort ist technisch korrekt, nur unvollständig, zumindest für mich etwas verwirrend und benötigt einen zusätzlichen Schritt, damit Visual Build Professional funktioniert.
vs_buildtools.exe existiert technisch nicht. Ich musste eine Frage erstellen , in der gefragt wurde, wo sich diese Datei befindet. Es war nicht offensichtlich, dass vs_buildtools.exe vs_buildtools _ *******. Exe ist und das eigentliche Installationsprogramm ist. Zusätzlich ist das oben erwähnte "-add ***" nur eine Abkürzung. Man kann zur GUI gehen und beide Workflow-Aufgaben überprüfen. Das macht das Gleiche. Ich hatte die vs_buildtools-Datei, brauchte sie aber nicht.
VSB Pro hat mein Projekt immer noch nicht erstellt. Ich habe den gleichen Fehler wie oben geworfen. Das Geheimnis Sauce war einfach das kopieren
WebApplications
Ordner inC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0
zuC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0
. Ich habe dann das Projekt wieder aufgebaut und alles war in Ordnung. Ich habe die Datei WebApplication.targets am erwarteten Speicherort abgelegt.Warum Microsoft das nicht hätte tun können, ist mir ein Rätsel. Auch warum die separate Installation. VS17 installiert eine enorme Menge an Sachen. Build Tools ist wie immer impliziert. Was auch immer.
Ich poste diese Antwort, da sie hoffentlich anderen helfen wird. Ich bin in die Falle gegangen und habe viel Zeit verloren, weil mein Projekt nicht gebaut wurde. Ich hoffe, dass diese Antwort die Dinge ein wenig klarer macht.
quelle
Nach dem Upgrade von Visual Studio 2015 auf 2017 trat ein ähnliches Problem auf. Beim Versuch, das Webanwendungsprojekt zu laden, wurde die folgende Fehlermeldung angezeigt:
Die Lösung für diesen Fehler habe ich hier gefunden .
In meinem Fall enthielt die .csproj-Datei die folgenden Zeilen:
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath> </PropertyGroup>
Nach dem Ersetzen des
v14.0
byv$(VisualStudioVersion)
imVSToolPath
Tag konnte das Projekt geladen werden.Ich habe auch das
v14.0
byv10.0
imVisualStudioVersion
Tag ersetzt, wie die Lösung im obigen Link zeigt. Aber für mich hat es auch funktioniert, indem ich es bei 14.0 belassen habe.So sollten diese Zeilen am Ende aussehen:
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup>
Wenn Sie diese Zeilen überhaupt nicht in Ihrer .csproj haben, müssen Sie sie direkt vor dieser Zeile manuell hinzufügen:
<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />
In meinem Fall (etwas andere Fehlermeldung, aber gleiches Problem) war es diese Zeile:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Es scheint, dass Projekte, die seit 2011 mit Visual Studio-Versionen erstellt wurden, die Zeilen mit der
VSToolsPath
Neudefinition enthalten, ältere Dateien jedoch nicht. Visual Studio hat sie beim Upgrade auf eine neuere VS-Version nie automatisch hinzugefügt. Deshalb sollten Sie sie hinzufügen, wenn sie nicht vorhanden sind.Quelle dieser Informationen: https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (klicken Sie auf Show Weitere Kommentare , um den vollständigen Diskussionsthread zu sehen - leider kann ich nicht direkt auf Kommentare in diesem Abschnitt "Mehr" verweisen.)
quelle
Es ist einfach, die Build-Tools 2017 mit der
WebBuildTools
bereits enthaltenen Option unter Verwendung von Schokolade zu installieren . Geben Sie nach der Installation Folgendes in eine Admin-Eingabeaufforderung ein:Für VS 2019 ist es ähnlich:
quelle
cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
WebApplications
Ordner kopieren vonC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0
zu
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0
Oder fügen Sie in Ihrem Build-Skript vor dem Kompilieren die folgende Zeile hinzu
Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force
Stellen Sie sicher, dass Sie es mit erhöhten Berechtigungen ausführen
quelle
Wie erstelle ich eine VS 2017 Pro, asp.net MVC-Anwendung und erstelle sie mit Jenkins?
Verwenden Sie vs 2017 Pro sowohl in der Dev-Maschine als auch im Build-Server
Stellen Sie sicher, dass VisualStudio auf 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets" Condition = "false" eingestellt ist.
Setzen Sie das msbuild-Tool
im globalen Konfigurationsmanager von Jenkins auf C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe
Führen Sie mit Jenkins den Windows-Befehl batch: retore nugets aus: "C: \ Programme (x86) \ Jenkins \ tools \ nuget \ NuGet.exe" wiederherstellen "C: \ Programme (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "
Führen Sie mit Jenkins den Windows-Befehlsstapel aus: MSBuild Build-Datei: theapp.sln
Befehlszeilenargumente: / nologo / t: restore / t: restore / p: Configuration = "Debug" /p:VisualStudioVersion=15.0
quelle
Für VS 2019 habe ich dies durch Kopieren behoben:
zu
quelle
Ich verwende nur Visual Studio Installer , um Visual Studio Community 2017 zu aktualisieren , dann ist das Problem behoben.
quelle