SIGN UP MEMBER LOGIN:    
ARTICLE

Build a .NET Solution or Project from the Command Line

Posted by tharakram Articles | C# Language September 27, 2004
Devenv allows you to set various options for the integrated development environment (IDE) as well as compile, build, and debug projects from the command line.
Reader Level:
Download Files:
 

Introduction

I take this opportunity to write about the Command line switches for making our .NET Project Release Builds with out much fuss. The Reason am writing this is that this topic mentioned above is much ignored topic across .NET developers circles. ...

Devenv Command Line Switches

Devenv allows you to set various options for the integrated development environment (IDE) as well as compile, build, and debug projects from the command line. Use these switches to run the IDE from a script or .bat file, such as a nightly build script, or to launch the IDE in a particular configuration.

Tip To have Visual Studio launch and open a single file automatically in an editor, enter the full path and file name after typing Devenv with no additional switches or arguments. For example, devenv "D:\TestWinApp\testWinApp\testWinApp\ testWinApp.csproj".

Suppose if you give a wrong path of a solution file then the following Error Message will be thrown.

Devenv Switch Syntax

Switches for Devenv follow syntax rules that are very similar to other DOS command line utilities. Devenv command line switches work for devenv.com and devenv.exe. By default, entering devenv without a file extension passes switches to devenv.com. Using devenv.com provides the correct delivery of output using standard system streams, such as stdout and stderr, and correct I/O redirection for capturing output, such as in a .txt file. To pass switches to devenv.exe, you must specify devenv.exe. All of the syntax rules listed below apply to devenv.com

Tip The switch /? Displays a list of the available switches in the Command Prompt window for Devenv along with descriptions of their uses.

The following syntax rules apply to all switches and arguments:

  • The command line syntax must start with devenv. For example, to use the /fn switch you would type the following: 
    devenv /fn arial
  • Switches are not case sensitive.
  • The first argument is typically a solution file name.
  • When you supply a project file name instead of a solution file name, Devenv does the following:
    • Searches the parent directory of the project file for a solution file of the same name. For example, if you specify myproject1.vbproj, Devenv looks for myproject1.sln.
    • Searches for a single solution file with a reference to the project file in the parent directory of the project file. If more than one solution references the project file or no solutions reference the project file, a temporary solution with the same name as the project file is created.
  • File paths and file names that include spaces must be enclosed in double quotation mark ("").
  • Include the drive letter when specifying file paths.
  • Separate multiple switches and arguments with one white space character.
  • Devenv does not accept wildcards or other pattern matching syntax.

Devenv Switches

Use the following command line switches to display the integrated development environment and perform the described task.

Command line switch Description
/lcid or /l Sets the default language for the IDE.
/fn Changes the system font for the IDE.
/fs Changes the system font size for the IDE.
/run or /r Compiles and runs the specified solution.
/runexit Compiles and runs the specified solution, minimizing the IDE when the solution is run, and closing the IDE after the solution has completed running.
/mdi Opens the IDE in multiple-document interface (MDI) mode. In addition, the MDI environment option in the Options dialog box is selected. For more information, see General, Environment, Options Dialog Box.
/mditabs Opens the IDE in MDI mode with the tabs on documents enabled.
/command Starts the IDE and executes the specified command.
/migratesettings Opens the IDE and copies certain Options dialog box settings from a pervious version to the more recent version.
/debugexe Loads a Visual C++ executable under the control of the debugger. This switch is not available for Visual Basic or Visual C# executables. For more information, see Launching the Debugger Automatically.
/useenv Causes the integrated development environment (IDE) to use PATH, INCLUDE, and LIB environment variables for Visual C++ compilation rather than the settings specified in the VC++ Directories section of Projects options in the Options dialog box. For more information, see Setting the Path and Environment Variables for Command-Line Builds

Use the following command line switches to perform the described task. These command line switches do not display the integrated development environment.

Command line switch  Description
/build Builds the specified solution or project according to the specified solution configuration.
/rebuild Cleans and then builds the specified solution or project according to the specified solution configuration.
/project The project to build, clean, or deploy. You can use this switch only if you have supplied the /build, /rebuild, /clean, or /deploy switch.
/projectconfig Specifies the project configuration to build or deploy. You can use this switch only if you have supplied the /project switch.
/clean Cleans the specified solution or project according to the specified solution configuration.
/deploy Causes deployment after a build (or a rebuild) according to the specified solution configuration.
/out Allows you to specify a file to receive errors when you build.
/nologo Prevents copyright information from displaying.
/? Displays help inside the Command Prompt window for Devenv switches.

The following switches are available only to those companies who participate in the Visual Studio .NET Integration Program (VSIP).

Command line switch
Description
 /noVSIP Disables the VSIP developer's license key on a developer workstation.
/safemode Launches Visual Studio in safe mode, loading only the default environment and services.
/resetskippkgs Clears all SkipLoading tags added to VSPackages by users wishing to avoid loading problem VSPackages.

Let us take a look at Some of switches

1) /Build -

devenv /build ConfigName [/project ProjName] [/projectconfig ConfigName] SolutionName

Arguments

ConfigName
      Required. The solution configuration name.
 
