ここでは、C#のコードをVB.NETのコードに変換してくれるツールや、逆にVB.NETのコードをC#のコードに変換してくれるツールを紹介します。また、それ以外の言語の変換に便利なツールも紹介します。ここでは無料で使用できるものだけを紹介します。
Developer FusionのCode Convertersで、コード変換ツールが利用できます。Web上で変換できます。
変換できる言語は、2015/6/15の時点で、変換元がC#とVB.NET、変換先がC#、VB.NET、Python、Rubyです。
SharpDevelopを基に作成されているということです。
「Snippet Converter」は、SharpDevelopが提供しているサービスです。変換できる言語は、2015/6/15の時点で、変換元がC#、VB.NET、変換先がC#、VB.NET、Python、Ruby、Booです。
Webサービス「ConvertService Web Service」もあります。Webサービスを利用したWindowsアプリケーションとそのソースコードが「Windows Forms Web Service Client」にあります。
オープンソース(GPL)の.NET開発環境であるSharpDevelopを使ってコード変換を行うこともできます。
変換できる言語は、バージョン4.4では、変換元がC#、VB.NET、変換先がC#、VB.NET、Python、Ruby、Booです。
メニューの[Project]-[Convert]で、現在開いているプロジェクト全体をコード変換できます。また、メニュー[Tools]-[Convert code to]で、現在開いているファイルをコード変換できます。
補足:C#からVB.NETへの変換は、Ver.0.96から付いた「C# to VB.NET converter」という機能で、VB.NETからC#への変換は、#develop Fidalgo Beta 1から付いた「VB.NET to C# converter」という機能でできます。
いままで紹介したようなサービスやツールを使わずに、コードを変換する奥の手を紹介しましょう。それは、MSILのDisassembler(逆アセンブラ)を使う方法です。
注意:Reflector for .NETは、バージョン7から有料化されました。
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」を変更します)。指定できる言語は、バージョン6.8では、IL、C#、Visual Basic(VB.NET)、Delph、MC++、Oxygene、F#です。
Reflector for .NETの有料化をきっかけに、dotPeek、CodeReflect、JustDecompileなど多くの無料のDisassemblerが登場しました。その一つが「ILSpy」です。ILSpyはSharpDevelopのチームが開発しており、オープンソース(MITライセンス)で配布されています。
コードの表示は、バージョン2.3では、C#、VB.NET、ILの選択が可能です。
以下に紹介するものは、すでに終了してしまったサービスや、ダウンロードできなくなってしまったツールです。
「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」を使用するに当たり、注意すべき点を幾つか紹介します。
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));
と変更すれば、大丈夫みたいです。
(この記事はメールマガジン「.NETプログラミング研究」の第11,12号で紹介したものを編集したものです。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。