我正在使用 VirtualPathProvider 来包含在编译时不可用的用户控件。 除了对实际包含该控件的 dll 的引用外,一切正常。
调用有控件的页面时找不到控件类型,除非我把dll放在bin文件夹下。
错误: 解析器错误 说明:解析服务此请求所需的资源期间发生错误。请查看以下具体的解析错误详细信息并适当修改您的源文件。
Parser Error Message: Could not load type 'App.Modules.ModuleA.Controls.Entity1Item'.
Source Error:
Line 1: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Entity1Item.ascx.cs" Inherits="App.Modules.ModuleA.Controls.Entity1Item" %>
我尝试处理所有重要的 AppDomain 事件(AssemblyResolve、TypeResolve 和 ReflectionOnlyAssemblyResolve),但没有为我的类型调用。
我在 TypeResolve 文档中看到,只要执行 Type.GetType 并且找不到类型,就会调用它。似乎 ASCX 在需要其类型时未触发事件...为什么?
谢谢! 亚历克斯
最佳答案
AssemblyResolve 事件应该可以解决这个问题,但是您需要在类型名称中指定程序集名称,例如
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Entity1Item.ascx.cs"
Inherits="App.Modules.ModuleA.Controls.Entity1Item, YourDynamicAssemblyName" %>
然后 AssemblyResolve 事件将触发,要求您加载“YourDynamicAssemblyName”。
关于c# - ASP.net UserControl 和 AppDomain TypeResolve,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843152/