LoginSignup
21
19

More than 3 years have passed since last update.

ストックしたら負けのVB6アプリの .NET 移行メモ

Last updated at Posted at 2015-09-11

VB6 → VB.Net のコンバーターは VisualStudio 2010 以降、搭載されなくなった

一旦、次の Visual Studio のいずれかで、古いバージョンの VB.Net にコンバートする必要あり

  • Visual Studio .NET (2002)
  • Visual Studio .NET 2003
  • Visual Studio 2005
  • Visual Studio 2008

Visual Studio 2008 (例)で VB6 ソースをコンバートする

コマンドプロンプトより:

$ "c:\Program Files\Microsoft Visual Studio 9.0\VB\VBUpgrade\VBUpgrade.Exe" (プロジェクト).vbp
Microsoft(R) Visual Basic アップグレード ツール バージョン 9.0.20913.0
Copyright(C) Microsoft Corporation.  All rights reserved.
Portions Copyright (C) Artinsoft Corporation

アップグレードしています。....................
例外が発生しました: 参照された コンポーネント を読み込めませんでした:
   (中略)
参照されたすべてのコンポーネントを含めて Visual Basic 6.0 をインストールすることを推奨します。アップグレードの前に、アプリケーションがコンパイルおよび実行されることを確認してください。

コンバートエラー解消

  • 推奨されたので Visual Studio 6.0 も入れる
  • コンポーネントを含む製品をインストールする
  • どうしても該当製品の入手が難しい場合、Visual Studio 6.0 で (プロジェクト).vbp を開いて、「プロジェクト」→「参照設定」から該当ライブラリファイルを消す

上記を行うことで、VBUpgrade.Exe でのコンバートは出来るようになり、サブディレクトリ OutDir 以下にコンバート結果が生成される

最新の Visual Studio へ更にコンバートする

$ start OutDir\(プロジェクト).vbproj

で開くと、変換ウィザードが起動する。最終的に (プロジェクト).sln が出来れば Ok。

ひたすら文法エラーを解消する

俺たちの戦いはこれからだ!Never End!
(そういって、数百件の文法エラーに立ち向かってゆく主人公)

(必要に応じて)VB6 のインストールされていない環境に移行する

現状だと、VB6関連の DLL が必要となってしまう。そのため、なるべく早く、VB6が無い環境に移行して、VB6 の DLL に依存していたコードを修正する。
(自分の経験だと、表関連のコントロールを、DataGridView まわりに改めなければいけなくなることが多かった)

その他(トラブルシューティング)

フォームのデザイナーが開けないケース

デザイナーで開こうとすると、「値を Null にすることはできません。パラメーター名: objectType」などというエラーが出て、「無視して続行する」を行わない限り、フォームデザイナーが開けない場合がある。

原因は全く不明だが、コードの方の Handles 句を一旦 ' Handles... 等とコメントアウトしてからだとデザイナーで開ける。一度、デザイナーで正常に開けると、コメントアウトを元に戻しても、普通に開くことが出来た。どういう理由で直るのか不明

(2019.10.04) 追記 <推奨作業>

コンバート作業自体は以上で Ok だが、今後メンテナンスする上では以下を実施しておくことを推奨する

  • インデントをタブだけにするか、スペースするだけかを統一する
  • 'UPGRADE_WARNING の全削除

これを後まわりにすると、svn blame git blame などで「その行がいつ修正されたかのトレースする」が面倒になる。全ソースが修正される最初のうちに、全ソースに修正が入る以上の対応を行っていた方がよい

参考文献

21
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
19