-
Notifications
You must be signed in to change notification settings - Fork 757
Expand file tree
/
Copy pathDirectoryAnalyzerResolver.cs
More file actions
47 lines (41 loc) · 1.57 KB
/
DirectoryAnalyzerResolver.cs
File metadata and controls
47 lines (41 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Reflection;
namespace Microsoft.Diagnostics.Tracing.AutomatedAnalysis
{
/// <summary>
/// Analyzer resolver that searches the specified directory.
/// </summary>
[RequiresUnreferencedCode("Loads new assemblies")]
public class DirectoryAnalyzerResolver : AnalyzerResolver
{
private static string _baseDirectory;
/// <summary>
/// Create an instance of the DirectoryAnalyzerResolver pointing at the specified directory.
/// </summary>
/// <param name="baseDirectory">The directory to search for Analyzers.</param>
public DirectoryAnalyzerResolver(string baseDirectory)
{
_baseDirectory = baseDirectory;
}
protected internal override void Resolve()
{
string[] candidateAssemblies = Directory.GetFiles(_baseDirectory, "*.dll", SearchOption.TopDirectoryOnly);
foreach (string candidateAssembly in candidateAssemblies)
{
Assembly assembly = Assembly.LoadFrom(candidateAssembly);
if (assembly != null)
{
ConsumeAssembly(assembly);
}
}
Configuration configuration = new Configuration();
string[] filePaths = Directory.GetFiles(_baseDirectory, "*.config.xml");
foreach (string filePath in filePaths)
{
configuration.AddConfigurationFile(filePath);
}
ConsumeConfiguration(configuration);
}
}
}