有没有办法配置初始AppDomain?

时间:2014-04-24 14:43:19

标签: c# .net appdomain

我想这样做,因此我的主AppDomain将ShadowCopyAssemblies设置为true。

我能做些什么(例如可能是我缺少的清单设置)会让我的可执行文件中加载的第一个AppDomain将该属性设置为true,或者是我创建第二个AppDomain并拥有我的唯一选项程序在第二个域中完成大部分工作吗?

目标环境是自托管服务,但知道如何为控制台或Windows应用程序执行此操作也很有用。

1 个答案:

答案 0 :(得分:4)

发布问题后,我发现这是一个可以传递到App.config文件的设置。您需要做的是设置配置设置<appDomainManagerType><appDomainManagerAssembly>,并将其指向包含AppDomainManager的第二个程序集。

配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
    <runtime>
      <appDomainManagerType value="DomainManager.ShadowDomainManager" />
      <appDomainManagerAssembly
         value="DomainManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    </runtime>
</configuration>

管理器:

using System;

namespace DomainManager
{
    public class ShadowDomainManager : AppDomainManager
    {
        public override void InitializeNewDomain(AppDomainSetup appDomainInfo)
        {
            base.InitializeNewDomain(appDomainInfo); //Currently does not do anything.
            appDomainInfo.ShadowCopyFiles = "true";
        }
    }
}

执行此操作将导致初始域加载ShadowCopyFiles设置为true。