SolutionName
      Required. The path and name of the solution. If you want to build a single project configuration, use the /project ProjName argument to specify which project to build and optionally supply the /projectconfig
      configandplatformname argument.

/project ProjName
      Optional. The project file name, as an absolute path or a relative path from the directory containing the solution file. You can also specify the project display name. Use this argument to build a single project within a solution with multiple projects.

/projectconfig ConfigName
      Optional. The name of the build configuration.
  
Remarks

  • This switch is the same as Build Solution (CTRL + SHIFT + B) available within the IDE.
  • Paths that include spaces must be enclosed in double quotation marks.
  • Summary information for builds, including errors, appears in the Command Prompt window or in any log file specified with the /out argument. 

Run the the following command in Visual command Prompt
devenv /build Debug "<Path-Of-the-Solution-File>"

This Command will build the Solution in the Debug Mode

Here is the output

2) /out -

Allows you to specify a file to receive errors when you build using the command line arguments

                devenv /out FileName

Arguments

FileName
      Required. The path and name of the file to receive errors when you build an executable.  

Remarks

If a file name that does not exist is specified, the file is created automatically. If the file already exists, the contents are deleted before running the current build.

Command line build errors are displayed in the Command Prompt window and the Solution Builder view of the Output window. This option is useful if you are running unattended builds and need to see the results.

devenv /run /out "c:\MyErrorLog.txt" "D:\CUT1.3\POSClient\POSClient.sln"

the output of the command from MyErrorLog.txt which got created under C:\ , Becoz of build problems of PosClient Solution

------ Build started: Project: POS, Configuration: Debug .NET ------

Preparing resources...
Updating references...
The dependency 'POSUI' could not be found.
The dependency 'Utility' could not be found.
The dependency 'ControllerInterface' could not be found.
The dependency 'HECUIControls' could not be found.
The dependency 'CommonDataEntity' could not be found.
Cannot copy assembly 'ProcessController' to file 'D:\CUT1.3\deploymentarea\apps\posclient\ProcessController.dll'. The process cannot access the file because it is being used by another process.
Performing main compilation...
D:\CUT1.3\POSClient\POS\ProcessController\Generic\ApplicationController.cs(17,46): error CS0234: The type or namespace name 'Partner' does not exist in the class or namespace 'HEC.POS.Presentation.ProcessController' (are you missing an assembly reference?)

Build complete -- 1 errors, 0 warnings
Building satellite assemblies...

---------------------- Done ----------------------

Build: 22 succeeded, 6 failed, 0 skipped

3) Lot of other Command line Switches like Release , Re-Build according to the Requirement and need

Important Tips

1) You can make all these commands as a Batch Process (Batch File) and you can deploy your Release Builds with out much fuss and in much lesser time. It will save a lot of time for Configuration Managers and Developers.

2) Build Process for .Net Developers they can easily build there project with out opening the solutions with Windows Script using Shell Commands. if there are any bugs while building it will create file called status.txt and states bugs in that. The Next Article I will be writing more about it

3) Another Important point I want to make is that if we Consolidate all these command into a Single Batch file , then it will be very much helpful for us in making our Release Builds.

Advantages

1) We hope to make many aspects of? Devenv /build? a little easier to use, but hopefully this information will make this feature less mystifying for the next time you want to use it.

2) If you look at the time it takes for loading the VS.Net projects and building. Using these Command line switches is comparably lot less then manual loading (Start->Programs->Visual Studio for .NET) of VS.Net project solutions and building. On the whole it will make the process of Building the Solutions much faster.

Login to add your contents and source code to this article
share this article :
post comment
 

Hi,

Is there any way to Add a project into solution from command line.

Thanks.

Posted by ashwini ashwini Apr 21, 2010

Hi there,

Is it possible to add projects (.csproj/.vdproj) to solution (.sln) via command line, kindly let me know, thanks.

Posted by chella Mar 10, 2010

There is another new .Net build tool (a very intelligent wrapper) called NUBuild. Its lightweight, open source and extremely easy to setup and provides almost no-touch maintenance. I really like this new tool and we have made it standard tool for our continuous build and integration of our projects (we have about 400 projects across 75 developers). Try it out.

http://nubuild.codeplex.com/

  • Easy to use command line interface
  • Ability to target all .Net framework version i.e. 1.1, 2.0, 3.0 and 3.5
  • Supports XML based configuration
  • Supports both project and file references
  • Automatically generates the “complete ordered build list” for a given project – No touch maintenance.
  • Ability to detect and display circular dependencies
  • Perform parallel build - automatically decides which of the projects in the generated build list can be built independently.
  • Ability to handle proxy assemblies
  • Provides visual clue to the build process e.g. showing “% completed”, “current status” etc.
  • Generates detailed execution log both in XML and text format
  • Easily integrated with Cruise-Control.Net continuous integration system
  • Can use custom logger like XMLLogger when targeting 2.0 + version
  • Ability to parse error logs
  • Ability to deploy built assemblies to user specified location
  • Ability to synchronize source code with source-control system
  • Version management capability

Posted by bubai Aug 22, 2009
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Become a Sponsor