{"id":131,"date":"2026-10-12T11:01:29","date_gmt":"2026-10-12T11:01:29","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2009\/06\/20\/command-line-switches-of-devenvexe\/"},"modified":"2026-10-12T11:01:30","modified_gmt":"2026-10-12T11:01:30","slug":"command-line-switches-of-devenvexe","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/command-line-switches-of-devenvexe\/","title":{"rendered":"devenv.exe Command-Line Switches: Build, Run, Deploy, and Troubleshooting Reference"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you use <strong>Visual Studio\u2019s devenv.exe<\/strong> from a terminal, these switches let you build, clean, run, and troubleshoot solutions without manually driving the IDE. This guide reorganizes the original switch list into practical groups and shows command patterns you can adapt for local scripts and CI tasks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2009-06-20; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/06\/command-line-switches-of-de.png\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2009\/06\/command-line-switches-of-de.png\" alt=\"devenv.exe command-line switches\" \/><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Original article: <a href=\"https:\/\/www.devopsschool.com\/blog\/command-line-switches-of-devenvexe\/\">Command line switches of devenv.exe<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to list switches on your installed version<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most reliable source is the help output from the version installed on your machine:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">devenv \/?<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">This is important because switch availability and behavior can differ between Visual Studio releases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Build and deployment switches<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These are the core switches from the original post used for compiling and deployment workflows.<\/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<\/th><th>Typical usage<\/th><\/tr><\/thead><tbody><tr><td>\/build<\/td><td>Build the specified solution configuration<\/td><td>None<\/td><td>Standard compile of a solution configuration<\/td><\/tr><tr><td>\/project<\/td><td>Build a project instead of the full solution<\/td><td>Use with <strong>\/build<\/strong><\/td><td>Target only one project in a larger solution<\/td><\/tr><tr><td>\/projectconfig<\/td><td>Specify the project configuration to build<\/td><td>Use with <strong>\/project<\/strong><\/td><td>Build a specific project\/config pair<\/td><\/tr><tr><td>\/rebuild<\/td><td>Clean first, then build<\/td><td>None<\/td><td>Force a full rebuild<\/td><\/tr><tr><td>\/clean<\/td><td>Clean build outputs<\/td><td>None<\/td><td>Reset binaries\/intermediate outputs<\/td><\/tr><tr><td>\/deploy<\/td><td>Build specified solution configuration, then deploy<\/td><td>None<\/td><td>Build-and-deploy sequence<\/td><\/tr><tr><td>\/out<\/td><td>Write output to a file<\/td><td>Commonly paired with build-related switches<\/td><td>Persist logs for review<\/td><\/tr><\/tbody><\/table><\/figure>\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 MySolution.sln \/build <span class=\"hljs-string\">\"Release|Any CPU\"<\/span>\ndevenv MySolution.sln \/build <span class=\"hljs-string\">\"Release|Any CPU\"<\/span> \/project MyProject \/projectconfig <span class=\"hljs-string\">\"Release|Any CPU\"<\/span>\ndevenv MySolution.sln \/rebuild <span class=\"hljs-string\">\"Debug|Any CPU\"<\/span> \/out build.log\ndevenv MySolution.sln \/clean <span class=\"hljs-string\">\"Release|Any CPU\"<\/span>\ndevenv MySolution.sln \/deploy <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\n<h2 class=\"wp-block-heading\">Run and command-execution switches<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These switches control post-build execution and IDE command invocation.<\/p>\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>When to use it<\/th><\/tr><\/thead><tbody><tr><td>\/run<\/td><td>Run the specified solution configuration<\/td><td>Start after build while keeping environment active<\/td><\/tr><tr><td>\/runexit<\/td><td>Run specified solution configuration, then terminate<\/td><td>Non-interactive execution pattern<\/td><\/tr><tr><td>\/command<\/td><td>Execute an internal command line after startup<\/td><td>Automate an IDE command at launch<\/td><\/tr><\/tbody><\/table><\/figure>\n\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 MySolution.sln \/run <span class=\"hljs-string\">\"Debug|Any CPU\"<\/span>\ndevenv MySolution.sln \/runexit <span class=\"hljs-string\">\"Debug|Any CPU\"<\/span>\ndevenv MySolution.sln \/command <span class=\"hljs-string\">\"File.OpenFile\"<\/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\n<h2 class=\"wp-block-heading\">Switch selection workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This quick flow helps choose between the most common build\/run switches.<\/p>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Start with solution and config] --> B{Need a clean build}\n    B -- yes --> C[Use \/rebuild]\n    B -- no --> D[Use \/build]\n    C --> E{Run after build}\n    D --> E\n    E -- no --> F[Optionally add \/out for logs]\n    E -- yes --> G{Close after run}\n    G -- yes --> H[Use \/runexit]\n    G -- no --> I[Use \/run]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">IDE behavior and recovery switches<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original post also listed switches focused on UI behavior, localization, and startup stability.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>\/mditabs<\/strong> \u2014 use tabbed documents interface.<\/li><li><strong>\/mdi<\/strong> \u2014 use MDI interface.<\/li><li><strong>\/fn<\/strong> \u2014 use specified font name.<\/li><li><strong>\/fs<\/strong> \u2014 use specified font size.<\/li><li><strong>\/LCID<\/strong> \u2014 use specified language ID.<\/li><li><strong>\/noVSIP<\/strong> \u2014 disable VSIP developer license key for VSIP testing.<\/li><li><strong>\/safemode<\/strong> \u2014 load only default environment\/services for stability.<\/li><li><strong>\/resetskippkgs<\/strong> \u2014 allow previously skipped VSPackages to load again.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Common command patterns<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\"><span class=\"hljs-comment\"># Clean, build, and keep a build log<\/span>\ndevenv MySolution.sln \/clean <span class=\"hljs-string\">\"Release|Any CPU\"<\/span>\ndevenv MySolution.sln \/build <span class=\"hljs-string\">\"Release|Any CPU\"<\/span> \/out release-build.log\n\n<span class=\"hljs-comment\"># Build only one project inside the solution<\/span>\ndevenv MySolution.sln \/build <span class=\"hljs-string\">\"Release|Any CPU\"<\/span> \/project MyProject \/projectconfig <span class=\"hljs-string\">\"Release|Any CPU\"<\/span>\n\n<span class=\"hljs-comment\"># Run then exit<\/span>\ndevenv MySolution.sln \/runexit <span class=\"hljs-string\">\"Debug|Any CPU\"<\/span>\n\n<span class=\"hljs-comment\"># Troubleshooting startup issues<\/span>\ndevenv \/safemode\ndevenv \/resetskippkgs<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Using <strong>\/project<\/strong> without <strong>\/build<\/strong>.<\/li><li>Using <strong>\/projectconfig<\/strong> without <strong>\/project<\/strong>.<\/li><li>Forgetting quotes around configuration values like <strong>&#8220;Release|Any CPU&#8221;<\/strong>.<\/li><li>Assuming all switches behave identically across Visual Studio versions; verify with <strong>devenv \/?<\/strong> on the target machine.<\/li><li>Running commands where <strong>devenv.exe<\/strong> is not on PATH (use a developer shell or full executable path).<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>A practical reference to commonly used devenv.exe switches, including build, clean, deploy, run, and recovery flags. It also shows switch dependencies and realistic command patterns for automation.<\/p>\n","protected":false},"author":1,"featured_media":4037,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[63],"tags":[333,824,3137,3134,3133,3135,3139,3136,3132,3140,3142,3141,3138,1122,545,507,593,938,3058,3131,213],"class_list":["post-131","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ides-and-editor","tag-command","tag-command-line","tag-command-line-switch","tag-command-line-switches","tag-command-line-reference","tag-devenv-command-line-switches","tag-devenv-switch-commands","tag-devenv-switches","tag-devenv-exe","tag-devenv-exe-command-line-switches","tag-devenv-exe-command-line-switches-guide","tag-devenv-exe-command-line-switches-tutorial","tag-devenv-exe-switches","tag-guide","tag-how","tag-list","tag-process","tag-reference","tag-resource","tag-switch","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/131","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=131"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"predecessor-version":[{"id":78980,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/131\/revisions\/78980"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4037"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}