91 votes

À l'aide de MSBuild.exe "Publier" un ASP.NET MVC 4 projet avec la ligne de cmd

J'ai besoin d'une aide rapide.

Je suis à la recherche d'une commande à exécuter à l'encontre de la MSBuild.exe ce qui ne prend MVC 4 projets et plublishes à un répertoire donné.

Par exemple,

MSBuild /.csproj -publier -sortie=c:/dossier

C'est évidemment une syntaxe incorrecte. J'essaie de simplifier ma question.

Comment Publier Web avec msbuild?

Cet article parle d'une génération xml, mais je ne suis pas essayer de faire quelque chose avec autant de détail.

J'essaye simplement de faire un déploiement.

Plus bas dans cet article, quelqu'un parle de "MSDeploy". Je regarde, mais est-ce la seule option? Je n'ai pas la possibilité d'installer une web déployer sur le serveur. Dans ce cas, tout ce que je vraiment besoin de faire est de "Publier" et envoyer le contenu de la publication d'un répertoire sur le serveur/système de fichiers.

Quelqu'un aurait-il une seule ligne que je peux utiliser?

Dois-je utiliser MSDeploy?

Ne MSDeploy nécessitent le déploiement web pour être installé sur le serveur?

N'a pas d'installation de web déployer sur le serveur d'exiger la mise en place de certains ports, les autorisations et l'installation de certaines IIS add-ons?

J'aimerais juste exécuter quelque chose de simple...

Toute aide/conseil serait grandement apprécié!

Erik

165voto

Sayed Ibrahim Hashimi Points 25707

Dans VS 2012 (ainsi que la publication des mises à jour disponibles dans l' Azure SDK pour VS 2010), nous avons simplifié de la ligne de commande de publication pour des projets web. Nous avons fait cela en utilisant des Profils de publication.

Dans VS pour un projet web, vous pouvez créer un profil de publication à l'aide de la boîte de dialogue de publication. Lorsque vous créez le profil, il est automatiquement enregistré dans votre projet en vertu de Propriétés\PublishProfiles. Vous pouvez utiliser le profil créé à publier à partir de la ligne de commande avec une ligne de commande suivantes.

msbuild mysln.sln /p:DeployOnBuild=true /p:PublishProfile=<profile-name>

Si vous souhaitez stocker le profil de publication (.pubxml fichier) dans un autre emplacement, vous pouvez passer dans le chemin d'accès à la PublishProfile.

Les profils de publication sont MSBuild fichiers. Si vous avez besoin de personnaliser le processus de publication, vous pouvez le faire directement à l'intérieur de l' .pubxml fichier.

Si votre objectif final est de passer dans les propriétés de la ligne de commande. Je recommanderais le suivant. Créer un exemple de profil de publication de VS. Vérifiez que le profil de publication afin de déterminer quelles propriétés MSBuild vous avez besoin pour passer sur la ligne de commande. FYI pas tous les publier méthode en ligne de commande de l'édition (c'est à dire FTP/FPSE).

Pour info si vous êtes à la construction de l' .csproj/.vbproj à la place de la .la sln et que vous utilisez VS 2012, vous devriez également passer en /p:VisualStudioVersion=11.0. Pour plus de détails à voir pourquoi http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx.

13voto

nils Points 241

Créer un build.xml fichier c'est ressembler à ci-dessous

Démarrer l'invite de commande Visual Studio

Exécutez msbuild build.xml

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build">

  <PropertyGroup>
    <Build>$(MSBuildProjectDirectory)\Build</Build>
    <ProjectFile>MyProject.csproj</ProjectFile> 
    <ProjectName>MyProjectNameInVisualStudio</ProjectName>
    <CopyTo>$(MSBuildProjectDirectory)\CopyTo</CopyTo>
  </PropertyGroup> 

  <Target Name="Build"> 
    <RemoveDir Directories="$(Build)"/>  
    <MSBuild Projects="$(ProjectFile)" Properties="Configuration=Release;OutputPath=$(Build);OutDir=$(Build)/"></MSBuild>  
    <Exec Command="robocopy.exe  $(Build)\_PublishedWebsites\$(ProjectName) $(CopyTo) /e /is
      if %errorlevel% leq 4 exit 0 else exit %errorlevel%"/>    
  </Target>

</Project>

2voto

Ivan Samygin Points 1579

Récemment, j'ai posté la réponse de sujet similaire: http://stackoverflow.com/a/15387814/2164198

Il travaille pour des projets MVC ainsi. Tous des trucs comme config transformations est là. Et vous n'avez pas besoin de créer des profils de publication.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X