DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

C#のコードをVB.NETへ変換する、VB.NETのコードをC#へ変換する

ここでは、C#のコードをVB.NETのコードに変換してくれるツールや、逆にVB.NETのコードをC#のコードに変換してくれるツールを紹介します。また、それ以外の言語の変換に便利なツールも紹介します。ここでは無料で使用できるものだけを紹介します。

Convert C# to VB.NET, Convert VB.NET to C# - Developer Fusion

Convert C# to VB.NET」と「Convert VB.NET to C#」は、Developer Fusionで提供されているサービスです。Web上で変換できます。

テキストボックスにコードを入力し、その下にある「Convert to VB.NET(または、C#)」ボタンをクリックすると、コードが変換されます。

.NET Framework 2.0まで対応しているようですが、3.0以上はまだのようです。

精度はよく、お勧めです。

ちなみに、SharpDevelopを基に作成されているということです。

C# to VB.NET Translator - AspAlliance

C# to VB.NET Translator」もWeb上で提供されているサービスで、C#からVB.NETへの変換に対応しています。このページのテキストボックス(「Paste C# code below:」と書かれている下)にC#のコードを入力し、「Translate」ボタンをクリックすると、VB.NETのコードに変換されます。

.NET Framework 2.0以上には対応していませんが、1.1以下であれば、かなり役に立ちます。

「C# to VB.NET Translator」を使用するに当たり、注意すべき点を幾つか紹介します。

  • 配列の大きさを指定して初期化するコードは正しく変換されません(例:「int[] i = new int [10] {};」は「Dim i(10) As Integer」と変換されます)。
  • 条件式の「&&」や「||」は、「And」「Or」と変換されます。正しくは、「AndAlso」「OrElse」です。
  • 条件式が多少複雑になると、間違えて変換することもあります。
  • 文字列リテラルで@を使っている時にエラーが出ます。@をとり、""内の\もとってから変換した方が良いでしょう。
  • try...catch...finally文で、catch文とfinally文の中身が削除されてしまうことがあります。

Convert C# to VB .NET - Kamal Patel

C#からVB.NETへコード変換するツールとしてかつて有名だったのが、「Convert C# to VB .NET」です。Web上での変換以外に、「Convert C# TO VB .NET OFFLINE」という実行ファイル形式のツールもあり、とても便利です。さらにこの「Convert C# TO VB .NET OFFLINE」はソースが付いているため、改造も出来ます。

「Convert C# to VB .NET」は、他のツールと比べ、正しく変換できないケースが非常に多いです。また、";"の前で改行されている(文の途中で改行されている)コードではエラーが発生することが多いようです。たとえ、エラーが発生しなくても、文の途中で改行されているコードは正しく変換されないことが非常に多いため、「Convert C# to VB .NET」を使用する際は文の途中で改行していないコードを入力することをお勧めします。

「Convert C# TO VB .NET OFFLINE」で日本語(Shift JIS)を正しく表示できるようにする方法を紹介しておきます。ソースコードのForm1のtxtCSharpとtxtVBのFontを日本語フォントに変更し、FileToStrメソッド内の

StreamReader oReader = System.IO.File.OpenText(cFileName);

StreamReader oReader = new StreamReader(cFileName, System.Text.Encoding.GetEncoding(932));

と変更すれば、大丈夫みたいです。

SharpDevelop

オープンソース(GPL)の.NET開発環境であるSharpDevelopを使ってC#とVB.NETのコード変換を行うこともできます。

C#からVB.NETへの変換は、Ver.0.96から付いた「C# to VB.NET converter」という機能で可能です。VB.NETからC#への変換は、#develop Fidalgo Beta 1から付いた「VB.NET to C# converter」でできます。

さらに、C#とVB.NETからBooへの変換も可能です。ちなみにBooとは、pythonに似た言語で、こちらで紹介されています。

メニューの[Tool]-[Convert buffer C# to VB.NET](日本語では、[ソースをC#からVB.NETに変換])や[Convert buffer VB.NET to C#]などを選ぶと、変換できます。

SharpDevelop2では、.NET Framework 2.0に対応しています。

その他

これ以外のツールを以下に紹介します。私自身あまり使っていませんので、詳しいことは書けません。

  • Online Code Converter for .NET 2.0
    SharpDevelopが基になっているようです。.NET Framework 2.0に対応しています。SharpDevelopと同じように、C#からVB.NET、VB.NETからC#、C#からBoo、VB.NETからBooへの変換が可能です。Offline用のツールは、こちらからダウンロードできます。
  • Free Code Translation for .NET (C#<->VB.NET)
    C#からVB.NET、VB.NETからC#の変換がWeb上でできます。日本語は不可のようです。ファイルを指定しての変換もできます。
  • Code Converter | Provided by Telerik
    C#からVB.NET、VB.NETからC#へのコード変換ができます。Web上で変換します。.NET Framework 2.0まで対応しているようです。複数のファイルを一括して変換する機能もあります。
  • BabbelFisken
    ダウンロードして使うツールです。VB.NETからC#への変換の他に、Delphi、Turbo Pascal 5、VB6、VB6(No Option Explicit)からC#への変換もサポートしています。日本語も文字化けすることがありませんし、ソースコードも公開されています。精度はそこそこです。
  • GBVB - Converting VB.NET code to C#
    ダウンロードして使うツールです。VB.NETをC#に変換します。ソースコードも公開されています。私が試した限りでは、今のところは、かなり簡単なコードしか、まともに変換してくれませんでした。また、日本語は文字化けします。
  • Convert C# to VB.NET to C# conversion tool
  • A Visual Studio Add-In That Converts C# Code To Visual Basic
    Visual Studioのアドインで、C#からVB.NETの変換ができます。先に紹介した「Convert C# to VB .NET - Kamal Patel」や「Free Code Translation for .NET (C#<->VB.NET)」を使って変換しているようです。

逆アセンブラを使用したコード変換

このようなツールを使わずに、コードを変換する奥の手を紹介しましょう。それは、MSILのDisassembler(逆アセンブラ)を使う方法です。

Reflector for .NET

Disassemblerは.NET Framework SDKにも「MSIL Disassembler」(Ildasm.exe)というのが付いておりそこそこ使えますが、C#やVB.NETのコードを得ることが目的であれば、「Reflector for .NET」というツールがお勧めです。使い方としては、変換基のコードをビルドし、できたファイル(exeやdll)をReflector for .NETで開き、メニューの[Tool]-[Disassembler]を選択します。これで左側のツリーで選択したメソッドのコードが右側に表示されるようになります。

表示するコードの言語を変更は、ツールバーのコンボボックスでできます(または、メニューの[View]-[Options]で「Options」ダイアログを表示し、「Language」を変更します)。指定できる言語は、IL、C#、Visual Basic(VB.NET)、Delph、MC++、Chromeです。

Anakrino

Anakrino」もReflector for .NETと同じようなツールです。さらに、同梱されているExemplar.exeを使うと、EXEやDLLの内容を、いっぺんにC#のコードへ変換することができます。ただし残念なことに、日本語が表示されません(Exemplar.exeは途中で終わってしまいます)。

  • 履歴:
  • 2007/1/11 「Visual C# to Visual Basic .NET Converter」(http://csharpconverter.claritycon.com/Default.aspx)をリンク切れのため、削除。ツールをいくつか追加。
  • 2008/9/10 「Convert C# to VB .NET」をリンク切れのため削除。新たなツールを追加など。