- PR -

VB6からVB.netに移行したアプリの実行について

1
投稿者投稿内容
こうき
会議室デビュー日: 2004/05/22
投稿数: 4
投稿日時: 2004-05-22 19:06
こんにちは。こうきと申します。

VB6からVB.net2003に移行ウィザードを使用してアプリを移行しました。
移行に使用したマシンはVS6、VS.net2003ともにインストールしており
移行後のアプリは問題なく実行できます。

このアプリを.net Framework1.1をインストールしたマシンに
コピーし実行したところ、
「共通言語ランタイムデバッグサービス」
「アプリケーションで、ハンドルできない例外が発生しました」
のメッセージが出て、実行できません。

どの部分でエラーが起きているか調べるためTrace.assret(false)を
入れて実行したところ

Public Sub New()
MyBase.New()
trace.assert(false) <-通過
If m_vb6FormDefInstance Is Nothing Then
If m_InitializingDefInstance Then
m_vb6FormDefInstance = Me
Else
Try
'スタートアップ フォームについては、最初に作成されたインスタンスが既定インスタンスになります。
If System.Reflection.Assembly.GetExecutingAssembly.EntryPoint.DeclaringType Is Me.GetType Then
m_vb6FormDefInstance = Me
End If
Catch
End Try
End If
End If
'この呼び出しは、Windows フォーム デザイナで必要です。
trace.assert(false) <-通過
InitializeComponent()
trace.assert(false) <-非通過




<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
trace.assert(false) <-非通過
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(USRG0000))
Me.components = New System.ComponentModel.Container()

上記ソースの「通過」としている部分のtrace.assertのみ表示されます。
InitializeComponent()内にtrace.assertがない状態でも同様の状況です。

.netで作成したアプリは.net Frameworkがインストールされていると
実行できると思っていたのですが、
他にも必要なものがあるのでしょうか?
もしくはVB6から移行した場合に必要なものがあるのでしょうか。

どなたか解決方法をご存知の方がいらっしゃったら教えていただけないでしょうか。
よろしくお願いします。
こうき
会議室デビュー日: 2004/05/22
投稿数: 4
投稿日時: 2004-05-22 19:32
こうきです。

追記です。
VB6のアプリでコモンコントロールとコモンダイアログを使っています。
どうもこれが引っかかっているみたいです。

ボタンとテキストボックスだけの簡単なアプリを作成し、
移行後、先ほど実行できないと言っていたマシンで実行したところ
問題なく実行できました。
そのアプリにリストビューを追加して再度移行後実行したところ
同じようにエラーが発生しました。

移行後に
AxInterop.ComctlLib.dll
Interop.ComctlLib.dll
といったのができているのでコモンコントロールはこのdllを使用して動くように
なっていると思うのですが、
これだけではだめなのでしょうか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-22 22:16
引用:

といったのができているのでコモンコントロールはこのdllを使用して動くように
なっていると思うのですが、



逆です。
それらの .dll は、VB6 付属のコモンコントロールを VB.NET で扱うために存在するものです。
コモンコントロールがそれらの .dll に依存して動作するわけではありません。

引用:

これだけではだめなのでしょうか?



駄目です。
元の VB6 が VB6 固有のコントロールを使っているなら、VB.NET に移行したアプリケーションもそのコントロールがインストールされていない環境では動作しません。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
こうき
会議室デビュー日: 2004/05/22
投稿数: 4
投稿日時: 2004-05-24 10:04
ありがとうございます。

思いっきり逆に勘違いしていました。
VB6のコモンコントロールはこれらのdllを通して.net Frameworkを
使用するのだと思っていました。

ただ疑問が残るのが、うまく実行できないマシンは、
VS6がインストールされていて、VB6の状態のアプリは実行できています。
コモンコントロールは問題なくインストールされているはずなんですが。
1

スキルアップ/キャリアアップ(JOB@IT)