通过COM实例化.NET类时,创建的AppDomain evidence的is null。
我正在尝试分析仅在AppDomain证据为空时才会出现的问题,并且我想在.NET中创建一个mcve,即无需在COM中注册该类并从那里打电话给它。为此,我需要一个空洞的AppDomain。
我该怎么做?将null
传递给AppDomain.CreateDomain时,会重复使用当前AppDomain的证据。
答案 0 :(得分:1)
实际上,无法在.Net 4.0 +中创建具有空证据的AppDomain。您的代码是否在早期版本上运行?
AppDomain.Evidence
属性返回内部AppDomain.EvidenceNoDemand
属性,两个getter的反编译源代码都在下面,
从源代码看来,任何app域都不能有空证据,无论它是通过COM还是通过托管程序集创建的。
public Evidence Evidence
{
[SecuritySafeCritical, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries"), SecurityPermission(SecurityAction.Demand, ControlEvidence=true)]
get
{
return this.EvidenceNoDemand;
}
}
internal Evidence EvidenceNoDemand
{
[SecurityCritical]
get
{
if (this._SecurityIdentity != null)
{
return this._SecurityIdentity.Clone();
}
if (!this.IsDefaultAppDomain() && this.nIsDefaultAppDomainForEvidence())
{
return GetDefaultDomain().Evidence;
}
return new Evidence(new AppDomainEvidenceFactory(this));
}
}