我有3个项目(GUI,BL和DAL)的解决方案。 DAL程序集已签署并部署在GAC中。.NET程序集加载优先级
当我构建解决方案时,DAL被编译并且程序集放置在主项目的bin文件夹中。但是当我运行应用程序时,它会加载GAC版本而不是本地版本。为什么是这样?
我意识到,因为GAC中的版本不是最新版本,并且某些方法丢失了,尽管它编译得很好。
GAC是否优先于本地bin文件夹?
韩国社交协会提前
我有3个项目(GUI,BL和DAL)的解决方案。 DAL程序集已签署并部署在GAC中。.NET程序集加载优先级
当我构建解决方案时,DAL被编译并且程序集放置在主项目的bin文件夹中。但是当我运行应用程序时,它会加载GAC版本而不是本地版本。为什么是这样?
我意识到,因为GAC中的版本不是最新版本,并且某些方法丢失了,尽管它编译得很好。
GAC是否优先于本地bin文件夹?
韩国社交协会提前
简答题是,GAC优先于本地文件。
这是一个不同于我们在原生dll世界中使用的行为(不包括某些总是从SYSTEM32加载的系统dll,无论如何)。
为什么?
想象一下,如果程序集有一个错误,那么现在有多个应用程序使用相同的程序集,那么如何修复所有应用程序? 很难开始搜索所有驱动程序上的所有应用程序,因此更容易将单个程序集部署到GAC并一次性修复所有应用程序。
至于你的问题,如果你改变了API,你需要改变该程序集的程序集版本,这样Fusion融合引擎会选取本地文件夹中的版本。
Tks的答案,特别是关于版本控制的最后部分。 – Dante 2009-10-22 10:31:22