我对 .NET 程序集的物理位置有点困惑。好好老 LINQ. 。在我的 web.config 文件上写着:

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

这是对 LINQ 的引用。但是 this 引用的 DLL 到底位于哪里呢?上面没有任何路径,也不在我的bin文件夹中。

我还有我认为是第三方程序集的参考:

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

如果它不在我的机器上,我如何知道它位于哪里 bin 文件夹?

另外,如果 DLL 文件位于 bin 目录,我可以假设它不需要在 web.config?

有帮助吗?

解决方案

第三方组件可能不是 GAC ,请参阅MSDN文章中的 运行时如何定位组件 的针对该组的规则。或者,尝试Sysinternals的 FILEMON

其他提示

我认为它们存在于在 GAC ,该位于%WINDIR%\Assembly。更多信息可在 揭秘.NET全局组件缓存 (在的代码项目)。

装配和融合路径探测非常复杂。我想说,.NET 通常会从两个位置之一解析程序集:

  1. 它将在本地目录中找到它,例如当前目录、bin 子目录或 Fusion 程序集绑定逻辑指定的其他位置,或者

  2. 它将在全局 GAC 存储中找到它,可以在其中通过名称、版本和其他一些属性来注册和查找程序集。

为了解决有关“bin”目录的具体问题,如果您使用的是 ASP.NET(我假设您参考了 web.config),那么是的,您不需要包含路径 - ASP.NET 将处理它需要执行的任何操作,以使 .NET 在“bin”目录中查找程序集。

一些的.Net组件都位于净的安装文件夹

  

C:\程序文件(x86)\参考   组件\微软\ Framework.NETFramework \ V4.0

里面有坐在组件。在.NETFramework一个级别,你会发现.NET不同版本及其相应的组件。

在简短的回答是:这取决于很多事情。该框架有其规则了解它是如何加载组件。但是,您可以使用各种配置文件(machine.config中,等)覆盖。要找出你的组件的实际生活在特定的系统,请使用集绑定日志观众。 (平台SDK的它的一部分。只需打开一个SDK命令外壳并运行fuslogvw.exe。)

程序集主要可以在以下任一位置找到:

  • 广汽集团 -C: Windows assembly gac(在某些情况下提供的Microsoft和第三方提供)
  • 安装文件夹(大多数第三方控件)

您可以通过右键单击项目引用中的程序集并选择来获取有关程序集的路径和其他信息 特性.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top