我们与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被标记为“不安全”,您需要取消阻止这些文件:
答案 0 :(得分:0)
通过解除阻止Dlls解决了该问题。在文件属性中,您可以单击“取消阻止”。