DIY 一套正版、免費、強大的 Visual Studio 2012 IDE


作為開發軟件的程序員,應在力所能及的情況下使用正版軟件。最近一直在用VisualStudio 2012 Express Desktop/Web 版本開發項目。VisualStudio 2012 Express 是免費的,功能基本上夠用,但是還是有很多不足,如:

(1)無法安裝擴展;這個很致命,比如,想安裝IronPython,沒辦法;想安裝 Mono for Android,沒辦法。

(2)無法同時打開Winform項目、 C++ 項目和Web項目;

(3)解決方案下不能建虛擬目錄。

下面,我們來一步步克服上面問題,打造一款 正版、免費又強大的 Visual Studio 2012 IDE。本文的初始版本在有的電腦上有問題,下面是修改后的版本。

第一步:

下載,安裝 Visual Studio Express for Windows Desktop 和 Visual Studio Express for Web。地址:

http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products

下載安裝之后,在線注冊一下,就可以免費使用了。

第二步:

下載,安裝 Visual Studio 2012 Shell,包括 Visual Studio Integrated Shell 和 Visual Studio Isolated Shell ,地址: http://msdn.microsoft.com/zh-cn/library/vstudio/bb685612.aspx

這個也是免費的,你可以用這個Shell開發自己的IDE工具。這個Shell 很方便安裝擴展,並且解決方案下能夠建虛擬目錄。

第三步:

將上面的 Visual Studio Express for Windows Desktop 和 Visual Studio Express for Web 作為插件,集成到 Visual Studio 2012 Shell 之中。

這一步是最關鍵一步,下面詳細說明。

(1)修改 Visual Studio Shell 的配置文件

以我的電腦為例(Win7,32位)。在 Microsoft Visual Studio 11.0\Common7\IDE 目錄下,有三個 exe 程序:devenv.exe 程序是 Visual Studio 2012 Shell 的可執行程序。VWDExpress.exe 是 Visual Studio Express for Web 的可執行程序,WDExpress.exe 是 Visual Studio Express for Windows Desktop  的可執行程序。這三個程序分別對應有各自的 ×.pkgdef 文件,規定了這個程序的擴展目錄。devenv.exe 對應的是 devenv.pkgdef 文件。

打開 devenv.pkgdef 文件,將內容更改為:

[$Initialization$]
"ApplicationExtensionsFolder" = "$RootFolder$\Common7\IDE\Extensions"
"PkgDefSearchPath"       = "$ApplicationExtensionsFolder$; \
                            $RootFolder$\Common7\IDE\CommonExtensions; \
                            $RootFolder$\Common7\IDE\WDExpress; \
                            $RootFolder$\Common7\IDE\WDExpressExtensions; \
                            $RootFolder$\Common7\IDE\VWDExpress; \
                            $RootFolder$\Common7\IDE\VWDExpressExtensions; \
                            $RootFolder$\Common7\IDE\Extensions\Microsoft\VC\ClassWizard; \
                            $RootFolder$\Common7\IDE\devenv.vc.pkgdef;"
"UserExtensionsRootFolder"    = "$AppDataLocalFolder$\Extensions"
"RegistryRoot"                = "Software\Microsoft\VisualStudio\11.0"

 

上面這個配置文件簡單解釋一下。 $RootFolder$\Common7\IDE\Extensions 是 VS Shell默認加載插件的位置,一般安裝的第三方插件都會安裝到這個目錄下。$RootFolder$\Common7\IDE\CommonExtensions 是 VS 自帶的插件,如 Editor 等等。

$RootFolder$\Common7\IDE\WDExpress 和 $RootFolder$\Common7\IDE\WDExpressExtensions 是 Visual Studio 2012 for Desktop(刨除其中的VC部分) ,我們將它當作插件加載進來。

$RootFolder$\Common7\IDE\VWDExpress 和 $RootFolder$\Common7\IDE\VWDExpressExtensions 是 Visual Studio 2012 for Web ,我們將它當作插件加載進來。
$RootFolder$\Common7\IDE\Extensions\Microsoft\VC\ClassWizard 和 $RootFolder$\Common7\IDE\devenv.vc.pkgdef 的作用是將 VC 當作插件加載進來。

但是, WDExpress 、 VWDExpress 和 VC 自身不是插件,如果不寫配置文件的話,他們是加載不進來的。下面,我們來寫插件文件,將它們配置成插件。

(2)將 WDExpress 配置成插件

進入 Common7\IDE\WDExpress 目錄下,添加一個名為 extension.vsixmanifest 的文本文件,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<Vsix Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
  <Identifier Id="WD Express..7DB76FEF-2C49-4E20-AD04-17DDE708C56B">
    <Name>WD Express</Name>
    <Author>Microsoft</Author>
    <Version>1.0</Version>
    <Description>WD Express Tools</Description>
    <Locale>1033</Locale>
    <License>ms-pl.rtf</License>
    <SupportedProducts>
      <VisualStudio Version="11.1">
        <Edition>Pro</Edition>
        <Edition>VDExpress</Edition>
        <Edition>IntegratedShell</Edition>
      </VisualStudio>
    </SupportedProducts>
    <SystemComponent>true</SystemComponent>
    <InstalledByMsi>true</InstalledByMsi>
    <SupportedFrameworkRuntimeEdition MinVersion="2.0" MaxVersion="4.5" />
  </Identifier>
  <References />
  <Content>
    <ProjectTemplate>ProjectTemplates</ProjectTemplate>
    <ItemTemplate>ItemTemplates</ItemTemplate>
  </Content>
