0

私のシナリオは、開発マシンで VB.NET アプリケーションを作成し、パッケージと配置ウィザードを使用して別のマシンに配布したいと考えています。

開発マシンのコードは完全に機能しますが、ターゲット マシンにインストールすると null 参照例外が発生します。

ターゲット マシンにアクセス データベースがあります。これは、開発マシンで使用している DB の正確なコピーです。私の接続文字列は app.config ファイルで定義されており、続行する方法がわかりません。

これは、接続文字列を格納する app.config ファイルです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
  <add name="connString"
       connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Dave\Documents\duraGadget.mdb"
       providerName="System.Data.OleDb" />
</connectionStrings>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>

これは私の Form1 ロードです (エラー メッセージに従って null ポインターが発生している場所)。

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    constring = ConfigurationManager.ConnectionStrings("connString").ConnectionString()

    Dim sql As String = "SELECT * FROM duragadget ORDER BY skuNo ASC"
    Dim connection As New OleDbConnection(constring)
    Dim dataadapter As New OleDbDataAdapter(sql, connection)
    Dim ds As New DataSet()
    connection.Open()
    dataadapter.Fill(ds, "dura")
    connection.Close()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "dura"

    DataGridView1.Columns(1).Width = 125
    DataGridView1.Columns(2).Width = 125
    DataGridView1.Columns(3).Width = 125
    DataGridView1.Columns(4).Width = 125
    DataGridView1.Columns(5).Width = 5000

End Sub

ターゲット マシンのエラー メッセージ ボックスのダイアログに表示されるエラー メッセージを次に示します。

このダイアログ ボックスの代わりに Just-In-Time (JIT) デバッグを呼び出す方法の詳細については、このメッセージの最後を参照してください。

** * **例外テキスト** * **** System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。DuraGadget.Form1.Form1_Load (オブジェクトの送信者、EventArgs e) で System.EventHandler.Invoke (オブジェクトの送信者、EventArgs e) で System.Windows.Forms.Form.OnLoad (EventArgs e) で System.Windows.Forms.Form.OnCreateControl () System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) で System.Windows.Forms.Control.CreateControl() で System.Windows.Forms.Control.WmShowWindow(Message& m) で System.Windows.Forms.Control .WndProc(Message& m) System.Windows.Forms.ScrollableControl.WndProc(Message& m) System.Windows.Forms.Form.WmShowWindow(Message& m) System.Windows.Forms.Form.WndProc(Message& m) at System .Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) System.Windows.Forms.Control.

** * **読み込まれたアセンブリ** * **** mscorlib アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.296 (RTMGDR.030319-2900)

CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

DuraGadget アセンブリ バージョン: 1.0.0.0 Win32 バージョン: 1.0.0.0

コードベース: file:///C:/Program%20Files/Default%20Company%20Name/DSN%20new%20Upgrade/DuraGadget.exe

Microsoft.VisualBasic アセンブリ バージョン: 10.0.0.0 Win32 バージョン: 10.0.30319.1 作成者: RTMRel

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

システム アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1001 作成者: RTMGDR

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Core アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Windows.Forms アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1002 作成者: RTMGDR

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System.Drawing アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1001 作成者: RTMGDR

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Runtime.Remoting アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100)

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

System.Data Assembly バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100)

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

System.Configuration アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 (RTMRel.030319-0100)

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Xml アセンブリ バージョン: 4.0.0.0 Win32 バージョン: 4.0.30319.1 作成者: RTMRel

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

** * **JIT デバッグ** * **** Just-In-Time (JIT) デバッグを有効にするには、このアプリケーションまたはコンピューターの .config ファイル (machine.config) の system.windows.forms セクションに jitDebugging 値が設定されている必要があります。アプリケーションは、デバッグを有効にしてコンパイルする必要もあります。

例えば:

JIT デバッグが有効になっている場合、未処理の例外は、このダイアログ ボックスで処理されるのではなく、コンピューターに登録されている JIT デバッガーに送信されます。

4

2 に答える 2

1

接続文字列のソースは次のとおりです。

Data Source=C:\Users\Dave\Documents\duraGadget.mdb

マシン上の exe へのパス:

C:/Program Files/Default Company Name/DSN new Upgrade/DuraGadget.exe

C:\Users\Dave ディレクトリが完全に存在しないため、(ターゲット マシン上の) 指定されたフォルダーに存在しないため、おそらく duraGadget ファイルを開くことができません。Windows XP だとおっしゃいましたが、XP には C:\Users フォルダがありません。そうそう。接続文字列のパスを更新します。

于 2013-04-09T23:49:52.150 に答える