0

私はC# プロジェクトに参加しており、Sharepoint を使用しているため、MS Server 2008 で作業しています。

プロジェクトはコンパイルされ、サーバー上で正常に実行されるので、デプロイの時期だと思い、Visual Studio自体が提供するインストーラー プロジェクトを作成しました。

サーバーでインストーラーを実行してからプログラムを実行すると、問題なく動作します。しかし、ローカル マシンでこれを行うと、COM 参照が見つからないなどのメッセージが表示されます。

実際、このプロジェクトは実際に私の会社が提供する Visual Basic DLL を参照しており、インストーラーがそれをコピー/登録しない理由がわかりません。他の必要な DLL をうまく取得し、それをインストール フォルダー (Microsoft.IdentityModel.dll、Microsoft.SharePoint.Client.dll など) にコピーしました。

それを機能させるために何をすべきかについてのヒントはありますか?参照されている DLL の「コピー ローカル」プロパティにアクセスできません(グレー表示されています)。

編集:いくつかの写真、おそらく役立つでしょう:

http://hpics.li/2f6acc4

http://hpics.li/86e8b11

http://hpics.li/6697314

編集2:だから、私が思っていたのはもう少し複雑です。実際、元の DLL (GestionClevb6.dll) を単純に参照すると、プログラムで「unregistered class」エラーが発生します。しかし、生成された Interop.GestionClevb6.dll を参照すると、デプロイ プロジェクトに別の DLL が追加されていることに気付きます(依存関係だと思います)。そうそう。最終的に、GestionClevb6.dll と新しい DLL_Licence.dll の 2 つの DLL と、「Exception de HRESULT : 0x800AC352.」という新しいバグがあります。

4

1 に答える 1

2

COM 参照の欠落に関するエラーは、プロジェクトが COM クラスを参照していることを意味しますが、システム上で COM クラスが登録されていないプログラムを実行しようとしています。

セットアップ プロセスの過程でセットアップに COM-DLL を登録させる必要があります。自動では行われません!それ以外の場合、COM-DLL が登録されていないと、このエラーが発生します。それが機能するサーバーでは、DLLが以前に登録されていると思います。

インストーラーがそれ自体をコピー/登録しない理由がわかりません。

インストーラーは、登録する必要がある COM DLL であることをどのように認識する必要がありますか?

他の必要な DLL をうまく取得し、それをインストール フォルダー (Microsoft.IdentityModel.dll、Microsoft.SharePoint.Client.dll など) にコピーしました。

これらは、プロジェクトによって直接参照されるマネージ DLL です。登録する必要はありません。また、これらはマネージド参照 DLL であるため、参照の「ローカルにコピー」プロパティが適切に構成されている場合、「プロジェクト出力」の一部としてコピーされます。

ただし、これは COM-DLL では機能しません。とにかく役に立たないため、COM参照の「ローカルコピー」プロパティはありません.COMクラスを含むDLLは登録する必要があります。コピーするだけでは登録されません。

于 2014-04-16T10:12:55.167 に答える