我想这样做,因此我的主AppDomain将ShadowCopyAssemblies
设置为true。
我能做些什么(例如可能是我缺少的清单设置)会让我的可执行文件中加载的第一个AppDomain将该属性设置为true,或者是我创建第二个AppDomain并拥有我的唯一选项程序在第二个域中完成大部分工作吗?
目标环境是自托管服务,但知道如何为控制台或Windows应用程序执行此操作也很有用。
答案 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。