0

app.config / web.configファイルのように、多くの場所で、この冗長な完全修飾名を使用してタイプを指定する必要があります。

<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

このMSDNサイトによると、

.NET Frameworkでアセンブリを参照する場合、アセンブリ名のみを指定する部分的なバインドは許可されていません。

わかりました。しかし、独自のカスタムトレースリスナーを定義する場合など、一部の場所で、ローカルにデプロイされた、名前が強くない独自のアセンブリを参照しているときに、部分的なバインディングを使用できないのはなぜですか。これにはもっと深い理由がありますか?

4

2 に答える 2

0

私はそれの一部がこれに関係していると想像します:

http://blogs.msdn.com/suzcook/archive/2003/05/30/57159.aspx

LoadWithPartialNameはv2で減価償却されました。これは、構成ファイルのアセンブリ名を処理するために多くの場所で使用されたと思います。

それは機能するはずですが(減価償却されただけで、削除されていません)、構成ファイルの処理方法など、それを呼び出すものすべてに内部的に変更が加えられたと思います。

于 2009-01-15T20:37:37.607 に答える
0

それはセキュリティの問題です。バインダーは、アセンブリを検索するときに、特定の一連のディレクトリに従います。悪意を持ってアプリケーションを破壊したい場合は、型を定義したアセンブリを適切な場所に配置できます。あなたのコードは、この署名されていない、信頼されていないアセンブリを読み込み、あなたのコードが実行している特権に関係なく、私のコードの実行を開始します。

第 2 に、バージョンは重要です。.net では GAC のアセンブリに更新されたポリシーを指定できるため、共有アセンブリに依存する展開済みアプリケーションを安全に更新できるからです。

最後に、.net では、異なる作成者または会社によって記述された可能性のある同じ型を定義する 2 つのアセンブリを使用することは完全に合法であるため、完全修飾名はコードが間違ったことをするのを防ぎます。

于 2009-01-15T20:38:55.247 に答える