.NET中的程序集位于物理位置?

我对.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被引用?


第三方程序集可能不在GAC中,请参阅MSDN文章运行时程序如何为这组规则找到程序集。 或者,尝试SysInternals FILEMON。


我认为它们位于位于%WINDIR%Assembly中的GAC。 更多信息在解密.NET全局程序集缓存(在代码项目中)。


装配和融合路径探测相当复杂。 我会说通常.NET会从两个地方之一解析程序集:

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

  • 它会在全球的GAC商店中找到它,其中程序集可以按名称,版本和其他一些属性进行注册和查找。

  • 要解决你关于'bin'目录的具体问题,如果你使用的是ASP.NET(我从你对web.config的引用中假设),那么是的,你不需要包含路径 - ASP.NET会为了使.NET在“bin”目录中查找程序集,请注意它需要做的任何事情。

    链接地址: http://www.djcxy.com/p/44437.html

    上一篇: Where are assemblies in .NET physically located?

    下一篇: .NET Load assemblies at runtime Again