VB6 コードから C# に変換する方法を知っている人はいますか?
私のためにこれを行うことができるツールはありますか?
これを行うために従うことができる移行プロセスはありますか?
VB6 コードから C# に変換する方法を知っている人はいますか?
私のためにこれを行うことができるツールはありますか?
これを行うために従うことができる移行プロセスはありますか?
VisualStudio は、VB6 から VB.NET への変換を行うためのウィザードを提供 (または少なくとも提供) します (これは、おそらく #develop の VB.NET <-> C# コンバーターによって助けられた、少しの作業で C# に変換できます)。私が最後にそれを使用したとき、自明ではないものについては、多くの手作業を行う必要があったため、これが大規模および/または重要なアプリケーションである場合は、おそらく手作業で書き直すか、移植する方がよいと思います.
少し生意気なように聞こえるかもしれませんが、あなたの脳は使用するのに最適なツールかもしれません. 書き直す価値があるかもしれません。
移植する必要はないかもしれません。VB6 を COM コンポーネントにすることはできますか? COM に移植し、C# から呼び出し、ジュディ裁判官に間に合うように帰宅します。
これを何度も行ってきた人として、これは簡単なプロセスではありません。この回答に記載されているように、VB6 to VB.Net ツールを使用してから、Reflector または SharpDevelop を使用して C# に変換できます。SharpDevelop 変換では、いくつかの注意事項があります。すべての配列参照を台無しにして、それらが関数呼び出しであると考え、すべての論理演算子がビットごとの論理演算子に変換されます (そして && ではなく & になります)。Reflector を使用すると、多くのものを失います。また、Visual Studio コンバーターは多くの大規模なプロジェクトで失敗し、ハングアップして完了しません。
コードを C# に変換したら、実際の作業を開始する必要があります。変換により、せいぜい 50% の作業が完了し、大量のものを修正する必要があり (コードに TODO が散らばっていることがわかります)、大量のものをリファクタリングし、最後に C# が残ります。あなたのVB6の表現 - あなたが本当になりたい場所ではない非常に素晴らしいVB6コードを持っていない限り。また、適切な DotNet 関数を使用するのではなく、すべてのコードを VB ヘルパーで散らかします (examples0 の場合、すべての文字列関数はクラス オブジェクトではなくヘルパーです。バリアントをすべて使用した場合は、それらすべてを書き直す必要があります。多くの API 呼び出しは、書き換えが必要になる傾向があります。
最終的にはベースを取得しますが、大規模なプロジェクト (20 ~ 30 のフォーム、30 のクラス、30 のモジュール) を変換するには、数か月かかる場合があります。ただし、ゼロから書き直すと 2 倍の時間がかかり、すべてのビジネス ロジックが失われます。したがって、それは可能ですが (私は 3 つまたは 4 つの大きなプロジェクトでそれを実行しました)、万能薬も特効薬もありません。
新しいバージョンのVisualStudioでプロジェクトを開き、コードをVB.Netに変換してから、.Net ReflectorをダウンロードしてC#変換を支援します。
幸運を!
Artinsoft (現在はMobilize.Netに名前が変更されています) はまさにこれを行います。具体的にはVisual Basic Upgrade Companionです。
ただし、VBUC を使用した後でも、手動で移行/検証する必要があるシステムの部分がまだいくつかあります。しかし、それは通常、元の問題のはるかに小さなセットです。また、過去の移行の経験により、移行の問題の一部は解決されています。
Artinsoft は、theraccoonbear の投稿で言及されている、Visual Studio に同梱されているウィザードを構築したのと同じ会社です。ただし、私の間違いでなければ、ウィザードは VB6 を VB.Net に移行するだけです。
完全な開示:私はArtinsoftで働いています
簡単に言うと、VB6とVB.NET(およびその結果としてC#)は別個の言語ですが、関連する言語です。2つのプラットフォームの間には、多くの微妙な違い(整数はInt16ではなくInt32)と大きな違い(グラフィックス、フォーム、および印刷エンジン)があります。これを、まったく別のプラットフォームに変換する場合と同じように扱う必要があります。
私が使用する2つの無料のものがあります:
http://www.carlosag.net/Tools/CodeTranslator/
http://www.developerfusion.co.uk/utilities/convertcsharptovb.aspx
Microsoft は、ArtinSoft の Visual Basic Upgrade Companion (VBUC)を推奨しています。
Microsoft と ArtinSoft は提携して、無料の VBUC ライセンスを提供しています。以下の割引コードを使用して、最大 10,000 行の VB6 コードのアプリケーションを VB.NET または C# に無料で移行できるライセンスを購入できます。より大きなライセンスを購入するときにも適用できます。
完璧ではありません。結果として得られるコードは、コンパイルするまで多くの手作業による修正が必要ですが、それでもこのツールは試してみる価値があります。
自問すべき 1 つの質問は、VB.NET ではなく C# を使用することがどれほど重要かということです。大規模なアプリケーションを変換する場合は、安価な VB.NET にアップグレードする必要があります。
VB6 にはいくつかの機能があり、C# にはまったく同等のものはありません (エラー処理、レイト バインディングなど)。それらをサポートしている VB.NET にアクセスできるのに、それらを手動で変換する価値がある理由を自問してください。
そして、あなたが私を信じないなら (そして、誰も私の答えに投票していない、すすり泣く!) たぶん、私に同意するFrancesco Balenaと Dan Appleman ( Moving to VB.NETという本の中で) を信じるでしょう。
GreatMigrations では、これを手作業で行っています。手を使って VB6/COM コンパイラを開発しています。コンパイラは、VBP (または関連する VBP のグループ) と参照される COM ライブラリを読み取り、「セマンティック モデル」を構築します。このモデルは、定義されたすべての情報構造とソース システムによって実行される操作を完全かつ正確に記述するシンボル テーブルとオペコード ストリームの非常に詳細なセットです。
次に、このツールは、.NET との互換性を高めるためにモデルを変更および再構築する一連のアルゴリズムを適用し、オプションでカスタム変換を適用します。たとえば、COM コンポーネントを .NET クラスに置き換える場合などです。変換ルールは人によって設計され、独自の要件を満たすために「手作業で」作成されます。
最後に、モデルが「実行」されますが、データ モデルを割り当てて操作を実行する代わりに、ターゲット プラットフォームの表記法でファイル構造、データ モデル、および操作を作成します。このアプローチを使用して、VB.NET と C# の両方を作成できます。また、このプロセスを使用して ASP サイトを ASPX に移行します (多方言の FORTRAN-to-C 製品もあります)。
このアプローチでは、最初の試行で本番対応のソフトウェアを生成することはできませんが、ツールの構成を変更して変換プロセスを再実行することにより、改善して「より良い」ソフトウェアを生成することができます。私たちのツールの利点は、再現性、速度、および柔軟性であり、アジャイルなツール支援リライト方法論を促進します。IMO、私たちのアプローチを活用する移行チームは、機能要件の再収集、手作業によるコーディング、およびテストではなく、再設計の代替案の評価、および開発プロセスの改善により多くのリソースを割り当てることで利益を得ることができます。最終的には、移行後のシステムの保守性が向上し、元のアプリケーション機能がより忠実に再現されるだけでなく、移行中の制御と可視性が向上します。
ツールの試用版は、gmStudio Trail Request Downloadから入手できます。これにより、最大 10K LOC の ASP/VB コードを試すことができ、最大 30 セッションまで実行できます。