65.9K
CodeProject 正在变化。 阅读更多。
Home

用于 C# 和 VB.NET 的代码转换 Visual Studio 插件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.24/5 (9投票s)

2007 年 11 月 20 日

CPOL

1分钟阅读

viewsIcon

80646

downloadIcon

4819

在工具菜单中添加一个从 C# 转换为 VB.NET 以及从 VB.NET 转换为 C# 的按钮

引言

此解决方案包含一个 Visual Studio 插件项目。

该插件在工具菜单中添加一个按钮,用于将 VB.NET 代码相互转换成 C#。

该解决方案还包含一个用于该插件的安装项目。

背景

我创建这个项目是作为我学习插件编程工作的一部分。我选择了代码转换,因为我找不到一个能够方便地从 C# 转换为 VB.NET 以及从 VB.NET 转换为 C# 的工具。

该插件使用一个外部服务,可以在 这里 找到。

Screenshot - ctovb.jpg

您可以轻松更改提供程序或使用本地代码(如果您有的话 - 我找不到一个好的本地转换器的示例,这就是为什么我使用了外部服务)。

注意:在使用外部服务时,您必须连接到互联网才能使用该插件。

Using the Code

这是 Exec 方法,它在用户点击按钮时运行

//
public void Exec(string commandName, vsCommandExecOption executeOption, 
		ref object varIn, ref object varOut, ref bool handled)
    {
        try
        {
            handled = false;
            if (executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if (commandName == "CodeConvert.Connect.CodeConvert")
                {
                    handled = true;
                    string url = 
		       "http://www.carlosag.net/Tools/CodeTranslator/Translate.ashx";
                    string parameters = String.Empty;
                    string remark = String.Empty;
                    string code = Clipboard.GetData(DataFormats.Text).ToString();
                    if (_applicationObject.ActiveDocument.Name.EndsWith("cs"))
                    {
                        remark = "//C# converted code, conversion by: 
                        	http://www.carlosag.net/Tools/CodeTranslator/ " + 
			                Environment.NewLine;
                        parameters = "Code=" + System.Web.HttpUtility.UrlEncode(code) + 
				"&Language=VB&DestinationLanguage=C#";
                    }
                    else if (_applicationObject.ActiveDocument.Name.EndsWith("vb"))
                    {
                        remark = "'VB.NET converted code, conversion by: 
			            http://www.carlosag.net/Tools/CodeTranslator/" + 
			            Environment.NewLine;
                        parameters = "Code=" + System.Web.HttpUtility.UrlEncode(code) + 
				"&Language=C#&DestinationLanguage=VB";
                    }
                    if (remark != String.Empty)
                    {
                        string result = HttpWebRequestHttpPost(url, parameters);
                        ((TextSelection)_applicationObject.ActiveDocument.Selection)
                               .Text = remark + result + Environment.NewLine; ;
                    }
                    else
                    {
                        MessageBox.Show
			("CodeConvert can be used for .vb or .cs files only");
                    }
                    return;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error:" + ex.Message);
            return;
        }    
    }
// 

插件通过当前文件扩展名来确定要转换的内容 - 因此,当您想将 VB.NET 转换为 C# 时,您需要在 *.cs 文件中粘贴 VB.NET 代码,而当尝试将 C# 转换为 VB.NET 时,您需要在 *.vb 文件中粘贴 C# 代码(粘贴 -> 点击按钮,原始代码在您的剪贴板中)。

示例

Screenshot - vb.jpg

图 1:原始 VB.NET 代码(复制)。

Screenshot - csbefore.jpg

图 2:工具菜单。

Screenshot - csafter.jpg

图 3:C# 代码被粘贴到目标文件中。

尽情享用!

历史

  • 2007 年 11 月 20 日:初始发布
© . All rights reserved.