给VS添加代码转换功能
2009-05-30 20:45 Anders Cui 阅读(2568) 评论(2) 编辑 收藏 举报话说在两三个月前,就想开发个代码转换器,将一个项目内的所有代码文件转换到另一种语言的版本,比如从C#到VB.NET,不过当时觉得很复杂——现在还是,囧。
前两天给个同事一段代码。他说,“是VB.NET的啊,还得改成C#的,好麻烦”,我想虽然有在线的代码转换页面,但总不会一直开着那个页面吧,所以想做个小功能:将一段代码转换为另一种语言的版本。
SharpDevelop,.NET平台的一个开源的IDE,提供了一个在线的代码转换器(.NET 2.0),更重要的是,它还公开了一个Web Service,这样我们就可以借助于它的力量。
最后,根据它提供的WinForm实例,很容易将代码转换功能集成到VS中:
具体代码可以参看本文的下载代码。
这里通过这个功能的开发顺便提提两个值得注意的地方,一是Add-In运行过程中出现的异常;另一个是为Add-In命令添加快捷键。
Add-In运行过程中出现的异常
如果Add-In在运行时抛出了异常,VS表现得很淡定——它根本什么都不说。所以对于比较可能出现异常的地方,可以考虑添加try…catch代码块,这样易于跟踪和调试。
为Add-In命令添加快捷键
比较专业的Add-In往往会为它的命令添加快捷键(关于VS中的命令请参看这里)。先来看看在VS中如何为命令手工添加设置快捷键。通过菜单Tools->Options打开选项对话框,选择Environment->Keyboard:
要设置快捷键,首先要选择作用域,即上面Global所在的下拉列表,再就是快捷键本身,最下面的下拉列表说明你输入的快捷键当前是否已被用于某个命令。明白了这个设置过程,以编程方式来实现就容易了。
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://anderslly.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。