原生DotNet应用程序将在首次使用时加载所有引用的程序集(及其引用).但是,ASP.NET将在首次访问时加载所有引用的程序集(及其引用).
这种理解是否正确?
有没有办法强制ASP.NET按需加载程序集(如本地应用程序)?
我想解决的具体方案是:
bin文件夹包含2个文件:A.dll和B.dll.
A.dll引用B.dll.
B.dll引用C.dll,这是系统中的其他位置.在这种情况下,C.dll丢失了.
A.dll由主应用程序加载(使用反射).
遇到的错误(无法加载文件或程序集......)与B.dll缺少的依赖关系有关.
如果缺少C.dll,我们希望应用程序正常运行,因为这是主应用程序的可选组件.
我们无法控制B.dll或C.dll的内容.
Iain.. 26
要回答第3点,可以在文件C:\ winnt\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config中找到导致第一次访问时加载bin文件夹中所有程序集的设置(取决于在你的环境).从该文件中删除提取物:
与通配符匹配的所有程序集都作为初始编译的一部分加载.
通过修改应用程序的web.config(不是全局DotNet)来包含Web服务程序集并排除通配符匹配,如果缺少可选的依赖项,应用程序似乎可以运行:
我们还在试验这个,所以不确定这是否能完全解决问题或有任何不寻常的副作用.
要回答第3点,可以在文件C:\ winnt\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config中找到导致第一次访问时加载bin文件夹中所有程序集的设置(取决于在你的环境).从该文件中删除提取物:
与通配符匹配的所有程序集都作为初始编译的一部分加载.
通过修改应用程序的web.config(不是全局DotNet)来包含Web服务程序集并排除通配符匹配,如果缺少可选的依赖项,应用程序似乎可以运行:
我们还在试验这个,所以不确定这是否能完全解决问题或有任何不寻常的副作用.