Build Visual Studio project through the command line

user708774 picture user708774 · Apr 14, 2011 · Viewed 60.8k times · Source

I am running an ASP.NET website from a Windows Server 2008 installation, and I like to edit the pages through the command line since I ssh into the server.

I installed Vim on the server so that I can edit the files easily. If I edit HTML and CSS and .aspx pages, the updates are successful. But if I want to edit source code I would have to rebuild the project. Rebuilding the project recompiles everything nicely and updates the copy on the web. This is a development server so updates to everything is fine since no one sees this server.

How can I build the project through the command line to update the source code and build on the server?

The project is written in C# and the files are all in the wwwroot folder so no file moving needs to occur after a build.

Answer

granadaCoder picture granadaCoder · Apr 14, 2011

Create a .bat file called: Manual_MSBuild_ReleaseVersion.bat

Put this in the .bat file.

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=

You can build a .sln file or a .csproj file. MySolution.sln or MyProject.csproj

See How to: Use MSBuild to Create a Web Package for more information.

You can take it one step further:

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

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=

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

That way, you remove a directory (just to make sure you get a super clean build), create it, build the solution/project and then copy the results of the build to the fresh directory.

Super fresh, every time. And if the build blows up, the \BuildResults directory is empty.

And a subtle little indicator, the datetime of the \BuildResults directory is the last time you built (or tried to build) the solution/project. Subtle, but sometimes helpful.