我使用VirtualPathProvider来加载在编译时不存在的控件(ascx)。因此,当请求某个路径结构时,VirtualPathProvider会重写指向ascx的路径,并加载包含该控件代码的dll。
除了加载dll之外,一切都很正常。我可以加载程序集,但网站找不到它。如果我把它放在bin文件夹中,一切都很好。
要加载我正在使用的程序集:
System.Reflection.Assembly.LoadFrom(file.FullName);如何加载此程序集以便在页面上呈现ascx时可以使用它?
同样,我可以将dll放在站点的bin文件夹中,但由于这是动态内容,我更喜欢将其全部隔离。
发布于 2011-07-26 22:48:24
所以你打电话给我
System.Reflection.Assembly.LoadFrom(file.FullName);但它不会抛出异常,但在渲染ascx文件时仍然找不到您的程序集?是否确实ascx文件引用了完全限定的程序集名称?
您可能需要处理AssemblyResolve事件:
AppDomain.CurrentDomain.AssemblyResolve += OnCurrentDomainAssemblyResolve
private static Assembly OnCurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name == "myDynamicAssemblyName") return _myPreviouslyLoadedDynamicAssemblyObtainedFromAssemblyLoadFrom;
return null;
}https://stackoverflow.com/questions/6831768
复制相似问题