0

我有一些使用 Net 2.0 构建的第三方程序集。虽然我当然可以在 net 4 中引用该程序集,但运行该应用程序会导致各种奇怪的错误。

所以我虽然将它加载到一个单独的应用程序域中会解决这个问题,但它没有。我假设它仍然使用 Net 4 运行时执行。有没有办法强制在不同的网络版本中执行应用程序域?

我使用 CreateInstanceFromAndUnwrap 而不是调用代理。

谢谢你的帮助

4

2 回答 2

0
  1. 创建应用程序域。并在新域中创建 DomainManager:MarshalByRef 对象。
  2. DomainManager 加载程序集到创建的(新)域。

AppDomainSetup ads = new AppDomainSetup(); AppDomain managerAD = AppDomain.CreateDomain("AD1", null, ads);

      Assembly asm = managerAD.Load(typeof(DomainManager).Assembly.FullName);
      string typeName = typeof(DomainManager).FullName;

      DomainManager manager = (DomainManager)managerAD.CreateInstanceAndUnwrap(asm.GetName().Name,

类型名称);公共类 DomainManager : MarshalByRefObject {

    public void GetAppDomain(string assemblyFileName)
    {
      Assembly asm2 = Assembly.LoadFrom(assemblyFileName);
      Type neededType = asm2.GetType(<paste type>);
      object instance = Activator.CreateInstance(procType);
    }
于 2013-02-08T05:12:26.883 回答
0

您可以使用supportedRuntime配置元素来设置 AppDomain 的 CLR 版本。如果您不想将此添加到您的 app.config,您可以添加第二个 .config 文件,该文件将在构建新 AppDomain 期间使用。查看AppDomainSetup.ConfigurationFile了解更多信息。

于 2012-10-22T12:19:33.233 回答