我们有一个 Web 应用程序,已部署到许多网站,仅需要更改前端,共享后端部分的 DLL 位于 GAC 中,因此我们只需更新该 DLL,所有网站都会获得更新。
有没有办法用/bin 文件夹中的 DLL 覆盖 GAC,以便在新功能发布之前对其进行测试?
最佳答案
如果它与引用的 DLL 具有相同的版本号,则使用 GAC。
如果您增加版本号,引用新版本号重建网站,将新版本放在/bin 目录中,则将使用该 DLL。
如果您不想更改版本号,那您就运气不好了。
当 .NET 加载强命名程序集时,它首先尝试确定要使用的版本号。它首先通过引用来执行此操作,然后查找 publisher policies ,然后它会查找 binding redirects在配置文件中。
完成此操作后,它会在 GAC 中查找程序集,然后在任意 codebase specified 中查找程序集。 ,然后它会探测 DLL 的各个文件系统文件夹。如果在这些步骤中的任何一个找到正确的版本程序集,它就会停止。
如果您不更改强命名程序集的版本号,.NET 将在 GAC 中找到原始程序集并停止查找。请注意,因为它在找到一个时就会停止,并且因为首先要查找 GAC,所以为程序集指定代码库不会有任何好处,除非您还指定了新的版本号。
关于asp.net - bin 和 gac 中都有 Dll,使用哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/981142/