是否有Visual Studio 2012 / VS11的自定义语言加载项?

时间:2012-12-30 02:59:35

标签: c# vb.net visual-c++ visual-studio-2012 visual-studio-addins

我想在Visual Studio 2012中添加对the PAWN language的支持。

但由于缺乏经验和缺乏可编辑的教程/插件,这真的是一项艰巨的任务。

现在我只想添加文件类型和编译器,不需要智能感知,并且语法突出显示可以使用C语法高亮显示。

我知道有OOK语言实现和Boo语言,但这些加载项适用于VS2010,不会为VS2012编译。

我将如何做到这一点?

是否有语言加载项(对于VS2012)我可以编辑/使用作为基础/用作示例?

我的最后一次尝试导致黑色窗口/无法使用的VS2012 IDE。

2 个答案:

答案 0 :(得分:18)

Visual Studio 2010的官方语言extension sampleIron Python集成示例。

您可以从此处下载:IronPython Integration。这里有一个相关的文档:Visual Studio IronPython Integration Deep Dive

不幸的是,据我所知,此示例并未针对Visual Studio 2012进行更新。但是,以下是将其转换为Visual Studio 2012的步骤。

  1. 从此处安装Visual Studio 2012 SDK:Microsoft Visual Studio 2012 SDK
  2. 下载Iron Python集成示例,在磁盘上的某处提取
  3. 打开IronPython.sln,并接受所有升级转化
  4. 将项目的平台定位从AnyCpu更改为x86
  5. 某些项目对Visual Studio 11程序集(针对.NET 4.5构建)的引用不正确(自动提示),因此它们不会按原样编译。将它们更改回Visual Studio 10程序集。例如,IronPython.Console项目中的Microsoft.VisualStudio.ExtensibilityHosting.dll需要指向C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies中的等效文件。
  6. IronPython.Project项目定义为启动项目,并更新它的Debug参数:启动操作需要启动C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe(VS 2012 shell)外部程序而不是C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe (VS 2010 shell)默认设置的一个。命令行参数应设置为/RootSuffix Exp
  7. 更新所有基本模板以使用VS 2012目录而不是仅使用VS 2010目录:在所有.pyproj文件中搜索IronPython.targets字符串并添加VS 2012案例,如下所示:
  8. 之前:

      <PropertyGroup>
        <!-- Set the IronPythonPath property by proving in different locations where Iron Python could be installed -->
        <!-- Regular LocalAppData -->
        <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Extensions\Microsoft\IronPython\1.0\IronPython.targets')">$(LocalAppData)\Microsoft\VisualStudio\10.0\Extensions\Microsoft\IronPython\1.0</IronPythonPath>
        <!-- Experimental LocalAppData -->
        <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(LocalAppData)\Microsoft\VisualStudio\10.0Exp\Extensions\Microsoft\IronPython\1.0\IronPython.targets')">$(LocalAppData)\Microsoft\VisualStudio\10.0Exp\Extensions\Microsoft\IronPython\1.0</IronPythonPath>
          <!-- Integrated Shell -->
        <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(MSBuildExtensionsPath)\Microsoft\IronPython Studio 2010\1.0\IronPython.targets')">$(MSBuildExtensionsPath)\Microsoft\IronPython Studio 2010\1.0</IronPythonPath>
      </PropertyGroup>
    

    后:

      <PropertyGroup>
        <!-- Set the IronPythonPath property by proving in different locations where Iron Python could be installed -->
        <!-- Regular LocalAppData -->
        <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(LocalAppData)\Microsoft\VisualStudio\10.0\Extensions\Microsoft\IronPython\1.0\IronPython.targets')">$(LocalAppData)\Microsoft\VisualStudio\10.0\Extensions\Microsoft\IronPython\1.0</IronPythonPath>
        <!-- Experimental LocalAppData -->
        <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(LocalAppData)\Microsoft\VisualStudio\10.0Exp\Extensions\Microsoft\IronPython\1.0\IronPython.targets')">$(LocalAppData)\Microsoft\VisualStudio\10.0Exp\Extensions\Microsoft\IronPython\1.0</IronPythonPath>
          <!-- Regular LocalAppData VS10212 -->
          <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(LocalAppData)\Microsoft\VisualStudio\11.0\Extensions\Microsoft\IronPython\1.0\IronPython.targets')">$(LocalAppData)\Microsoft\VisualStudio\11.0\Extensions\Microsoft\IronPython\1.0</IronPythonPath>
          <!-- Experimental LocalAppData VS2012-->
          <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(LocalAppData)\Microsoft\VisualStudio\11.0Exp\Extensions\Microsoft\IronPython\1.0\IronPython.targets')">$(LocalAppData)\Microsoft\VisualStudio\11.0Exp\Extensions\Microsoft\IronPython\1.0</IronPythonPath>
          <!-- Integrated Shell -->
        <IronPythonPath Condition=" '$(IronPythonPath)' == '' AND Exists('$(MSBuildExtensionsPath)\Microsoft\IronPython Studio 2010\1.0\IronPython.targets')">$(MSBuildExtensionsPath)\Microsoft\IronPython Studio 2010\1.0</IronPythonPath>
      </PropertyGroup>
    

    就是这样。编译和运行(由于注册神秘,两者都可能需要一段时间)。

    以下是从Visual Studio 2012启动新的Iron Python项目时的结果: enter image description here

    并在建造时: enter image description here

答案 1 :(得分:5)

使用C#和源代码来查看此CodeProject article Developing extension packages,该代码似乎已针对Visual Studio 2012以及旧版本的Visual Studio进行了更新。

以下是Microsoft on the subject of Creating an Add-in的文章。

这是第二个CodeProject article, part of a series Extending Visual Studio Part 2 Creating Addins