3

製品を .NET 4.0 に変換し、更新されたコード アクセス セキュリティ モデルを使用して以来、問題が発生しています。基本的に、マシン上の GAC にインストールされている場合とインストールされていない場合があるコンポーネント ライブラリがあります。

誰かがこれらのライブラリを使用するデフォルトの部分信頼設定で XBAP を作成し、エンド ユーザーが XBAP をインストールすると (インストール中にライブラリがデプロイされます)、ライブラリが GAC にまだ存在していなければ問題なく動作します。

それらが GAC にあった場合、XBAP は実行時にセキュリティ例外で失敗します。問題はこれによるものだと思います: http://msdn.microsoft.com/en-us/library/aa970906.aspx

マネージ アセンブリがグローバル アセンブリ キャッシュ (GAC) にインストールされると、完全に信頼されるようになります。これは、ユーザーがそれらをインストールするための明示的なアクセス許可を提供する必要があるためです。それらは完全に信頼されているため、完全に信頼されたマネージド クライアント アプリケーションのみがそれらを使用できます。

それらは GAC からプルされるため、XBAP でデプロイされたまったく同じ .dll であるにもかかわらず、セキュリティがさらに強化されているようです。しかし、その場合、すべてが壊れます。

すべてのライブラリに AllowPartiallyTrustedCallersAttribute を追加する以外に、この問題を回避する方法はありますか?

または、XBAP が GAC でアセンブリを検索し、展開されている参照の正確なコピーを使用するのを防ぐ方法はありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

0

Visual Studio のソリューション エクスプローラーで参照をクリックし、プロパティ "SpecificVersion" を true に設定してみてください。参照時に指定されたパスと指定されたバージョンを調べるだけで、GAC で最新のものを探す必要はありません。

.net リファレンス固有のバージョン true または falseを参照してください。

参照の新しいバージョンを追加する場合は、現在の参照を削除する必要があることに注意してください。自動的に置き換えられるわけではありません。

于 2012-06-12T20:06:00.873 に答える