当前位置:  开发笔记 > 后端 > 正文

如何阻止ASP.NET在第一次加载时从bin加载所有程序集

如何解决《如何阻止ASP.NET在第一次加载时从bin加载所有程序集》经验,为你挑选了1个好方法。

原生DotNet应用程序将在首次使用时加载所有引用的程序集(及其引用).但是,ASP.NET将在首次访问时加载所有引用的程序集(及其引用).

    这种理解是否正确?

    有没有办法强制ASP.NET按需加载程序集(如本地应用程序)?

    我想解决的具体方案是:

    bin文件夹包含2个文件:A.dllB.dll.

    A.dll引用B.dll.

    B.dll引用C.dll,这是系统中的其他位置.在这种情况下,C.dll丢失了.

    A.dll由主应用程序加载(使用反射).

    遇到的错误(无法加载文件或程序集......)与B.dll缺少的依赖关系有关.

    如果缺少C.dll,我们希望应用程序正常运行,因为这是主应用程序的可选组件.

    我们无法控制B.dllC.dll的内容.

Iain.. 26

要回答第3点,可以在文件C:\ winnt\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config中找到导致第一次访问时加载bin文件夹中所有程序集的设置(取决于在你的环境).从该文件中删除提取物:


    
        
            
        
    

与通配符匹配的所有程序集都作为初始编译的一部分加载.

通过修改应用程序的web.config(不是全局DotNet)来包含Web服务程序集并排除通配符匹配,如果缺少可选的依赖项,应用程序似乎可以运行:


    
        
            
            
        
    

我们还在试验这个,所以不确定这是否能完全解决问题或有任何不寻常的副作用.



1> Iain..:

要回答第3点,可以在文件C:\ winnt\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config中找到导致第一次访问时加载bin文件夹中所有程序集的设置(取决于在你的环境).从该文件中删除提取物:


    
        
            
        
    

与通配符匹配的所有程序集都作为初始编译的一部分加载.

通过修改应用程序的web.config(不是全局DotNet)来包含Web服务程序集并排除通配符匹配,如果缺少可选的依赖项,应用程序似乎可以运行:


    
        
            
            
        
    

我们还在试验这个,所以不确定这是否能完全解决问题或有任何不寻常的副作用.


这很棒,感谢帖子!我用它来排除早期绑定到非托管dll的.Net程序集,这导致可怕的无法找到程序集或其依赖项之一的异常.然后,为了能够在实际需要时找到unmanged dll,使用此处的LoadLibrary方法:http://stackoverflow.com/questions/377181/32-or-64-bit-dll-loading-from-net -managed码/ 652845#652845
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有