正在加载的大会令

时间:2009-06-05 04:22:54

标签: .net assemblies

我有几个.Net程序集,相同的版本,相同的文件名,但位于不同的位置:

  1. 程序文件夹
  2. C:\视窗
  3. C:\ Windows \ System32下
  4. GAC
  5. 现在,首先要加载哪个位置的程序集?

3 个答案:

答案 0 :(得分:4)

.Net程序集与常规窗口.dll具有不同的搜索顺序。只有当程序集强名称签名时,才会首先检查GAC。如果程序集不在gac / not strong名称中,则在此之后检查本地文件夹。这是.net程序集搜索顺序的结束,不检查上面的1,2和3。

您可以通过为您的应用程序提供本地配置文件来更改.net查找程序集的位置。

此外,this post in the microsoft.public.dotnet.framework.aspnet group包含非常有用的信息。

答案 1 :(得分:1)

这看起来是一个合理的解释:http://www.ondotnet.com/pub/a/dotnet/2003/03/17/bindingpolicy.html

在MSDN上,以下内容也可能相关:http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx

答案 2 :(得分:0)

C:\ Windows和C:\ Windows \ System32与托管程序集探测无关。该框架不会在那里寻找组件。

首先在GAC / Application Folder中查找,然后在codebase / privatepath设置指向的文件夹中查找,如果在App.Config文件中指定的话。 (只有强名称的程序集才能放在GAC中。) 在探测它时,通过附加.dll或.exe检查多个组合,查看名为assembly.exe / .dll的文件夹,查找针对特定文化的程序集(如果需要)。

一个很好的工具,可以查看运行时检查装配分辨率失败的文件夹是Fusion Log Viewer。在VS命令提示符下输入“fuslogvw”。它显示由ApplicationName和Name

键入的条目