MEF不加载DLL

时间:2018-12-13 12:15:42

标签: c# dll mef

我们与MEF战斗了好几天,而MEF并没有加载特定的DLL。

2018-12-10 09:58:32,762 [5] ERROR RfcServer.RfcServer The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.
1) No exports were found that match the constraint: 
ContractName    RfcServer.Definitions.ICryptManager
RequiredTypeIdentity    RfcServer.Definitions.ICryptManager

首先,我们在某种程度上增强了我们的应用程序,使我们使用CustomRefelctionContext来记录将从MEF中“看到”的类型:

public class CatalogFilter : CustomReflectionContext
{

    protected override IEnumerable<object> GetCustomAttributes(MemberInfo member, IEnumerable<object> declaredAttributes)
    {
        var memberName = member.ToString();
        var hasExportAttribute = declaredAttributes.FirstOrDefault(f => f is ExportAttribute) != null;

        // Log member name
        Console.WriteLine(memberName);

        // Default: No change
        return base.GetCustomAttributes(member, declaredAttributes);
    }

}

已将此实例提供给DirectoryCatalog(CustomReflectionContext)。根据输出,我们知道我们的应用程序未加载dll。

我们解决了

我们通过邮件中的zip文件将我们的应用程序提供给了另一个部门。解压缩文件后,某些(不是全部!)DLL被标记为“不安全”,您需要取消阻止这些文件:

Unblock a DLL

1 个答案:

答案 0 :(得分:0)

通过解除阻止Dlls解决了该问题。在文件属性中,您可以单击“取消阻止”。