我有一些使用Net 2.0构建的第三方程序集。虽然我当然可以在net 4中引用该程序集,但运行该应用程序会导致各种奇怪的错误。
所以我虽然在一个单独的应用程序域中加载它将解决问题,但事实并非如此。我假设它仍然使用Net 4运行时执行。有没有办法强制在不同的网络版本中执行应用程序域?
我使用CreateInstanceFromAndUnwrap而不是调用代理。
感谢您的帮助
乔
答案 0 :(得分:0)
您可以使用supportedRuntime配置元素来设置AppDomain的CLR版本。如果您不想将其添加到app.config,则可以添加第二个.config文件,该文件将在构建新AppDomain期间使用。有关详细信息,请查看AppDomainSetup.ConfigurationFile。
答案 1 :(得分:0)
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,
的typeName); 公共类DomainManager:MarshalByRefObject {
public void GetAppDomain(string assemblyFileName) { Assembly asm2 = Assembly.LoadFrom(assemblyFileName); Type neededType = asm2.GetType(<paste type>); object instance = Activator.CreateInstance(procType); }