{"id":382,"date":"2026-10-14T01:41:06","date_gmt":"2026-10-14T01:41:06","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2014\/09\/29\/command-line-switches-of-devenv-exe\/"},"modified":"2026-10-14T01:41:06","modified_gmt":"2026-10-14T01:41:06","slug":"command-line-switches-of-devenv-exe","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/command-line-switches-of-devenv-exe\/","title":{"rendered":"devenv.exe Command-Line Switches: Practical Build, Run, and Troubleshooting Reference"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">devenv.exe is Visual Studio\u2019s command-line entry point for building, cleaning, running, and troubleshooting solutions without manually driving the IDE. This guide is aimed at DevOps and build engineers who need a fast, reliable reference for switch usage, dependencies, and real command examples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2014-09-29; fully revised and updated.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2014\/09\/command-line-switches-of-de.png\" alt=\"command-line-switches-of-devenv-exe\" width=\"600\" height=\"400\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Check available switches on your machine first<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The exact switch set can vary by Visual Studio version. Start every troubleshooting session by checking help output directly from the installed devenv.exe.<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">devenv \/?<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Compare core build and execution switches<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Switch<\/th><th>What it does<\/th><th>Typical use<\/th><\/tr><\/thead><tbody><tr><td>\/build<\/td><td>Builds the specified solution configuration.<\/td><td>Normal CI or local build invocation.<\/td><\/tr><tr><td>\/rebuild<\/td><td>Performs a clean, then builds again.<\/td><td>When you suspect stale outputs or dependency drift.<\/td><\/tr><tr><td>\/clean<\/td><td>Removes build outputs.<\/td><td>Pre-build cleanup or workspace reset.<\/td><\/tr><tr><td>\/deploy<\/td><td>Builds the configuration and then deploys it.<\/td><td>Environments where deployment is configured in the solution.<\/td><\/tr><tr><td>\/run<\/td><td>Runs the specified solution configuration.<\/td><td>Launch app from command line without auto-exit.<\/td><\/tr><tr><td>\/runexit<\/td><td>Runs the configuration and then terminates.<\/td><td>Automation scenarios where process exit is required.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Reference switches from the original post<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The table below consolidates the switches listed in the original article, including the dependency notes provided there.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Switch<\/th><th>Purpose<\/th><th>Dependency or note<\/th><\/tr><\/thead><tbody><tr><td>\/build<\/td><td>Build the specified solution configuration.<\/td><td>Base build command.<\/td><\/tr><tr><td>\/project<\/td><td>Build a specific project instead of the full solution.<\/td><td>Original post notes it must be used with <code>\/build<\/code>.<\/td><\/tr><tr><td>\/projectconfig<\/td><td>Specify the project configuration to build.<\/td><td>Requires <code>\/project<\/code>.<\/td><\/tr><tr><td>\/out<\/td><td>Write build output to a file.<\/td><td>Useful for logs in automation.<\/td><\/tr><tr><td>\/rebuild<\/td><td>Build after forcing a clean first.<\/td><td>Equivalent to clean plus build behavior.<\/td><\/tr><tr><td>\/clean<\/td><td>Clean build outputs.<\/td><td>Use before deterministic rebuilds.<\/td><\/tr><tr><td>\/deploy<\/td><td>Build and then deploy the configuration.<\/td><td>Depends on deployment setup in the solution.<\/td><\/tr><tr><td>\/run<\/td><td>Run a solution configuration.<\/td><td>Interactive run behavior.<\/td><\/tr><tr><td>\/runexit<\/td><td>Run a solution configuration and terminate.<\/td><td>Better for scripted runs.<\/td><\/tr><tr><td>\/command<\/td><td>Execute an internal command after startup.<\/td><td>Used for IDE automation tasks.<\/td><\/tr><tr><td>\/mditabs<\/td><td>Use tabbed documents interface.<\/td><td>UI behavior switch.<\/td><\/tr><tr><td>\/mdi<\/td><td>Use MDI interface.<\/td><td>UI behavior switch.<\/td><\/tr><tr><td>\/fn<\/td><td>Use specified font name.<\/td><td>UI preference switch.<\/td><\/tr><tr><td>\/fs<\/td><td>Use specified font size.<\/td><td>UI preference switch.<\/td><\/tr><tr><td>\/LCID<\/td><td>Use specified language ID.<\/td><td>Localization-related startup control.<\/td><\/tr><tr><td>\/noVSIP<\/td><td>Disable VSIP developer license key for VSIP testing.<\/td><td>Specialized extension\/testing scenario.<\/td><\/tr><tr><td>\/safemode<\/td><td>Load only default environment and services.<\/td><td>Useful when diagnosing startup instability.<\/td><\/tr><tr><td>\/resetskippkgs<\/td><td>Allow previously skipped VSPackages to load again.<\/td><td>Recovery after package load failures.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Workflow for composing a devenv command<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use this flow to decide which switches to add, especially when narrowing from full-solution builds to project-level builds and log capture.<\/p>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Choose solution path] --> B{Task type}\n    B --> C[Build or rebuild]\n    B --> D[Clean]\n    B --> E[Run or runexit]\n    C --> F{Single project only}\n    F -- yes --> G[Add project]\n    G --> H[Optional projectconfig]\n    F -- no --> I[Use solution configuration]\n    H --> J[Optional out log file]\n    I --> J\n    D --> J\n    E --> J\n    J --> K[Execute devenv command]\n    K --> L[Review console or log output]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Practical command examples<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Replace file paths and configurations with values from your environment. Quoting configuration values is important when they contain spaces.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">devenv MyApp.sln \/build <span class=\"hljs-string\">\"Release|Any CPU\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">devenv MyApp.sln \/build <span class=\"hljs-string\">\"Release|Any CPU\"<\/span> \/project <span class=\"hljs-string\">\"src\\Api\\Api.csproj\"<\/span> \/projectconfig <span class=\"hljs-string\">\"Release|Any CPU\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">devenv MyApp.sln \/rebuild <span class=\"hljs-string\">\"Debug|Any CPU\"<\/span> \/out <span class=\"hljs-string\">\"C:\\logs\\devenv-build.log\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">devenv MyApp.sln \/clean <span class=\"hljs-string\">\"Release|Any CPU\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">devenv MyApp.sln \/runexit <span class=\"hljs-string\">\"Debug|Any CPU\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">devenv \/safemode<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Always verify switch availability with <code>devenv \/?<\/code> on the target machine, especially across Visual Studio versions.<\/li><li>Follow dependency rules from this reference: <code>\/project<\/code> is paired with build operations, and <code>\/projectconfig<\/code> requires <code>\/project<\/code>.<\/li><li>Use <code>\/out<\/code> for reproducible logs in CI jobs and incident reviews.<\/li><li>Use <code>\/safemode<\/code> and <code>\/resetskippkgs<\/code> when diagnosing extension or package loading failures.<\/li><li>Quote solution paths and configuration names to avoid parsing issues in scripts.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Use this reference to run Visual Studio solution tasks from the command line with devenv.exe. It covers what each switch does, how to combine them safely, and common automation pitfalls.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[62],"tags":[],"class_list":["post-382","post","type-post","status-publish","format-standard","hentry","category-code-analysis"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=382"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/382\/revisions"}],"predecessor-version":[{"id":79262,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/382\/revisions\/79262"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}