</Vsix>

(3)將 VWDExpress 配置成插件

進入 Common7\IDE\VWDExpress 目錄下,添加一個名為 extension.vsixmanifest 的文本文件,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<Vsix Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
  <Identifier Id="VWD Express..7DB76FEF-2C49-4E20-AD04-17DDE708C5DD">
    <Name>VWD Express</Name>
    <Author>Microsoft</Author>
    <Version>1.0</Version>
    <Description>VWD Express Tools</Description>
    <Locale>1033</Locale>
    <License>ms-pl.rtf</License>
    <SupportedProducts>
      <VisualStudio Version="11.1">
        <Edition>Pro</Edition>
        <Edition>VWDExpress</Edition>
        <Edition>IntegratedShell</Edition>
      </VisualStudio>
    </SupportedProducts>
    <SystemComponent>true</SystemComponent>
    <InstalledByMsi>true</InstalledByMsi>
    <SupportedFrameworkRuntimeEdition MinVersion="2.0" MaxVersion="4.5" />
  </Identifier>
  <References />
  <Content>
    <ProjectTemplate>ProjectTemplates</ProjectTemplate>
    <ItemTemplate>ItemTemplates</ItemTemplate>
  </Content>
</Vsix>

(4)將 VC 配置成插件

devenv.vc.pkgdef 文件就是VC的插件配置,這個文件是不存在的。我們在 Common7\IDE 目錄下,建立一個名為 devenv.vc.pkgdef 的文本文件,內容如下:

// Override the VC root for templates
[$RootKey$\Projects\{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}]
"DesignerTemplatesDir"="$ShellFolder$\VC\DesignerTemplates_WDExpress"
"ItemTemplatesDir"="$ShellFolder$\VC\VCProjectItems_WDExpress"
"ProjectTemplatesDir"="$ShellFolder$\VC\VCProjects_WDExpress"

[$RootKey$\NewProjectTemplates\TemplateDirs\{F1C25864-3097-11D2-A5C5-00C04F7968B4}\/1]
"TemplatesDir"="$ShellFolder$\VC\VCProjects_WDExpress"

[$RootKey$\Projects\{7C3490A3-8632-43C5-8A60-07DC2F450870}\AddItemTemplates\TemplateDirs\{3A3E1789-3E35-47B0-8567-D2FB407CC63D}\/1]
"TemplatesDir"="$ShellFolder$\VC\VCProjectItems_WDExpress\PropertySheets"

[$RootKey$\Projects\{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\AddItemTemplates\TemplateDirs\{F1C25864-3097-11D2-A5C5-00C04F7968B4}\/1]
"TemplatesDir"="$ShellFolder$\VC\VCProjectItems_WDExpress"

[$RootKey$\Projects\{8BC9CEBA-8B4A-11D0-8D11-00A0C91BC942}\AddItemTemplates\TemplateDirs\{F1C25864-3097-11D2-A5C5-00C04F7968B4}\/3]
"TemplatesDir"="$ShellFolder$\VC\VCAddClass_WDExpress"

[$RootKey$\Projects\{7D6034C3-AFB8-05CB-2A75-DAA65E89BE83}\AddItemTemplates\TemplateDirs\{F1C25864-3097-11D2-A5C5-00C04F7968B4}\/1]
"TemplatesDir"="$ShellFolder$\VC\VCProjectItems_WDExpress"

[$RootKey$\Projects\{A2FE74E1-B743-11d0-AE1A-00A0C90FFFC3}\AddItemTemplates\TemplateDirs\{F1C25864-3097-11D2-A5C5-00C04F7968B4}\/1]
"TemplatesDir"="$ShellFolder$\VC\VCNewItems_WDExpress"

 

(5)讓Visual Studio Shell 重新加載插件

接着,刪除插件緩存文件。我的在 C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\11.0\Extensions 目錄中,不同的系統可能在不同的位置。刪除這個目錄下的所有文件。

然后,通過控制台程序,進入到 Microsoft Visual Studio 11.0\Common7\IDE 目錄下,執行下面命令:

.\devenv.exe /setup

====

這樣就得到了一個集成C#,VB,C++,Web開發的,可正常安裝擴展的,支持建立虛擬目錄的正版免費 Visual Studio IDE。整個過程就是做了這么一件事情——設置配置文件,將Express for Desktop/Web以及VC配置成Visual Studio的插件,其它地方未作修改。

image

 

注:可能是加載項目模板緩存的問題,第一次啟動時如果窗體假死,直接關掉它,再重新打開就好了。

====

說幾句其他的話:

(1)有人懷疑這樣做的意義,認為VS 各種版本的注冊碼網上多的事,這樣做多此一舉。但好歹,這樣實在對方授權范圍內,而直接下載用注冊碼的是在對方授權范圍外;

(2)即使微軟縱容 D 版滿天飛,但是嗟來之食,總歸無味;

(3)通過上面操作,可以對Visual Studio 的插件結構有所了解,進而定制對自己最合適的IDE;

(4)黑客精神第一條:這世上充滿著等着被解決的迷人問題。上面解決問題的過程中進行了很多大膽的假設、猜想和驗證,然后一步一步的得到結果,這種過程也是很迷人的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM