19

Ich verwende Visual Studio 2012 und die Veröffentlichungsfunktion. Ich habe ein Publishing-Profil erstellt, das meine Anwendung auf einem Entwicklungsserver bereitstellt, und es funktioniert hervorragend, wenn es von vs2012 auf meinem Computer ausgeführt wird. Hier ist mein Problem; Auf dem Entwicklungsserver habe ich auch TeamCity installiert und möchte das Publishing nach einem Build auslösen. Also habe ich einen einfachen Build-Schritt, der wie folgt aussieht:Publishing vs2012 Lösung von TeamCity

Build file path: .\src\Solution.sln 
Targets: Rebuild 
Command line parameters: /p:DeployOnBuild=true;PublishProfile=Ci 

Wenn dieser Schritt ausgeführt wird ich die folgende Fehlermeldung erhalten:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377, 5): error ERROR_USER_NOT_ADMIN: Web deployment task failed. 
(Connected to 'dev.domain.com' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on 'dev.domain.com'. 

Das Ci Profil enthält einen Benutzernamen und ein Passwort ein, das funktioniert, wenn ich laufen die Veröffentlichung von Visual Studio auf meinem Computer. Ich habe auch versucht, Benutzernamen und Passwort als Parameter im Build-Schritt, aber ich bekomme das gleiche Ergebnis. Muss ich die TeamCity-Dienste unter Admin-Konten ausführen, damit dies funktioniert? Alle Vorschläge werden geschätzt.

Antwort

12

Ich habe gerade darüber bei http://sedodream.com/2013/01/06/CommandLineWebProjectPublishing.aspx gebloggt.

Sie sind ziemlich nah, hoffentlich kann ich die Lücke schließen.

Es stimmt, dass Benutzername und Passwort im VS Publish-Dialogfeld angegeben sind, aber wir speichern das Passwort nicht in der .pubxml-Datei. Es wird derzeit in der Datei .pubxml.user gespeichert und diese Datei wird überhaupt nicht für Befehlszeilenszenarien verwendet. Aus diesem Grund müssen Sie das Anwesen übergeben. Also in Ihrem Fall sollte es

msbuild .\src\solution.sln /p:DeployOnBuild=true /p:PublishProfile=ci /p:Password=<insert-password> 

sein, wenn Ihr Webserver nicht vertrauenswürdige Zertifikate haben Sie auch in /p:AllowUntrustedCertificate=true passieren müssen möglicherweise.

Eine kleine Ergänzung, die möglicherweise nicht direkt mit Ihrem Problem zusammenhängt, aber für andere hilfreich sein kann, die dies später sehen können. Wenn Sie die .csproj/.vbproj-Datei (und möglicherweise in einigen Szenarien, in denen die .SLN-Datei verwendet wird) erstellen, sollten Sie die Eigenschaft /p:VisualStudioVersion=11.0 übergeben. Weitere Informationen hierzu finden Sie in meinem Blog http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx