0

相互運用機能を介して、多くのマネージアセンブリとActiveXおよびCOMコンポーネント(C ++で記述)を参照するマネージアプリケーションに強い名前を付けたいと思います。また、強い名前のアセンブリは弱い名前のアセンブリを参照できないため、特にActiveXとCOMの相互運用機能を処理するときに、どのような問題に備える必要があるのか​​、何に遭遇したのかを教えてください。

このアプリケーションのソリューションは大きいです。これは、マネージドC#、Vb.net、ネイティブC ++、およびマネージドC ++/CLIの50以上のプロジェクトで構成されています。したがって、あなたが提供する情報や実生活の話が多ければ多いほど、私はより良い準備をして頭痛から身を守ることができます。

ありがとう。

4

3 に答える 3

1

この種のビジュアルスタジオソリューションの実際の経験はまだありません。しかし、ここここの情報が、相互運用コンポーネントのアイデアを提供してくれることを願っています。

于 2009-11-19T08:03:45.030 に答える
1

.snk ファイルを確実に保存する以外に問題はありません。

アセンブリを使用するすべてのサード パーティ アセンブリには、依存関係内で言及されているアセンブリからのキーがあり、アセンブリが読み込まれるたびに、読み込まれたアセンブリがまだそのキーで署名されているかどうかがチェックされることに注意してください。これは、悪意のあるコードによってアセンブリが誤って配置されるのを防ぐために行われます。

これは、アセンブリの初期バージョンに署名するために使用された .snk ファイルを確実に保存しない限り、ユーザーに参照を再度追加するよう強制せずに新しいバージョンを出荷することができないことを意味します。そのため、.snk ファイルを保存し、特定のアセンブリの各バージョンに対してまったく同じファイルを使用します。アセンブリごとに異なる .snk ファイルを使用するか、すべてのアセンブリに 1 つのファイルを使用するかは問題ではないため、会社ごとに 1 つの .snk ファイルで十分です。

上記の詳細については、この質問この完全な回答を参照してください。

于 2009-11-19T08:09:01.453 に答える
1

これまでのところ、厳密な名前に関連する問題は発生していません (COM 相互運用アセンブリも使用しています)。厳密な名前のないサード パーティのアセンブリを取得した場合は、自分で署名することで、すべてのアセンブリに厳密な名前を付けることができます。

もちろん、相互運用アセンブリに厳密な名前を付けても、基礎となる COM DLL の変更や置換は保護されないため、相互運用アセンブリが強力な名前であっても、厳密な名前による "保護" は実際には COM コンポーネントにまで拡張されません。と名付けました。

于 2009-11-19T08:42:18.650 に答える