Ich habe eine Lösung mit einer Reihe von Webprojekten und möchte, dass mein Buildserver automatisch Pakete für jedes Projekt erstellt.
Ich kann (fast) alles arbeiten.
Die Builds sind in Ordnung und die Pakete werden bei jedem Build erstellt.
Aber nur, wenn ich in den MSBuild-Argumenten kein PublishProfile angegeben habe.
Daher werden nur Standardwerte eingefügt und meine Websites und so nicht vorkompiliert.
(Argumente sind /p:DeployOnBuild=True /p:IsAutoBuild=True /p:VisualStudioVersion=12.0
)
Ich möchte jedoch die Veröffentlichungsprofile (.pubxml) verwenden, die ich in Visual Studio erstellt habe.
Jedes Projekt hat eine "Test.pubxml".
Aber wenn ich den Parameter PublishProfile angabe, wird der Build mit der folgenden Fehlermeldung fehlschlagen (Argumente sind /p:DeployOnBuild=True;PublishProfile=Test /p:IsAutoBuild=True /p:VisualStudioVersion=12.0
):
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets (411): Can't find the valid AspnetCompilerPath
Ja, die Datei Microsoft.Web.Publishing.AspNetCompileMerge.targets
existiert in diesem Ordner.
Ich kann die Projekte von Visual Studio auf meinem Entwicklungscomputer problemlos bereitstellen.
Ich verwende Folgendes: Windows Server 2012 R2 Visual Studio Ultimate 2013 Update 1 (Installiert auf Build Server) Projekte sind für .Net 4.5.1
Ich hatte das gleiche Problem, habe diese Frage gefunden und eine etwas weniger hacky Lösung gefunden:
Fügen Sie einfach /P:Framework40Dir=c:\windows\microsoft.net\framework\v4.0.30319
als zusätzlichen MSBuild-Parameter hinzu.
Sie müssen keine .targets-Dateien bearbeiten oder irgendetwas anderes einstellen. Arbeitete für mich, also mache ich einfach:
%Vor% Ich verwende es, um ein Web-Deploy-Paket in einem Unterordner meiner Wahl zu erstellen - ohne das Profil geht es zu obj/debug/package
. Wer benutzt obj
? Blergh:)
Ich habe den gleichen Fehler bekommen und bin mit einem kleinen Hack herumgekommen.
Ich habe die Datei Microsoft.Web.Publishing.AspNetCompileMerge.targets bearbeitet.
Suchen Sie den Knoten AspnetCompilerPath , und ersetzen Sie $ (Framework40Dir) durch C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 .
Ich nehme an, Sie könnten den Wert von $ (Framework40Dir) früher in der Datei festlegen.
Ich empfehle, eine Sicherungskopie der Datei zu erstellen, bevor Sie sie ändern (die Datei hat oben auch einen Kommentar, der dies suggeriert).
Ich nehme an, dass die richtige Lösung wäre, eine Umgebungsvariable oder einen Registrierungswert festzulegen.
Tags und Links tfs asp.net visual-studio msbuild