0

COM相互運用機能を介して外部アプリケーション(ExAppと呼びます)と統合するVisual Studio 2010 / .NET 4で小さなプログラム(dll)を開発しています。TlbImp.exe外部アプリケーションから提供されるものがないため、 を使用して自分で相互運用アセンブリを生成しています。ExApp には 3 つの一般的なバージョンがあり、それぞれが事実上同一の API を備えていますが、それぞれ異なる (そして互換性のない) 相互運用 dll が生成されています。現時点では、3 つの個別のインストーラーがあることを意味します。

  • v1my.dllに対してビルド/リンクされたインストーラーInterop.ExApp.dll
  • v2my.dllに対してビルド/リンクされたインストーラーInterop.ExApp.dll
  • v3my.dllに対してビルド/リンクされたインストーラーInterop.ExApp.dll

これよりも良い解決策があるはずです。

必要な install.exe が 1 つだけになるように Visual Studio / Windows インストーラーを構成するにはどうすればよいですか? インストーラーが ExApp のバージョンを検出し、対応するバージョンの と をインストールすることを意味しmy.dllますInterop.ExApp.dll

おまけの質問: ExApp API は意味のある変更がないため、あるバージョンの をコンパイルmy.dllして、インストールされているどのバージョンの ExApp でも動作するようにするにはどうすればよいですか?

4

2 に答える 2

1

プロジェクトの参照で、dllSpecific Versionが True または False に設定されていますか? True に設定されている場合は、False に設定してみてください。

これは明らかに、新しいバージョンが機能しなくなる (API の変更) ことを防ぐものではありませんが、とにかく現在はそうなっているようです。

于 2012-01-24T23:55:10.413 に答える
1

3 つの異なるファイル名で相互運用機能を構築し、アプリケーションでファクトリ パターンを作成して、実行時に使用するプロバイダーを決定してみませんか?

システムを検索して 3 つの相互に排他的なファイルの 1 つをインストールする方法を紹介できますが、そのような複雑さはインストーラーに属していないと思います。とにかく、相互運用を作成しているアプリケーションを誰かがアップグレードした場合、それはバラバラになります。

于 2012-01-25T13:29:55.400 に答える