web-dev-qa-db-fra.com

Générer un projet Visual Studio via la ligne de commande

J'exécute un site Web ASP.NET à partir d'une installation de Windows Server 2008 et j'aime modifier les pages via la ligne de commande depuis que je ssh dans le serveur.

J'ai installé Vim sur le serveur pour pouvoir éditer facilement les fichiers. Si je modifie des pages HTML et CSS et .aspx, les mises à jour réussissent. Mais si je veux éditer le code source, je devrai reconstruire le projet. La reconstruction du projet recompile tout bien et met à jour la copie sur le Web. Il s'agit d'un serveur de développement, donc les mises à jour de tout vont bien puisque personne ne voit ce serveur.

Comment puis-je générer le projet via la ligne de commande pour mettre à jour le code source et créer sur le serveur?

Le projet est écrit en C # et les fichiers sont tous dans le dossier wwwroot donc aucun déplacement de fichier ne doit se produire après une construction.

29
user708774

Créez un fichier .bat appelé: Manual_MSBuild_ReleaseVersion.bat

Mettez-le dans le fichier .bat.

REM you'll have to find the "latest" version of where msbuild.exe resides on your machine.. here are some popular versions/locations
REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v2.0.50727
REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v3.5
REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
REM set msBuildDir=C:\Program Files (x86)\MSBuild\12.0\Bin
set msBuildDir=C:\Program Files (x86)\MSBuild\14.0\Bin

call "%msBuildDir%\msbuild.exe"  MySolution.sln /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_ReleaseVersion_LOG.log
set msBuildDir=

Vous pouvez créer un fichier .sln ou un fichier .csproj. MySolution.sln ou MyProject.csproj

Voir Comment: utiliser MSBuild pour créer un package Web pour plus d'informations.

Vous pouvez aller plus loin:

rd .\BuildResults /S /Q
md .\BuildResults
rd .\MyProject\Bin\Release  /S /Q

REM set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v3.5
set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
call "%msBuildDir%\msbuild.exe"  MySolution.sln /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_ReleaseVersion_LOG.log
set msBuildDir=

XCOPY .\MyProject\Bin\Release\*.* .\BuildResults\

De cette façon, vous supprimez un répertoire (juste pour vous assurer d'obtenir une version super propre), le créez, créez la solution/projet, puis copiez les résultats de la génération dans le nouveau répertoire.

Super frais, à chaque fois. Et si la build explose, le répertoire\BuildResults est vide.

Et un petit indicateur subtil, la date/heure du répertoire\BuildResults est la dernière fois que vous avez construit (ou essayé de construire) la solution/projet. Subtil, mais parfois utile.

40
granadaCoder

Peut-être avec cette commande:

  >> devenv myproject.sln /Build "Release|x86"

Vous pouvez trouver devenv dans le chemin d'accès "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe".

10

J'ai utilisé une modification de la réponse de @granadaCoder ci-dessus.

Pour .NET version 4.5 et ultérieures, il n'y a pas de répertoire de build correspondant dans

% WINDIR%\Microsoft.NET\Framework \

et l'utilisation de MSBuild pour un cadre plus ancien ne vous permettra pas de compiler de nouvelles constructions comme des chaînes interpolées.

Pour contourner ce problème, vous devez installer la dernière MS Build Tools (2015 actuellement) et utilisez MSBuild.exe dans

% programfiles (x86)%\MSBuild\14.0\Bin

8
Ash

Installez le SDK .NET et utilisez l'outil de ligne de commande MsBuild.exe. C'est ce que Visual Studio utilise lorsque vous créez un projet ou une solution.

2
David M