.NET中的程序集位于何处?

Pet*_*ras 15 .net assemblies file-structure

我对.NET程序集的物理位置有点困惑.拿好旧的LINQ.在我的web.config文件中它说:

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Run Code Online (Sandbox Code Playgroud)

这是对LINQ的引用.但是这个DLL到底在哪里?上面没有任何路径,它不在我的bin文件夹中.

我也有我认为的第三方汇编参考:

<add assembly="MapInfo.CoreTypes, Version=4.0.0.483, Culture=neutral, PublicKeyToken=F548BCBA69D4B8DA" />
Run Code Online (Sandbox Code Playgroud)

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

此外,如果DLL文件在bin目录中,我可以假设它不需要被引用web.config吗?

Joh*_*ker 14

我认为他们位于GAC,位于%WINDIR%\Assembly.更多信息在揭开.NET全局程序集缓存(在代码项目中).


Chr*_*s O 7

第三方程序集可能不在GAC中,请参阅MSDN文章运行时如何查找规则集的程序集.或者,尝试使用SysInternals FILEMON.


小智 6

一些 .Net 程序集位于 .Net 的安装文件夹中

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

里面是集会。在 .NETFramework 上一级,您会发现不同版本的 .NET 及其相应的程序集。

  • 不。这些是参考组件。它们只是骨架组件,没有实际的实现。 (2认同)

Bru*_*uce 5

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

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

  2. 它将在全局 GAC 存储中找到它,在那里可以按名称、版本和其他几个属性注册和查找程序集。

为了解决您关于“bin”目录的具体问题,如果您使用的是 ASP.NET(我从您web.config对为了使 .NET 在 'bin' 目录中查找程序集它需要做什么。