2013-07-24 11 views
8

Ich habe eine VS 2012-Lösung, die zwei Projekte (WCF C# Service App und eine VB Web UI) enthält, die ich über TeamCity/MsBuild Befehlszeile bereitstellen möchte. Jedes Projekt enthält ein Veröffentlichungsprofil - nennen wir es "Testprofil" - das funktioniert gut, wenn es von der IDE ausgeführt wird.MsBuild nicht finden Veröffentlichungsprofil

Wenn jedoch als zwei aufeinanderfolgende Erstellungsschritte ausgeführt, setzt die C# -Projekt in Ordnung, aber das VB-Projekt schlägt mit dem folgenden Fehler:

[09:27:05][ValidatePublishProfileSettings] GetPublishingLocalizedString [09:27:05][GetPublishingLocalizedString] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4435, 5): The value for PublishProfile is set to 'Test Profile', expected to find the file at 'C:\BuildAgent\work\61493e349d61af8c\Yms.Web.Ui__profiles\Test Profile.pubxml' but it could not be found.

Jeder Build-Schritt-Setup ist MsBuild v4.0 zu verwenden, Run Plattform x64, ToolsVersion 4.0. Die Befehlszeilenparameter sind:

/P:Configuration="Test Profile"
/p:DeployOnBuild=true /p:PublishProfile="Test Profile"
/p:VisualStudioVersion=11.0 /p:Password=james2

Wenn sie als einzige Build-Schritt gegen die Lösung anstatt Projekte laufen, bekomme ich den gleichen Fehler, mit Ausnahme von „Ui_profiles“ in der Fehlermeldung mit „PublishProfiles“ ersetzt.

Jede Hilfe bei allen sehr geschätzt wird, das ist mir fahren bekloppt

+1

Sollte der Konfigurationsparameter nicht etwas wie Debug oder Release sein und nicht der Wert des PublishProfile-Parameters? – Nicodemeus

+0

Es ist der Name einer gültigen Build-Konfiguration –

+1

Wert, einen Profilnamen ohne Leerzeichen zu versuchen. Habe diese Art von Sache verursacht Probleme vorher. –

Antwort

20

Ich hatte genau das gleiche Problem, aber für einen VS2010 webanwendungsprojekt (mit dem Azure SDK 1.8 Update, um die Optionen für die Veröffentlichung zu aktualisieren). Es schien, als ob die von MS bereitgestellten Web Publishing Targets den Pfad für die Veröffentlichungsprofile nicht korrekt auswerten würden.

ich am Ende tun zwei wichtige Dinge:

  • das Azure SDK Installation (1.8) auf dem Build-Server (Andernfalls werden die Publizierungsprofile ignoriert wurden)
  • zwingt den "PublishProfileRootFolder" Parameter in der Teamcity Build-Konfiguration (Ansonsten nutzt dies den falschen Pfad durch die Ziele Web-Publishing-MS zur Verfügung gestellt)

Mein MSBuild comman d Parameter sahen wie folgt aus:

/P: DeployOnBuild = true
/P: PublishProfile = [Name des Profils (ohne Dateierweiterung)]
/P:PublishProfileRootFolder="%teamcity.build.checkoutDir% \ Source \ Web Application \ My Project \ PublishProfiles“(wo Ihre Publizierungsprofile gespeichert werden)
/P: AllowUntrustedCertificate = true
/P:Password=%env.DomainPassword%

hoffe, das hilft jemand in der gleichen Boot!

+3

Der/p: PublishProfileRootFolder hat es für mich repariert, aber ohne die Anführungszeichen um den Wert herum. – Tom

+3

YEEES !! OH LIEBE GOTT JA !! ... zwei Wochen ... "Installieren des Azure SDK (1.8) auf dem Build-Server (Andernfalls wurden die Veröffentlichungsprofile ignoriert)" Ich habe den Build-Server mit MSBuild 12 auf 2008 R2 aktualisiert und dies funktioniert nicht mehr. Jede andere Lösung bestand darin, "Veröffentlichprofile nicht mehr zu verwenden, Befehlszeileneigenschaften zu verwenden", aber das ist einfach schrecklich, ich wollte sie unter Quellcodeverwaltung. Gott sei Dank für + MattWoodward ... – RoboJ1M

+0

Konkret habe ich diesen Link verwendet: https://azure.microsoft.com/en-gb/downloads/archive-net-downloads/ Wir verwenden VS 2012 und/p:VisualStudioVersion=11.0 Also habe ich den VS 2012 Link heruntergeladen. Ich denke, es hat die v11-Ziele behoben? Bei diesen Links handelt es sich um WPI-Auto-Loader, die WPI 5 starten und festlegen, dass bestimmte Dateien installiert werden. Nett und automatisch. Um klarzustellen, war exakte Verbindung/Version VS 2012 unter der Überschrift "2.6", die letzte Version, die VS 2012 in seiner Liste enthielt. – RoboJ1M

0

Die Antwort geliefert von Matt Woodward brachte mich näher an die Lösung, aber ein kritischer Schritt fehlte mir. Insbesondere musste ich die publishProfileRootFolder Eigenschaft für die MSBuild-Aufgabe wie folgt anzugeben:

<Target Name="Publish"> 
    <MSBuild Targets="Build" Projects="$(SolutionDir)\$(ProjectFile)" 
    Properties="DeployOnBuild=true;publishProfile=UAT;publishProfileRootFolder=$(PublishProfileRootFolder);publishUrl=$(PublishUrl)" /> 
</Target> 

ich auch den Wert für $ (PublishProfileRootFolder) in der MSBuild-Projektdatei direkt im Gegensatz zu einbetten wählte es als zu vorbei Kommandozeilenparameter:

<PropertyGroup> 
    <PublishProfileRootFolder>$(MSBuildProjectDirectory)\MyProjectPath\Properties\PublishProfiles</PublishProfileRootFolder> 
</PropertyGroup> 
1

Lief in ein ähnliches Problem heute. In meinem Fall war es ein zu langer Weg. Wenn ich den Namen des Veröffentlichungsprofils gekürzt habe, wurde das Webbereitstellungspaket problemlos erstellt.

+0

Ähnlich, ich hatte eine. im Namen des Publish-Profils und das, was wenn fehlgeschlagen, bis ich die entfernt habe. – Terry

Verwandte Themen