给VS添加代码转换功能

简介:

话说在两三个月前,就想开发个代码转换器,将一个项目内的所有代码文件转换到另一种语言的版本,比如从C#到VB.NET,不过当时觉得很复杂——现在还是,囧。

前两天给个同事一段代码。他说,“是VB.NET的啊,还得改成C#的,好麻烦”,我想虽然有在线的代码转换页面,但总不会一直开着那个页面吧,所以想做个小功能:将一段代码转换为另一种语言的版本。

SharpDevelop,.NET平台的一个开源的IDE,提供了一个在线的代码转换器(.NET 2.0),更重要的是,它还公开了一个Web Service,这样我们就可以借助于它的力量。

最后,根据它提供的WinForm实例,很容易将代码转换功能集成到VS中:

code-convert-form

具体代码可以参看本文的下载代码。

这里通过这个功能的开发顺便提提两个值得注意的地方,一是Add-In运行过程中出现的异常;另一个是为Add-In命令添加快捷键。

Add-In运行过程中出现的异常

如果Add-In在运行时抛出了异常,VS表现得很淡定——它根本什么都不说。所以对于比较可能出现异常的地方,可以考虑添加try…catch代码块,这样易于跟踪和调试。

为Add-In命令添加快捷键

比较专业的Add-In往往会为它的命令添加快捷键(关于VS中的命令请参看这里)。先来看看在VS中如何为命令手工添加设置快捷键。通过菜单Tools->Options打开选项对话框,选择Environment->Keyboard:

set-command-shortcut2

要设置快捷键,首先要选择作用域,即上面Global所在的下拉列表,再就是快捷键本身,最下面的下拉列表说明你输入的快捷键当前是否已被用于某个命令。明白了这个设置过程,以编程方式来实现就容易了。

C# Code - 设置命令的快捷键
Command codeConverterCmd = _applicationObject.Commands.Item(GetCommandFullName(CODE_CONVERTER_COMMAND_NAME), 0);
codeConverterCmd.Bindings 
= "Global::Ctrl+T, C";

显示获取到命令对象的实例,然后设置Bindings属性,包括scope和shortcut两部分,就这么简单。

可以从这里下载代码,也可以在这里下载可运行的Add-In(解压缩后将文件放在[My Documents Path]\Visual Studio 2008\Addins下)。

参考

《Professional Visual Studio® 2008 Extensibility》 
SharpDevelop Code Converter 
Command.Bindings Property


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2009/05/30/vs-addin-code-converter.html,如需转载请自行联系原作者。

目录
相关文章
|
6月前
|
搜索推荐 安全 前端开发
满血上阵!DeepSeek x 魔笔低代码平台创造专属知识空间
本文介绍了如何结合阿里云百炼和多端低代码开发平台魔笔,快速构建一个基于 DeepSeek 的智能化专属知识空间应用。通过使用DeepSeek R1等先进推理模型,该应用能够实现精准的知识推理与智能问答,极大提升信息处理效率。教程涵盖了从创建百炼智能体、获取必要配置参数到在魔笔平台上搭建及发布应用的全过程,并展示了如何对应用进行内容客制化以满足特定需求。此外,还探讨了未来扩展方向,如生产环境部署、多租户隔离以及多样化的用户身份认证方案,旨在为企业和个人提供更加安全、便捷的知识管理解决方案。
满血上阵!DeepSeek x 魔笔低代码平台创造专属知识空间
|
6月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
194 0
|
存储 安全 测试技术
【Go语言精进之路】构建高效Go程序:了解map实现原理并高效使用
【Go语言精进之路】构建高效Go程序:了解map实现原理并高效使用
200 3
|
9月前
|
前端开发 JavaScript 测试技术
React 时间选择器 Time Picker:常见问题与调试指南
本文介绍了在使用 React 时间选择器时常见的问题及解决方案,包括时间格式不匹配、时区问题、禁用时间范围和自定义样式等。通过代码案例详细解释了如何避免这些问题,强调了阅读文档、类型检查、单元测试和调试技巧的重要性。
225 7
|
Web App开发 数据可视化 前端开发
前端数据可视化插件(四)关系图
前端数据可视化插件(四)关系图
前端数据可视化插件(四)关系图
|
网络协议 网络架构
动图 | 6张图让你秒懂“ARP中间人攻击”原理,堪称史诗级解释!
动图 | 6张图让你秒懂“ARP中间人攻击”原理,堪称史诗级解释!
595 0
|
算法 物联网 Serverless
一键打造你的定制化AIGC文生图工具
【8月更文挑战第2天】一键打造你的定制化AIGC文生图工具
461 0
|
算法 前端开发
详解双端队列&单调队列
详解双端队列&单调队列
|
运维 监控 架构师
自动化运维的概念|学习笔记
快速学习自动化运维的概念
自动化运维的概念|学习笔记
|
测试技术 Android开发 索引
XPath定位如何在App自动化测试中大显神威
本文介绍了如何在Appium中使用XPath进行自动化App测试。通过淘宝App实例,展示了XPath在定位元素上的应用,包括基础定位(如通过text、resource-id、class和content-desc属性),contains模糊定位,组合定位以及层级定位(如父、子、兄弟和祖元素定位)。XPath的灵活性和强大功能使得在Appium中高效地定位元素成为可能,从而提升移动应用的测试效率。