Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET中的程序集在物理上位于何处?_.net_Assemblies_File Structure - Fatal编程技术网

.NET中的程序集在物理上位于何处?

.NET中的程序集在物理上位于何处?,.net,assemblies,file-structure,.net,Assemblies,File Structure,我对.NET程序集的物理位置有点困惑。好好休息一下。在我的web.config文件中,它说: <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 这是对LINQ的引用。但是这个DLL的确切位置在哪里呢?上面没有任何路径,也不在我的bin文件夹中 我还有一个我认为是第三方组件参考: <add assembly="MapInf

我对.NET程序集的物理位置有点困惑。好好休息一下。在我的
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
中引用?

我认为它们位于,位于
%WINDIR%\Assembly
中。更多信息在(at)中。

装配和融合路径探测相当复杂。我要说的是,通常.NET将从以下两个位置之一解析程序集:

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

  • 它将在全局GAC存储中找到它,在那里可以注册程序集,并按名称、版本和一些其他属性进行查找


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

    第三方程序集可能不在中,有关规则集,请参阅MSDN文章。或者,试试系统内部组件。

    简单的回答是:它取决于很多事情。框架对如何加载程序集有自己的定义。但是,您可以使用各种配置文件(machine.config等)覆盖此设置。要找出程序集在特定系统上的实际位置,请使用。(它是平台SDK的一部分。只需打开SDK命令shell并运行fuslogvw.exe即可。)

    程序集主要位于以下任一位置:

    • -C:\Windows\Assembly\GAC(Microsoft 在某些情况下由第三方提供 (案例)
    • 安装文件夹(大多数 (第三方控制)

    通过右键单击项目引用中的程序集并选择属性,可以获取程序集的路径和其他信息。

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

    比如

    C:\ProgramFiles(x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.0


    里面有集会。在.NETFramework的上一层中,您可以找到.NET的不同版本及其相应的程序集。

    您的程序集可能位于URL
    file:///C:/Windows/Assembly/GAC/
    (希望我能强迫它成为一个链接)MapInfo.CoreTypes呢,如果它是第三方,它会在哪里?如果它已经在gac注册,可能就在那里。“它不在那儿吗?”佩特拉说。他们可能是同性恋。它们可能就是您安装它们的地方。就我个人而言,我希望GAC不存在,而是强制应用程序拥有自己的BIN目录。除非它只是使用dll作为引用添加,如这里的示例所示,在这种情况下,它位于程序文件下的某个位置。否。这些是参考程序集。它们是框架程序集,没有实际实现。