2013-08-09 4 views
9

Durante l'impostazione di un processo di distribuzione Jenkins, ho continuato a eseguire questo errore durante il tentativo di distribuire un progetto Web di Visual Studio 2012 tramite la riga di comando.IIS WebDeploy utilizzando MS Build Fails con errore Attività MSB4044 -ConcatFullServiceUrlWithSiteName

errore MSB4044: Il compito "ConcatFullServiceUrlWithSiteName" non è stato dato un valore per il parametro richiesto "SiteAppName"

Per riferimento, qui ci sono i parametri che ho usato:

/p:Configuration=Release /t:Rebuild /p:VisualStudioVersion=11.0 /p:PublishProfile="DeployToDevServer" 
/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish 
/P:AllowUntrustedCertificate=True /p:MSDeployPublishMethod=WMSvc 
/p:MsDeployServiceUrl=https://devmachine.server.com:8172/MsDeploy.axd 
/p:username=domainhere\adminuserhere /p:password=adminpasshere 

Nota: Si distribuirebbe bene se avessi scelto Pubblica ... dall'interno del progetto.

risposta

5

Dopo molto google, e infine confrontando un progetto che si distribuirebbe con quello che non sarebbe, ho finalmente capito dopo aver aperto i file .csproj con un editor di testo e li ho confrontati. Nel progetto che ha funzionato, ho trovato questa sezione:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

E aveva questa linea:

<DeployIisAppPath>Default Web Site/sitenamehere</DeployIisAppPath> 

Ho aggiunto questa stessa linea per il progetto non-lavoro, ha cambiato il nome del sito, ed è lavorato. Spero che questo aiuti qualcun altro.

+0

Ho aggiunto solo il sitename come era configurato in IIS e questo ha funzionato per me (senza 'Sito Web predefinito') – malckier

+0

Dovresti solo fare "Default Web Site/sitenamehere" se "sitenamehere" è un'applicazione in "Default Web Site". Se si aggiunge un nuovo sito Web che è un fratello di "Sito Web predefinito", sarebbe semplicemente "sitenamehere". –

4

si poteva passare questo DeployIisAppPath come parametro per Jenkins, in questo modo: p: DeployIisAppPath = Sito Web predefinito/sitenamehere Ciò permetterebbe di avere diversi nomi sito su macchine diverse. Mentre nel tuo esempio (con csporj nodification) saresti obbligato ad avere un nome di sito IIS su tutte le macchine di destinazione

+0

Questo è il modo corretto di farlo se si desidera eseguire la distribuzione tramite la riga di comando o il server TeamCity./p: DeployIISAppPath ha funzionato per me. GRAZIE! – Roboblob

+0

Questo è un po 'poco chiaro. Questo è un parametro MSBuild, non un'impostazione specifica di Jenkins o TeamCity. Grazie! –