【问题标题】:Create Dynamic Assembly On New App Domain在新的应用程序域上创建动态程序集
【发布时间】:2015-07-20 20:36:53
【问题描述】:

我正在尝试在单独的应用程序域上创建一个动态程序集,如下所示:

string webProfilesNamespace = ConfigurationManager.AppSettings["Profiles.Web.Namespace"];
AssemblyName webAName = new AssemblyName(webProfilesNamespace);
AppDomain webDomain = AppDomain.CreateDomain("WebDomain");
AssemblyBuilder webAsmBuilder = webDomain.DefineDynamicAssembly(webAName, AssemblyBuilderAccess.RunAndSave);

问题是我在拨打DefineDynamicAssebly 时不断收到此错误:

在程序集“mscorlib”中键入“System.Reflection.Emit.AssemblyBuilder”, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089' 是 未标记为可序列化。

我必须做什么才能在新创建的应用程序域上定义动态程序集?

【问题讨论】:

    标签: c# reflection reflection.emit


    【解决方案1】:

    在新应用域中调用DefineDynamicAssembly。也许使用AppDomainCallback 来做到这一点。我忘记了这个方法叫什么。

    【讨论】:

    • 方法名为 DoCallBack :)
    • 多么糟糕的名字。
    • 我不断收到错误消息,说它无法序列化调用 DoCallBack 的类...。我尝试将类标记为可序列化,但这似乎没有帮助。类必须是可序列化的有什么原因吗?
    • 是的,原因是它必须跨应用域进行序列化。您需要确保您的委托传递引用的任何内容都可以序列化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多