阅读完MSDN文章运行时如何定位程序集和这篇文章后,我仍然不确定弱命名程序集在运行时是如何解析的。
例如,如果我在项目中引用了某个dll文件,编译并部署后,如果我只替换了实际在编译时被引用的旧版本dll文件,它是否会选择新版本的已引用的dll文件?如果项目文件中的引用指定了所引用程序集的版本等信息,是否会有影响?
欢迎任何启示。
阅读完MSDN文章运行时如何定位程序集和这篇文章后,我仍然不确定弱命名程序集在运行时是如何解析的。
例如,如果我在项目中引用了某个dll文件,编译并部署后,如果我只替换了实际在编译时被引用的旧版本dll文件,它是否会选择新版本的已引用的dll文件?如果项目文件中的引用指定了所引用程序集的版本等信息,是否会有影响?
欢迎任何启示。
如果程序集未在全局程序集缓存(GAC)中找到,则CLR将在“探测路径”中搜索它。默认情况下,此路径仅为包含EXE的目录。 CLR只会查找程序集名称匹配的程序集,并且将在找到第一个匹配项后停止搜索。
然后,CLR将检查[AssemblyVersion]编号。如果不匹配,则会引发异常,它不会继续寻找另一个具有相同名称的程序集。每当您遇到解决问题时,都需要使用Fuslogvw.exe实用程序。它会显示CLR查找和出现了什么问题。
你的问题的答案是肯定的,只要在程序集的引用属性中将Specific Version
设置为False
。