18

.NETアセンブリが物理的にどこにあるかについて少し混乱しています。古き良きLINQを取ります。私のweb.configファイルには次のように書かれています。

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

これはLINQへの参照です。しかし、これが参照するDLLは正確にどこにありますか?上記にはパスがなく、binフォルダーにもありません。

また、サードパーティのアセンブリリファレンスだと思うものもあります。

<add assembly="MapInfo.CoreTypes, Version=4.0.0.483, Culture=neutral, PublicKeyToken=F548BCBA69D4B8DA" />

binフォルダにない場合、これが私のマシンのどこにあるかをどのように知ることができますか?

また、DLLファイルがbinディレクトリにある場合、それを参照する必要はないとweb.config思いますか?

4

6 に答える 6

15

にあるGACにあると思います%WINDIR%\Assembly。詳細については、.NETグローバルアセンブリキャッシュの謎を解く(The Code Project)を参照してください。

于 2010-02-08T02:51:21.430 に答える
9

サードパーティのアセンブリがGACに含まれていない可能性があります。一連のルールについては、 MSDNの記事「ランタイムがアセンブリを見つける方法」を参照してください。または、SysInternalsFILEMONを試してください

于 2010-02-08T03:08:25.620 に答える
6

一部の.Netアセンブリは、.Netのインストールフォルダにあります。

そのような

C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0

中にはアセンブリが座っています。1つ上のレベルの.NETFrameworkには、さまざまなバージョンの.NETとそれに対応するアセンブリがあります。

于 2014-01-27T20:29:38.973 に答える
5

アセンブリとフュージョンパスのプロービングはかなり複雑です。通常、.NETは次の2つの場所のいずれかからアセンブリを解決します。

  1. 現在のディレクトリ、binサブディレクトリ、またはFusionアセンブリバインディングロジックによって指定された他の場所などのローカルディレクトリにあります。

  2. グローバルGACストアにあり、アセンブリを登録して、名前、バージョン、およびその他のいくつかの属性で検索できます。

'bin'ディレクトリに関する特定の質問に対処するために、ASP.NET(への参照から推測しますweb.config)を使用している場合は、はい、パスを含める必要はありません-ASP.NETが処理します.NETで「bin」ディレクトリ内のアセンブリを検索するために必要なことは何でも。

于 2010-02-08T03:06:27.543 に答える
3

簡単な答えは:それは多くのものに依存します。フレームワークには、アセンブリのロード方法に関するルールがあります。ただし、さまざまな構成ファイル(machine.configなど)を使用してこれをオーバーライドできます。アセンブリが特定のシステムの実際に存在する場所を確認するには、Assembly BindingLogViewerを使用します。(これはプラットフォームSDKの一部です。SDKコマンドシェルを開いてfuslogvw.exeを実行するだけです。)

于 2010-02-08T03:51:30.567 に答える
3

アセンブリは、主に次のいずれかの場所にあります。

  • GAC -C:\ Windows \ Assembly \ GAC(Microsoftが提供し、場合によってはサードパーティによって提供されます)
  • インストールフォルダ(ほとんどのサードパーティ製コントロール)

プロジェクト参照でアセンブリを右クリックし、[プロパティ]を選択すると、アセンブリに関するパスやその他の情報を取得できます。

于 2010-02-08T08:42:08.117 に答える