我有一些使用 Net 2.0 构建的第三方程序集。虽然我当然可以在 net 4 中引用该程序集,但运行该应用程序会导致各种奇怪的错误。
所以我虽然将它加载到一个单独的应用程序域中会解决这个问题,但它没有。我假设它仍然使用 Net 4 运行时执行。有没有办法强制在不同的网络版本中执行应用程序域?
我使用 CreateInstanceFromAndUnwrap 而不是调用代理。
谢谢你的帮助
乔
我有一些使用 Net 2.0 构建的第三方程序集。虽然我当然可以在 net 4 中引用该程序集,但运行该应用程序会导致各种奇怪的错误。
所以我虽然将它加载到一个单独的应用程序域中会解决这个问题,但它没有。我假设它仍然使用 Net 4 运行时执行。有没有办法强制在不同的网络版本中执行应用程序域?
我使用 CreateInstanceFromAndUnwrap 而不是调用代理。
谢谢你的帮助
乔
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); }
您可以使用supportedRuntime配置元素来设置 AppDomain 的 CLR 版本。如果您不想将此添加到您的 app.config,您可以添加第二个 .config 文件,该文件将在构建新 AppDomain 期间使用。查看AppDomainSetup.ConfigurationFile了解更多信息。