質問者
VB6からVS2008へのアップグレードが失敗する

質問
-
お世話になっております。
VB6からVS2015へのアップグレードを検討しています。
VB6から直接VS2015へは変換できないため、VB6⇒VS2008⇒VS2015と変換しようとしていますが、
VB6で作成したプロジェクトをVB2008で開いてアップグレードウィザードで変換を行った場合に、解析が終わって変換も進むのですが最後の最後でアップグレードに失敗してしまいます。
変換したファイルを出力しているフォルダを見ていると、途中まではフォームごとに3種類のファイル(vb、Designer.vb、resX)が作成されますが、途中からvbファイルしか作成されなくなります。(3種類のファイルが作成されている場合は、プロジェクトファイルにも何かしらの更新が発生しているのですが、vbファイルしか作成されなくなると、プロジェクトファイルも更新されなくなりました。)
同じ実装方法の別のプロジェクトの場合は、アップグレードウィザードが正常に完了します。
このような場合はどのようにすればアップグレードウィザードが正常に完了するかご存知のかたいらっしゃいますでしょうか。
少し思い当たることとしては、変換時のエラーが大量にありすぎて、ログファイルが大きくなりすぎているのかな、と考えています。
<変換が成功するプロジェクト>
・VB6のときのEXEファイルは、20MByteほど。
・変換成功時に作成されたログファイルは、19MByteほど。(※UpgradeReportは55MByte)
<変換が失敗するプロジェクト>
・VB6のときのEXEファイルは、49MByteほど。
- 編集済み ふふふのふ 2017年7月24日 1:51
すべての返信
-
Tak1waさん、返信ありがとうございます。
ログを確認しましたが、対策についてはとくに記載はありません。
アップグレードウィザードのエラーメッセージは、以下の文言のみです。
-------------------------------------------------------------------------------------------
アップグレードに失敗しました:アプリケーションによって例外が発生しました。
-------------------------------------------------------------------------------------------
イベントログには以下のログがありました。
-------------------------------------------------------------------------------------------
障害が発生しているアプリケーション名: vbu.exe、バージョン: 9.0.30304.0、タイム スタンプ: 0x47cd0138
障害が発生しているモジュール名: RSObjects.dll、バージョン: 9.0.30304.0、タイム スタンプ: 0x47ccfb82
例外コード: 0xc0000005
障害オフセット: 0x0003f042
障害が発生しているプロセス ID: 0x5a4
障害が発生しているアプリケーションの開始時刻: 0x01d3042900ac3497
障害が発生しているアプリケーション パス: C:\Program Files\Microsoft Visual Studio 9.0\VB\VBUpgrade\vbu.exe
障害が発生しているモジュール パス: C:\Program Files\Microsoft Visual Studio 9.0\VB\VBUpgrade\RSObjects.dll
レポート ID: aa801838-702b-11e7-b843-d43d7e888733
-------------------------------------------------------------------------------------------
- 編集済み ふふふのふ 2017年7月24日 6:19
-
Tak1waさん、返信ありがとうございます。
>> アップグレードに失敗しました:アプリケーションによって例外が発生しました。
>これのみですか?
はい、「アップグレードに失敗しました:アプリケーションによって例外が発生しました。」としか表示されません。
>アップグレードウィザードのエラー時ってもっと情報いろいろ出たような記憶があったのですが。
>情報がこれだけだとピンポイントで同じ現象にあった人しかわからないかもしれません。VB6で利用しているコンポーネントがインストールされていないと、その事がわかるようなメッセージは表示されます。ただ、今発生しているエラーは、上記内容のメッセージしか表示されず、エラーの原因がつかめいない状況です。
似たような現象にあった方がいればと思い、質問させていただきました。
-
参考にならない可能性がありますが、下記情報をお伝えします。
変換ができたプロジェクトが
OCXなどのサードパーティが含まれていないノーマルのものか?
そうでないか(含まれているか)?
という違いがあれば、下記内容が参考となるかもしれません。
ドイツの開発者にも、ふふふのふ様と似たようなエラーが発生した開発者がいらっしゃったようです。
Aktualisierung eines VB6-Projekts in VS 2008 funkt. nicht
[一部抜粋]
> Mit wachsender Komplexität und je mehr Fremdkomponenten (OCX) enthalten sind,
OCXなどのサードパーティが含まれているときに変換エラーが起きる可能性があるようです。
> Sollte es "nur" an der Projektdatei scheitern, so könnte diese manuell durch
どうやら新規プロジェクトを起こして手動でやったようです。
ただし、ocxについてはマイクロソフトさんや他の開発者様では次の提案があるようです。
[PRB] Visual Basic 6.0 のコントロールを Visual Studio .NET で使用するとエラーが発生する
Visual Studio 2008 Express Edition VB6 プロジェクトファイル(.vbp)変換 (4/30)
- 編集済み msuser_forum 2017年7月24日 21:15
- 回答の候補に設定 立花楓Microsoft employee, Moderator 2017年7月25日 0:13
-
msuser_forum さん、返信ありがとうございます。
また、ご連絡が遅くなり申し訳ありません。
変換できたプロジェクトも、変換できないプロジェクトも、同じサードパーティのツールが含まれています。
いろいろ試しているのですが、
プロジェクト内で参照しているフォームの数を減らしてからアップグレードを実行すると、
変換に成功することがわかりました。
似たような現象を経験したかたがいるかと思い質問させていただいたのですが、
平行してマイクロソフトさんのサポートへも問い合わせ中で、マイクロソフトさんからの回答でも似たような事例は
無いとのことでした。
現時点では、回避策としてはプロジェクトを分割するしかない状況です。
調査継続中なので、調査完了後に、また状況を投稿させていただきます。