我想添加对 the PAWN language 的支持到 Visual Studio 2012。
但由于缺乏经验和缺乏教程/加载项,我可以编辑它确实是一项艰巨的任务。
现在我只想添加文件类型和编译器,不需要智能感知,语法高亮可以使用 C 语法高亮器。
我知道有 OOK 语言实现和 Boo 语言,但这些插件适用于 VS2010,不会为 VS2012 编译。
我将如何完成这个?
是否有我可以编辑/用作基础/用作示例的语言插件(适用于 VS2012)?
我最后一次尝试导致出现黑色窗口/无法使用 VS2012 IDE。
最佳答案
官方语言extension sample对于 Visual Studio 2010 是 Iron Python集成示例。
您可以从这里下载:IronPython Integration .这里有一个相关的文档:Visual Studio IronPython Integration Deep Dive
很遗憾,据我所知,此示例并未针对 Visual Studio 2012 进行更新。然而,这里是将其转换为 Visual Studio 2012 的步骤。
- 从此处安装 Visual Studio 2012 SDK:Microsoft Visual Studio 2012 SDK
- 下载 Iron Python 集成示例,解压到磁盘上的某个位置
- 打开
IronPython.sln
,接受所有升级转换 - 将项目的平台目标从
AnyCpu
更改为x86
- 某些项目对 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
中的等效文件。 - 将
IronPython.Project
项目定义为启动项目,并更新其调试参数:启动操作需要启动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
- 更新所有基本模板以使用 VS 2012 目录而不是仅使用 VS 2010 目录:在所有 .pyproj 文件中搜索
IronPython.targets
字符串并添加 VS 2012 案例,如下所示:<
之前:
<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 项目时的结果:
构建时:
关于c# - Visual Studio 2012/VS11 是否有自定义语言加载项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087937/