我们有一个Web应用程序,仅进行前端更改即可部署到许多网站,共享的后端部分在GAC中具有DLL,因此我们只需要更新一个DLL,所有站点都可以获得更新。
有没有一种方法可以在/ bin文件夹中用DLL覆盖GAC,以便在新功能发布之前对其进行测试?
Answers:
如果它具有与引用的DLL相同的版本号,则会使用GAC。
如果增加版本号,请使用新版本号重建网站,将新版本放在/ bin目录中,然后将使用该DLL。
如果您不想更改版本号,则很不走运。
.NET加载强命名程序集时,首先会尝试确定要使用的版本号。它首先通过引用执行此操作,然后查找发布者策略,然后在配置文件中查找绑定重定向。
完成此操作后,它将在GAC中查找组装,然后在指定的任何代码库中寻找,然后为DLL探索各种文件系统文件夹。如果在上述任何一个步骤中找到正确的版本程序集,它将停止。
如果您不更改强命名程序集的版本号,则.NET将在GAC中找到原始程序集的版本并停止查找。请注意,因为它会在找到一个时停止,并且因为首先在GAC中进行查找,所以除非您还指定了新的版本号,否则为程序集指定代码库将无济于事。
我已经能够使用<codebase>
Element在\ bin文件夹中的程序集覆盖GAC 。
通过<codebase version="1.2.3.4" href="https://stackoverflow.com/bin/MyAssembly.dll" />
在我的web.config文件中指定,我可以告诉我的应用程序使用此版本而不是GAC中指定的版本。
您可能还想看看<probing>
用于指定装配位置的元素?
我想我可能会说出与亚当·西尔斯(Adam Sills)相同的想法,但为我的理解重新措辞。通过我自己的测试,看起来是这样的:
我希望这是正确的...