2009-05-21 15 views
3

政府機関によって独自に検証されたdll(私が書いたもの)を使う必要があるアプリケーションがあります。私たちは、必要とされる再検証のために、非常にまれにdllを修正する予定です。私は私のアプリケーションでこのDLLが拾われてしまう不注意な変更を防ぎたい。 dllのハッシュコードを作成し、この特定のバージョンのみを使用するようにアプリケーションを設定する方法はありますか?私のアプリにDLLの特定のバージョンを使うように強制する

このようにして、誰かがdllのコードを変更した場合、アプリケーションをビルドして実行すると、アプリケーションがdllをロードできなくなります(変更されたため)。

アイデア/提案はありますか?

乾杯、

ジェームズ

答えて

4

は、この部分を行い、あなたのアセンブリの改ざん誰を防ぐため、しかし、あなたが事故でそれをやって、その後辞任停止しません。

私たちは主なアプリケーションを開始するために独立したプロセスを使用します。メインアプリを起動する前に、起動アプリMD5がすべての組み立てを見て、見たいものの一覧と比較します。何か変更があった場合、MD5が失敗してメインアプリが読み込まれません。

コンパイル時のチェックが本当に必要だった場合は、同じMD5比較を行い、変更があった場合はビルドに失敗したビルド前のステップを書くことができます。

2

私は、これは何をあなたはしないだろう、あなたのプロジェクト内のdll参照をクリックした場合は、そのプロパティで「特定のバージョン」を選択し、それをTrueに設定することができることを知っています後である?厳密な名前を使用して

フィル

+1

これは、提供動作します:ブログの記事の次のカップルが強い命名&バージョン管理であなたを助けるかもしれません新しいバージョンのアセンブリがビルドされると、バージョン番号がインクリメントされます。一意のビルド番号を持たないようにあなたのassmeblyバージョン番号を制御するならば、複数のビルドが同じバージョン番号を持つことができるので、十分な保護を提供しません。 –

1

ColinはStrong Namingを挙げているため、アセンブリに署名する際にはバージョン&の両方が含まれているため、アセンブリが鍵になります。

http://www.csharp411.com/net-assembly-faq-part-3-strong-names-and-signing/(グローバルアセンブリキャッシュについては、このの次の部分を読んでも価値があるかもしれません)

http://philippetruche.wordpress.com/2008/08/12/net-assembly-versioning-lifecycle/

関連する問題