2013-10-10 22 views
10

Beim Versuch, meine Website mit Teamcity und Web Deploy ich diesen Fehler zu implementieren:Wo befindet sich MsDeployPublish?

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

Gibt es etwas, das ich auf einem Build-Server installieren? Es ist ein sauberer Windows Server 2012 mit Web Deploy 3.5 installiert.

Antwort

5

Ich weiß, diese Frage an dieser Stelle ist ziemlich alt, aber:

MsDeployPublish mit den Web Application Zielen als Teil von Visual Studio installiert. Wenn Sie nur Server + Web Deploy installiert haben, müssen Sie diese entweder von Ihrer Entwicklerinstallation kopieren oder Visual Studio installieren. Die Ziele können von %programfiles(x86)%\MSBuild\Microsoft\VisualStudio

kopiert werden. Als Neben gibt es einige Features, die nach der Veröffentlichung von Visual Studio 2012 hinzugefügt wurden, nämlich diejenigen, die Publishing-Profile betreffen (.pubxml). Diese können durch die Installation des Azure SDK zu VS2010 hinzugefügt werden und wird zu %programfiles(x86)%\MSBuild\Microsoft\VisualStudio\v10.5\Web

+0

Das löste mein Problem. Ich habe nur die Server-Version von WebDeploy auf meiner Workstation installiert. Ich musste die Vollversion von WebDeploy installieren, um richtig zu bauen. – dthrasher

16

installiert werden oder können Sie diese NuGet Paket mit portablen Version der Ziele verwenden: https://www.nuget.org/packages/MSBuild.Microsoft.VisualStudio.Web.targets und ändern Sie Ihre csproj Datei, um sie so umfassen:

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

Dies ist die beste Antwort für TeamCity auf einem Build-Server, wenn Sie Visual Studio nicht installieren möchten. Beachten Sie Folgendes: Stellen Sie sicher, dass die Pfadreferenz der Version von Web.targets entspricht, die Sie installieren, und stellen Sie sicher, dass die obige Importzeile andere Importverweise für Microsoft.WebApplication.targets ersetzt (sie können weiter unten im Web liegen). config-Datei), sonst erhalten Sie eine "Die Funktion 'exists' akzeptiert nur einen skalaren Wert" compile error. – Raelshark

+0

@Raelsharks Kommentar: Ich bin mir nicht sicher, ob ich nur Glück gehabt habe und alles hat gepasst, aber indem ich nur das nugget-Paket hinzugefügt habe, hat es für mich funktioniert. Das nugget enthielt 14.0.0.3, einige andere Schritte zuvor erstellten meinen Kopierordner 'C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14 \' auf dem Agentenserver. Dies wiederum entspricht der 'ToolsVersion' in der Build-Konfiguration. Teamcity und ihre Dokumentationen ... :( – CularBytes

4

Dies funktionierte für mich, ich musste die Zeile hinzufügen, um Microsoft.WebApplication.targets zu importieren Got, dass von einem guten VS2013-Projekt.

<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" />