2013-10-10 33 views
10

Quando si cerca di distribuire il mio sito utilizzando TeamCity e Web Deploy ottengo questo errore:Dove si trova MsDeployPublish?

error MSB4057: The target "MsDeployPublish" does not exist in the project. 

C'è qualcosa che devo installare su un server di build? È un Windows Server 2012 pulito con Web Deploy 3.5 installato.

risposta

5

mi rendo conto questa domanda è abbastanza vecchio, a questo punto, ma:

MsDeployPublish viene installato con gli obiettivi di Web Application come parte di Visual Studio. Se hai installato solo Server + Web Deploy, dovrai copiarli dall'installazione del tuo sviluppatore o installare Visual Studio. Gli obiettivi possono essere copiati da %programfiles(x86)%\MSBuild\Microsoft\VisualStudio

Come parte, ci sono alcune funzionalità che sono state aggiunte dopo il rilascio di Visual Studio 2012, vale a dire quelle relative a Profili di pubblicazione (.pubxml). Coloro che possono essere aggiunti a VS2010 installando l'Azure SDK e saranno installati a %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.5\Web

+0

Questo ha risolto il mio problema. Avevo solo installato la versione server di WebDeploy sulla mia workstation. Avevo bisogno di installare la versione completa di WebDeploy per creare correttamente. – dthrasher

16

oppure è possibile utilizzare questo pacchetto NuGet con la versione portatile degli obiettivi: https://www.nuget.org/packages/MSBuild.Microsoft.VisualStudio.Web.targets e modificare il file csproj per includere in questo modo:

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" /> 
+1

Questa è la migliore risposta per TeamCity su un server di generazione, se non si desidera installare Visual Studio. Un paio di cose da notare: assicurati che il riferimento al percorso corrisponda alla versione di Web.targets che installi e assicurati che la riga Importa in alto sostituisca qualsiasi altra Importa riferimenti per Microsoft.WebApplication.targets (potrebbero trovarsi più avanti nel web. file di configurazione), altrimenti si otterrà un errore di compilazione "La funzione 'esiste' accetta solo un valore scalare". – Raelshark

+0

@ Il commento di Raelshark: Non sono sicuro se sono stato fortunato e tutto è stato abbinato, ma aggiungendo il pacchetto nuget ha funzionato per me. Il nuget includeva 14.0.0.3, alcuni altri passaggi prima di creare la mia cartella di copia 'C: \ Programmi (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14 \' sul server dell'agente. A sua volta, corrisponde a 'ToolsVersion' nella configurazione di build. Teamcity e le loro documentazioni ... :( – CularBytes

4

Questo ha funzionato per me, ho dovuto aggiungere la linea per importare Microsoft.WebApplication.targets Ottenuto da un buon progetto VS2013.

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 
    <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />