2

プロジェクトで、アセンブリXXXXXへの参照を持ついくつかのdllファイルを使用する必要があります。プロジェクトにこのアセンブリの新しいバージョンがありますが、プロジェクトを実行するとエラーが発生しますCould not load file or assembly XXXXX, Version=XXXXX私はMSDNの記事RedirectingAssemblyVersionsを使用してこの問題を解決しようとしました。しかし、それは役に立ちません。パブリックトークンキーが異なるため、アセンブリのリダイレクトが機能しないようです。null古い組立品です。ただし、新しいアセンブリでは「xxxxxxxxxxx」という値があります。この問題をどのように解決できますか?

PS同様の質問はここにあります。ただし、違いは、公開トークンキーが異なることです。

4

2 に答える 2

0

XXXXX の新しいバージョンに対してビルドされた、使用している dll ファイルの新しいバージョンを取得する必要があります。

アセンブリ ルックアップの詳細については、http://msdn.microsoft.com/en-us/library/yx7xezcf.aspxを参照してください。

于 2012-11-13T11:44:03.527 に答える
0

共有 dll の公開鍵は、「man/dll-in-the-middle」攻撃からアプリを保護する必要があります。

ドット ネット ランタイムは、現在の sub.dll が main.exe がコンパイルされたときと同じ公開キーを持っていない場合、sub.dll で main.exe を開始することを正しく拒否します。

この問題を解決するには、次のことができます

  • main.exe を新しい sub.dll で再コンパイルします。
  • sub.dll の両方のバージョンが同じ公開鍵でコンパイルされていることを確認してください。あなたの場合、古い sub.dll にはキーがなかったため、 sub.dll から公開キーを削除できます (つまり、 ilmergeを使用)。
于 2012-11-13T11:53:58.453 に答える