- PR -

起動時にTypeLoadExceptionが発生して起動できない

1
投稿者投稿内容
へたれプログラマ
会議室デビュー日: 2008/11/17
投稿数: 2
投稿日時: 2008-11-17 23:08
皆さん初めまして、今回初めて投稿させていただきます。

表題の件について、皆さんの助言をください。

当方では、
Windows XP SP2
.net2.0(C#)
VSTO(Excel)
を使用してWindowsアプリを作成しています。

現在、困ったことにアプリケーション起動時にTypeLoadExceptionが発生してアプリが起動しないという現象が発生しました。
そして、この現象は開発環境(VS2005)がインストールされていないPC上でのみ発生しています。

色々実験した結果、以下の様にプロジェクトを作ると発生するようです。


1.クラスライブラリプロジェクト(仮にOfficeProjectというプロジェクト名)で、VSTO(Excel)を扱うクラス
「ExcelModel」を作成します。

2.Windowアプリケーションプロジェクト(仮にAPP1というプロジェクト名)を作成し、参照設定でOfficeProjectを参照します。

3.App1にOfficeProjectのExcelModelを継承したXlsModelを作成します。

4.ExcelModelのメソッドに、COMオブジェクトを返り値にするVirtualメソッドを追加します。
例)
public virtual Microsoft.Office.Interop.Excel.Sheets GetSheets( )
{
return null;
}

5.XlsModelのメソッドに、GetSheetsをoverrideしたメソッドを追加します。
例)
public override Microsoft.Office.Interop.Excel.Sheets GetSheets( )
{
return null;
}
※メソッドの処理は、特に気にしないでください。

6.Form1のメンバ変数にしても、コンストラクタ内のローカル変数でもいいので、起動時にXlsModelが参照されるようにしてください。

7.App1をビルドし、開発環境がインストールされていない環境で実行をします。

以上の手順で、TypeLoadExceptionが発生します。

キーワードとしては、
 返り値にCOMオブジェクトを使用する。
 XlsModelとExcelModelを別プロジェクトにする。
です。

自力で調べていたのですが、ハマってしまい抜け出せない状態です。。。
皆さんの助言をいただけないでしょうか?
また、過去に出ている話題でしたら、教えていただけ無いでしょうか?

よろしくお願いします。
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-11-18 14:08
引用:

7.App1をビルドし、開発環境がインストールされていない環境で実行をします。



この環境に Office.dll や Microsoft.Office.Interop.Excel.dll
といった Office 関連の DLL は存在していますか?

_________________
Nakamura Blog
へたれプログラマ
会議室デビュー日: 2008/11/17
投稿数: 2
投稿日時: 2008-11-18 14:48
返信ありがとうございます。

チョー恥ずかしい事に、ご指摘通りプロジェクトでMicrosoft.Office.Interop.Excel.dllがローカルコピーされていませんでした。(^^

初歩的でくだらない質問をしてしまって本当にスミマセン。。。

なかむら様 ありがとうございました(_ _)
1

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