MSBuild 2015 zu veröffentlichen: Kann nicht finden die gültigen AspnetMergePath
Habe ich einen build auf TeamCity, dass Pakete ein web-Projekt bereit für die spätere Implementierung, derzeit mit MSBuild 2013. Wenn ich schob Sie einige code, vor kurzem bekam ich ein build-Fehler (aufgrund der Tatsache, dass ich mit C# 6 Funktionen), so ging ich zu ändern die build-Konfiguration zu verwenden von MSBuild 2015 statt und bekam diese Fehlermeldung:
[Error] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132, 5): Can't find the valid AspnetMergePath
Dieser Fehler wurde bereits in anderen Fragen vor (wie hier: VS 2012 Veröffentlichen: finden Sie nicht das gültige AspnetMergePath), aber leider keiner der fixes erwähnt in diesen Fragen haben für mich gearbeitet.
Dinge habe ich bereits versucht oder wurden bereits der Fall:
- Web-und WebApplication-Verzeichnisse vom lokalen Computer (at C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0) kopiert worden sind, bis zu build-server (Sie war schon immer dort)
- Hinzugefügt
<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\</TargetFrameworkSDKToolsDirectory>
zu
Microsoft.Web.Publishing.AspNetCompileMerge.targets
Datei - Hinzugefügt
/p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"
zu MSBuild-Befehl
Ich bin ein bisschen ein Verlust dieses: so ziemlich das einzige, was ich noch nicht ausprobiert habe ist die Installation von Visual Studio auf dem build-server, aber ich möchte wirklich vermeiden, wenn ich kann (weil ich denke, es ist lächerlich, dass, sollten Sie zu installieren, vollständige IDE auf einem CI-server!).
Einige weitere info:
- alles weiterhin gut funktionieren, wenn Sie schalten Sie das bauen wieder zu MSBuild 2013 (obwohl, natürlich, wir wollen nicht stecken bleiben in der Vergangenheit)
- wir haben eine Reihe von anderen Reine Kompilation baut, auf denen gegen MSBuild 2015 mit keine Fehler
- haben Sie das gelöst?
- Ich fürchte nicht, nach etwa zwei Tagen habe ich einfach warf meine Hände in die Luft und nur Visual Studio installiert 🙁
- warum haben Sie VS2015 🙂 die Lösung ist "einfach", wie in dieser Antwort stackoverflow.com/a/16694597/441301: Kopieren Sie die
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14
Ordner von einem Dev-Maschine auf dem server erstellen, dann BearbeitenMicrosoft.Web.Publishing.AspNetConfigurationMerge.targets
und fügen Sie<TargetFrameworkSDKToolsDirectory>
wie in dem link. In meinem Fall habe ich [...]v8.1A\bin\NETFX 4.5.1-Tools, aber es funktioniert auch, wenn Sie die Windows-10-SDK... zu spät für dich, aber vielleicht hilft es jemand anderes. Keine Notwendigkeit, geben Sie/p:AspnetMergePath
mehr 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowohl die zweite und die Dritte Lösung hatte ursprünglich vorgeschlagen, auf VS 2012 Veröffentlichen: finden Sie nicht das gültige AspnetMergePath eigentlich funktionieren, aber die richtige version der SDK-tools zur Verfügung gestellt werden.
Den original-Artikel (VS 2012 Veröffentlichen: finden Sie nicht das gültige AspnetMergePath) wurde geschrieben, 2013 und umfasst die Visual Studio 2012. Die aspnet_merge.exe unterstützt C# 6.0 und .NET 4.6 ist nicht die, die sich gefunden unter dem Pfad
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"
.Um die Dritte Lösung arbeiten, verwenden Sie den folgenden Pfad statt
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\"
.In oder Worten, hinzufügen
/p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\"
zu MSBuild-Befehl löst das problem.Mein team hatte genau das gleiche Problem wie die, die Sie beschreiben, und fügen Sie diese parameter, um die MSBuild Schritt sofort behoben. (Ich unterstelle natürlich, dass Sie das NETFX 4.6-version des tools auf Ihrem build-Maschine.)
Als eine Randnotiz, da Sie sagte, dass Sie verwenden, Team City - anstelle der Zugabe der oben genannten parameter direkt als Kommandozeilen-parameter verwenden, können Sie das Team der Stadt empfohlen und konfigurieren Sie die entsprechenden build-parameter.
/p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\aspnet_merge.exe"
Angabe des tatsächlichen zu, nicht nur den Pfad.Die akzeptierte Antwort ist nur symptom-Behandlung und nicht die zugrunde liegende Problem. Bitte führen Sie MSBuild mit Diagnose-Protokollierung. Wenn man sich die
Microsoft.Web.Publishing.AspNetCompileMerge.targets
Sie werden sehen, dass es versucht zu verkettenTargetFrameworkSDKToolsDirectory
mitAspnetMergeName
. Wenn Sie suchen, in Ihrem MSBuild melden, Sie werden feststellen, dassTargetFrameworkSDKToolsDirectory
leer ist.TargetFrameworkSDKToolsDirectory
ist der Bau vonTargetFrameworkSDKDirectory
die ist auch leer.Das ist, was Sie brauchen, um zu beheben. In meinem Fall:
/configuration/msbuildToolsets/toolset/property[@name="FrameworkSDKRoot]
was ist in meinem FallRegistry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.6.1@InstallationFolder
. In meinem Fall wird dieser Knoten war nur in derWOW6432Node
, muss es in der 64-bit-Registrierung zu. Sie müssen kopieren Sie den Knoten an die äquivalente Position in der 64-bit-Registrierung.