2

私は COM をあまり扱っていないので、私の無知をお許しください。

背景: 私は VS 2010 でプロジェクトに取り組んでいます。C# ソリューションに統合された C# COM DLL と、セットアップ/展開プロジェクトもあります。セットアップ プロジェクトは、インストール時に COM .tlb ファイルを登録するように設定されています。

問題: 誰かが C# アプリケーションの最新バージョン、つまり最新の COM DLL をインストールしようとしたときに、以前のバージョンの C# アプリケーションとその COM DLL が PC に存在していました。これが発生すると、C# アプリケーションの両方のバージョンの COM 機能が壊れました。または、それが発生したと想定しています。

これは典型的な COM/DLL-Hell の動作ですか? 両方の C# アプリケーションをアンインストールし、1 つだけを再インストールすると、すべてが正常に戻ります。両方を同時にインストールすることはできないようです。

COM DLL プロジェクトの GUID を変更し、COM DLL プロジェクトの AssemblyVersion と AssemblyFileVersion を変更しようとしましたが、すべて結果がまちまちでした。これらの項目を変更すると、アプリケーションの新しいインストールは (すばらしい) 機能しますが、古い C# アプリケーションには機能する機能がありません。

注: COM 機能が失敗したときにスローされるエラーや例外はありません。COM 呼び出しは何もしていないように見えます。したがって、「静かに」失敗しています。

私はこれを研究しており、さまざまな変更を試みて実際に成功していません...おそらく私はこれについて間違った方法で考えています. これについてより多くの経験を持ち、私に洞察を与えることができる人は他にいますか?

4

1 に答える 1

0

マージ モジュールを使用して、com オブジェクトとその後続のバージョンをインストールできます。これにより、同じマシンで複数のバージョンを使用できます。マイクロソフトから:

マージ モジュールは、コンポーネントの特定のバージョンのスナップショットのようなものです。バージョンの競合を避けるために、コンポーネントの連続するバージョンごとに新しいマージ モジュールを作成する必要があります。

このリンクを確認してください:インストーラーとマージ モジュールの推奨事項

于 2012-12-21T21:41:09.967 に答える