我对.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
中引用吗?
答案 0 :(得分:14)
我认为它们位于%WINDIR%\Assembly
,位于{{1}}。更多信息位于 GAC (Demystifying the .NET Global Assembly Cache)。
答案 1 :(得分:7)
第三方程序集可能不在GAC中,请参阅MSDN文章 How the Runtime Locates Assemblies 以获取规则集。或者,尝试使用SysInternals FILEMON。
答案 2 :(得分:4)
装配和融合路径探测非常复杂。我会说通常.NET会从两个地方之一解析一个程序集:
它可以在本地目录中找到它,例如当前目录,bin子目录或Fusion程序集绑定逻辑指定的其他位置,或
它将在全局GAC商店中找到它,其中可以按名称,版本和其他几个属性注册和查找程序集。
要解决有关“bin”目录的特定问题,如果您使用的是ASP.NET(我假设您引用web.config
),那么是的,您不需要包含路径 - ASP.NET将处理它需要做的任何事情,以使.NET在'bin'目录中查找程序集。
答案 3 :(得分:4)
某些.Net程序集位于.Net
的安装文件夹中如
C:\ Program Files(x86)\ Reference 组件\微软\ Framework.NETFramework \ V4.0
里面有集会。在.NETFramework中,您可以找到不同版本的.NET及其相应的程序集。
答案 4 :(得分:2)
简短的回答是:它取决于很多事情。框架的rules用于加载程序集。但是,您可以使用各种配置文件(machine.config等)覆盖它。要查找程序集在特定系统上的实际位置,请使用Assembly Binding Log Viewer。 (它是平台SDK的一部分。只需打开SDK命令shell并运行fuslogvw.exe。)
答案 5 :(得分:2)
组装主要位于以下任何一个地方:
您可以通过右键单击项目引用中的程序集并选择 Properties 来获取有关程序集的路径和其他信息。