﻿# 介紹好用工具：MSBuild Shell Extension

我有時只想單純建置(Build)一個 .NET 專案時，一想到要開啟又肥又重的 Visual Studio 就覺得有點懶懶的，正所謂：「懶惰，是程式開發人員的美德！」。如果你跟我一樣懶，可以考慮安裝 [MSBuild Shell Extension](http://www.codeplex.com/msbuildshellex) 工具。

[MSBuild Shell Extension](http://www.codeplex.com/msbuildshellex) 是一套 [Windows Explorer](http://en.wikipedia.org/wiki/Windows_Explorer) 的 Shell Extension，也就是這個功能會與你的「檔案總管」緊密結合在一起，執行時就只要在方案檔或專案檔的檔案上按右鍵就會出現 Build / Clean / Rebuild 的項目，如下圖示：

![MSBuild Shell Extension :: 只要在方案檔或專案檔的檔案上按右鍵就會出現 Build / Clean / Rebuild 的項目](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3a22ee3d6aa775ec8cd6-image_12.png "MSBuild Shell Extension :: 只要在方案檔或專案檔的檔案上按右鍵就會出現 Build / Clean / Rebuild 的項目")

但由於 [MSBuild Shell Extension](http://www.codeplex.com/msbuildshellex) 是在 Visual Studio 2005 時期出的工具，若要利用 [MSBuild Shell Extension](http://www.codeplex.com/msbuildshellex) 建置 Visual Studio 2008 的方案檔或 .NET Framework 3.5 專案的話，就必須要利用內建的 Configurator 進行調整。

![MSBuildShellExtension -> Configurator](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6f26e65ff5e8ff075599-image_7.png "MSBuildShellExtension -> Configurator")

開啟 Configurator 之後，點選 Extensions 頁籤，並且對每一個 Extensions 各自修改 .NET version 到 v3.5，最後再按下 Save 按鈕即可將設定值儲存到機碼中。

[![MSBuildShellExtension Configurator](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bfe65467d4982a0d3af1-image_thumb_5.png "MSBuildShellExtension Configurator")](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f01de246e625a2d486d2-image_14.png)

不過，我個人在設定好之後，透過檔案總管執行時會出現以下錯誤：

[!['"C:\\Program Files\\Microsoft Visual Studio 8\\VC\\vcvarsall.bat"' 不是內部或外部命令、可執行的程式或批次檔。](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b660df5a407a0da56137-image_thumb_1.png "'\"C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat\"' 不是內部或外部命令、可執行的程式或批次檔。")](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d36a7f6033d5888d97f2-image_4.png)

跟作者溝通了一段時間後，才發現原來是因為我當初的 Visual Studio 2008 是從 Visual Studio 2005 升級上來，機碼中的 VisualStudio Launcher 設定值還是指定到 Visual Studio 2005 的路徑，且我的 Visual Studio 2005 已經移除了，才會導致這個錯誤，以下是修正的方法：

1.  先開啟 regedit 並進入 HKEY\_CLASSES\_ROOT\\VisualStudio.Launcher.sln 機碼，如下圖是需要修改的機碼：  
    ![開啟 regedit 並進入 HKEY\_CLASSES\_ROOT\\VisualStudio.Launcher.sln 機碼](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9a5bb79dbd95370a7c3b-image_10.png "開啟 regedit 並進入 HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln 機碼")  
      
    
2.  然後將這幾個機碼的預設值中錯誤的路徑修正，原本的路徑可能是 C:\\Program Files\\Microsoft Visual Studio 8\\VC\\vcvarsall.bat 是錯的，你要修改成 D:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\vcvarsall.bat 才對！

設定完之後就可以正常運作了。

 **相關連結**

-   [MSBuild Shell Extension](http://www.codeplex.com/msbuildshellex)

-   [Screenshots](https://web.archive.org/web/20090915201050/http://msbuildshellex.codeplex.com/Wiki/View.aspx?title=Screenshots)
-   [Manual](https://web.archive.org/web/20090412074736/http://msbuildshellex.codeplex.com/Wiki/View.aspx?title=Manual)
-   [MSBuild Tutorial](https://web.archive.org/web/20090915200345/http://msbuildshellex.codeplex.com:80/Wiki/View.aspx?title=MSBuild%20Tutorial)

-   [Registering Verbs for File Name Extensions](http://msdn.microsoft.com/en-us/library/bb165967.aspx)
-   Does the MSBuildShellExtension app work with Visual Studio 2008 SP1 solutions?
