19

Używam Visual Studio 2012 i funkcji publikowania. Stworzyłem profil publikowania, który wdraża moją aplikację na serwerze programistycznym i działa świetnie po uruchomieniu z vs2012 na moim komputerze. Oto mój problem; na serwerze programistycznym mam również zainstalowany TeamCity i chciałbym wywołać publikację po zakończeniu kompilacji. Stworzyłem więc prostą etapu budowy, który wygląda tak:Publikowanie rozwiązania vs2012 z TeamCity

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

Kiedy ten krok jest wykonywany pojawia się następujący błąd:

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'. 

Profil Ci zawierający nazwę użytkownika i hasło, które działa po uruchomieniu publikowanie z Visual Studio na moim komputerze. Próbowałem również przekazać nazwę użytkownika i hasło jako parametry w kroku kompilacji, ale otrzymuję ten sam wynik. Czy muszę uruchomić usługi TeamCity na kontach administracyjnych, aby to działało? Wszystkie sugestie są doceniane.

Odpowiedz

12

Właśnie napisałem o tym na blogu pod numerem http://sedodream.com/2013/01/06/CommandLineWebProjectPublishing.aspx.

Jesteś całkiem blisko, mam nadzieję, że uda mi się zamknąć lukę.

Masz rację, że nazwa użytkownika i hasło są określone w oknie dialogowym publikowania VS, ale nie zapisujemy hasła w pliku .pubxml. Jest on obecnie zapisywany w pliku .pubxml.user, a ten plik nie jest w ogóle używany w scenariuszach wiersza poleceń. Z tego powodu będziesz musiał przejść do nieruchomości. Tak więc w Twoim przypadku powinno być

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

Jeśli serwer WWW nie ma zaufanych certyfikatów może musisz także przekazać w /p:AllowUntrustedCertificate=true.

Jeden mały dodatek, który może nie być bezpośrednio związany z twoim problemem, ale może być pomocny dla innych, którzy mogą zobaczyć to później. Jeśli tworzysz plik .csproj/.vbproj (i potencjalnie w niektórych sytuacjach, w których plik .sln jest używany), powinieneś przekazać właściwość /p:VisualStudioVersion=11.0. Więcej informacji na ten temat można znaleźć na moim blogu: http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx