18 Stimmen

MSBuild 2010 - wie veröffentlicht man eine Webanwendung an einem bestimmten Speicherort (nant)?

Ich versuche, MSBuild 2010 dazu zu bringen, eine Web-App an einen bestimmten Ort zu veröffentlichen. Ich kann es dazu bringen, das Bereitstellungspaket in einen bestimmten Pfad zu veröffentlichen, aber das Bereitstellungspaket fügt dann seinen eigenen Pfad hinzu, der sich ändert.

Zum Beispiel: Wenn ich ihm sage, dass es nach C:\dev\build\Output\Debug veröffentlichen soll, landen die tatsächlichen Webdateien unter C:\dev\build\Output\Debug\Archive\Content\C_C\code\app\Source\ControllersViews\obj\Debug\Package\PackageTmp Und der Teil des Pfades C_C ändert sich (ich bin mir nicht sicher, wie es diesen Teil des Pfades auswählt).

Das bedeutet, dass ich nicht einfach ein Skript für einen Kopiervorgang von der Veröffentlichungsposition erstellen kann.

Ich verwende momentan diesen nant/msbuild Befehl:

Ideen, wie man es dazu bringen kann, die Webdateien direkt an einen bestimmten Ort zu senden?

36voto

Pavel Chuchuva Punkte 21957
msbuild /t:Build;PipelinePreDeployCopyAllFilesToOneFolder /p:Configuration=Release;_PackageTempDir=C:\temp\somelocation;AutoParameterizationWebConfigConnectionStrings=false MyProject.csproj

Zugehöriges NAnt Skript:

Referenzen

Siehe auch Team Build: Lokales Veröffentlichen mit MSDeploy

2voto

randomfactor Punkte 477

Wenn Sie eine VS2010-Webanwendung verwenden (im Gegensatz zu einem Web Site-Projekt), sollten Sie die Package/Publish Web-Einstellungen in Ihrem Projekt einrichten und das 'Project' target in Ihrem Nant-Skript erstellen.

Viel saftiges msdeploy-Goodness und Hintergrund hier: http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspx

In meinen Nant-Skripts führe ich die folgenden msbuild-Befehle aus:

...

Meine basename Nant-Variable gibt den Namen der VS-Lösungsdatei (.sln) und der Projektdatei (.csproj) für die Webanwendung an. Ich bevorzuge zufällig die Zip-Datei-Bereitstellung, wie in meinen Projekteinstellungen gezeigt:

Beispielhafte Paketeinstellungen für die Bereitstellung von Webanwendungen

Es gibt eine zusätzliche Eigenart. Wenn Sie MSDeploy Version 2.0 auf dem Zielcomputer installieren, muss die Datei .deploy.cmd bearbeitet werden, um die MSDeploy-Version wie folgt zu ändern:

Ändern

  for /F "usebackq tokens=2*" %%i  in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1" /v InstallPath`) do (

Zu

  for /F "usebackq tokens=2*" %%i  in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2" /v InstallPath`) do (

1voto

Babak Naffas Punkte 11938

Ich denke, du verwendest die falsche Eigenschaft. Versuche stattdessen die OutDir-Eigenschaft.

Persönlich rufe ich MsBuild.exe direkt auf, anstatt das msbuild-Tag zu verwenden:

MSBuildPath - Der Pfad zu MsBuild.exe (ermöglicht es, eine beliebige Framework-Version anzusprechen)

ProjectFile - Der relative Pfad zu deiner Projektdatei

LocalDeployPath - Der lokale Ordner, in dem alles ausgegeben wird. Dein Kopierskript wird diesen Ordner auch als Quellverzeichnis verwenden.

SolutionConfiguration - Release, Debug

0 Stimmen

_CopyWebApplication wird nicht funktionieren, wenn Sie Nuget zur Referenzbibliothek bringen.

0 Stimmen

Ja, die OutDir-Eigenschaft steuert dies genau, abgesehen von einem "_PublishedWebsites\$(ProjectName)\"-Unterverzeichnis.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X