まず、Visual Studio 2010、Measurement Studio 2010プラグイン、C#、および.NET4.0を使用しています。
私のアプリケーションはUSBデバイスからデータを受信し、WaveformPlot()
[MeasurementStudioの一部]を使用してデータをグラフ化します。bin
デバッグモードとリリースモードでアプリケーションを正常に実行でき、開発用コンピューターのフォルダー内のEXEファイルを使用して直接正常に実行することもできます。
ただし、別のコンピューターで実行することはできません。ClickOnceを使用してインストールファイルとフォルダーを作成し、発行フォルダーを開発用コンピューターからクライアントコンピューターにコピーします。次に、インストールファイルを実行し、ClickOnceが.NETをダウンロードして(まだインストールされていない場合)、アプリケーションを開きます。アプリケーションは、利用可能な多くのCOMポートからCOMポートを選択するように求める最初のダイアログを表示します。これを行うと、コードが実行され、InitializeComponent()
その後、メインフォームが表示されます。
最初のボックスの後でメインフォームが開きません。ステートメントを使用Debug.WriteLine
して、私はそれをに絞り込むことができました
this.waveformPlot = new NationalInstruments.UI.WaveformPlot();
ここでクラッシュします。エラーメッセージなどは表示されません。他のコンピューターではなく、開発用コンピューターで正常に動作します。National Instruments DLLファイルを含めましたが、他のNationalInstrumentsコンポーネントは正常に初期化されています。そうでないのはこれだけです。アプリケーションはWindowsタスクマネージャーにしばらく表示され、10秒ほどで消えます。
私は何をすべきか?
アップデート1
Application.run
Stack Overflowに関する別の無関係な質問を読んだ後、とform1 mainform = new form1()
をtry-catchブロックに入れることができることに気付きました。
System.TypeInitializationException:「NationalInstruments.UI.Internal.WaveformPlotElement」の型初期化子がスローして例外をスローしました。-> System.IO.FileNotFoundException:ファイルまたはアセンブリ'NationalInstruments.Common.Native.dll'またはその依存関係の1つを読み込めませんでした。指定されたモジュールが見つかりませんでした。
少なくとも今は例外だとわかっているので、それに取り組み、不足しているDLLとその理由を特定し、この質問を更新します。
アップデート2
公開フォルダにあるアプリケーションファイルを確認しましたが、「NationalInstruments.Common.Native.dll」が含まれています。なぜロードできないのかわかりません。
アップデート3
クライアントコンピューターでNationalInstruments.Common.Native.dll
FusionLogViewerを実行したところ、が正常に読み込まれたことがわかりました。それでも、デバッグ例外メッセージはOPに示されているように表示されます。
ファイルまたはアセンブリ'NationalInstruments.Common.Native.dll'またはその依存関係の1つを読み込めませんでした
Fuslog Viewerは、すべてのアセンブリが正常にロードされたことを示しています。クライアントコンピュータをチェックしました。ただし、National Instruments DLLファイルには、「GACルックアップが失敗しました」という行がありますが、他のアセンブリにはありません。
DebugViewerは、を使用して印刷した例外を表示しますDebug.writeLine
。これは、NationalInstruments.Common.Native.dll
またはその依存関係の1つをロードできなかったことを示しています。
私は非常に混乱しています。
プロジェクトへの参照を追加しようとしました。逆コンパイラーを使用して参照を確認し、他のインストールプログラム(ClickOnce以外)を使用しましたが、どれも私をどこにも連れて行ってくれないようです。:(
アップデート4
昨日、アプリケーションが64ビットシステムに正常にインストールされ、実行されていることがわかりました。以前に試した2台のコンピューターは、32ビットのWindows7システムでした。私はそれがどういうわけか私を助けることができるかどうかを見たいと思っています。アプリケーションは、64ビットのWindows7開発ラップトップでコンパイルされました。プロジェクトプロパティの下の「ビルド」の「プラットフォーム」ドロップダウンメニューに「アクティブ(x86)」と表示され、プラットフォームターゲットとして「任意のCPU」があります。