我有几个.Net程序集,相同的版本,相同的文件名,但位于不同的位置:
现在,首先要加载哪个位置的程序集?
答案 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
键入的条目