AssemblyInfo.cs
アセンブリ属性を使用するために情報を追加することは可能ですか?assembly:MyProjectAssembly,
そのため、MEF が rutime フォルダー内のアセンブリをスキャンするときに、MyProjectAssembly
.
MEFにはこの機能がないと思います。私は100%確かではありません。
あなたができることは、 System.Reflection の非常に強力な代替手段であるMono.Cecilを使用することです。Mono.Cecil
ロードせずに .NET アセンブリを検査 (および書き換えますが、それは別の話です) できます。これは、探している機能を簡単に追加できることを意味します。例えば:
public static bool AssemblyIncludesCustomAttribute(string assemblyPath, string customAttributeName)
{
if (assemblyPath == null) throw new ArgumentNullException("assemblyPath");
if (customAttributeName == null) throw new ArgumentNullException("customAttributeName");
AssemblyDefinition assemblyDef = AssemblyDefinition.ReadAssembly(assemblyPath);
return assemblyDef.CustomAttributes.Any(ca => ca.AttributeType.FullName == customAttributeName);
}
次に、次のように使用します。
var catalog = new AggregateCatalog();
string dirPath = @".\Extensions";
foreach (string assemblyFile in Directory.EnumerateFiles(dirPath, "*.dll"))
{
if (AssemblyIncludesCustomAttribute("Blah.dll", "System.Reflection.AssemblyConfigurationAttribute"))
{
catalog.Catalogs.Add(new AssemblyCatalog(assemblyFile));
}
}