private static ImmutableArray <AnalyzerReference> CreateAnalyzerReferencesFromPackages( ImmutableArray <HostDiagnosticAnalyzerPackage> analyzerPackages, HostAnalyzerReferenceDiagnosticReporter reporter, IAnalyzerAssemblyLoader?hostAnalyzerAssemblyLoader) { if (analyzerPackages.IsEmpty) { return(ImmutableArray <AnalyzerReference> .Empty); } Contract.ThrowIfNull(hostAnalyzerAssemblyLoader); var analyzerAssemblies = analyzerPackages.SelectMany(p => p.Assemblies); var builder = ImmutableArray.CreateBuilder <AnalyzerReference>(); foreach (var analyzerAssembly in analyzerAssemblies.Distinct(StringComparer.OrdinalIgnoreCase)) { var reference = new AnalyzerFileReference(analyzerAssembly, hostAnalyzerAssemblyLoader); reference.AnalyzerLoadFailed += reporter.OnAnalyzerLoadFailed; builder.Add(reference); } var references = builder.ToImmutable(); DiagnosticAnalyzerLogger.LogWorkspaceAnalyzers(references); return(references); }
protected DiagnosticAnalyzerService( Lazy <ImmutableArray <HostDiagnosticAnalyzerPackage> > workspaceAnalyzerPackages, IAnalyzerAssemblyLoader?hostAnalyzerAssemblyLoader, AbstractHostDiagnosticUpdateSource?hostDiagnosticUpdateSource, PrimaryWorkspace primaryWorkspace, IDiagnosticUpdateSourceRegistrationService registrationService, IAsynchronousOperationListener?listener = null) : this(new DiagnosticAnalyzerInfoCache(workspaceAnalyzerPackages, hostAnalyzerAssemblyLoader, hostDiagnosticUpdateSource, primaryWorkspace), hostDiagnosticUpdateSource, registrationService, listener) { }
public DiagnosticAnalyzerInfoCache(Lazy <ImmutableArray <HostDiagnosticAnalyzerPackage> > hostAnalyzerPackages, IAnalyzerAssemblyLoader?hostAnalyzerAssemblyLoader, AbstractHostDiagnosticUpdateSource?hostDiagnosticUpdateSource, PrimaryWorkspace primaryWorkspace) : this(new Lazy <ImmutableArray <AnalyzerReference> >(() => CreateAnalyzerReferencesFromPackages(hostAnalyzerPackages.Value, new HostAnalyzerReferenceDiagnosticReporter(hostDiagnosticUpdateSource, primaryWorkspace), hostAnalyzerAssemblyLoader), isThreadSafe : true), hostAnalyzerPackages, hostDiagnosticUpdateSource) { }