1 interface inheriting from IAssemblySymbol
Microsoft.CodeAnalysis (1)
2 implementations of IAssemblySymbol
Microsoft.CodeAnalysis.CSharp (1)
Microsoft.CodeAnalysis.VisualBasic (1)
1454 references to IAssemblySymbol
Analyzer.Utilities.UnitTests (1)
ConfigurationSchemaGenerator (4)
ILLink.RoslynAnalyzer (11)
Metrics (59)
Metrics.Legacy (59)
Microsoft.AspNetCore.Analyzers (2)
Microsoft.AspNetCore.OpenApi.SourceGenerators (2)
Microsoft.CodeAnalysis (27)
Microsoft.CodeAnalysis.Analyzers (67)
Microsoft.CodeAnalysis.AnalyzerUtilities (59)
Microsoft.CodeAnalysis.BannedApiAnalyzers (74)
Microsoft.CodeAnalysis.CodeStyle (47)
Microsoft.CodeAnalysis.CodeStyle.Fixes (8)
Microsoft.CodeAnalysis.CSharp (26)
Microsoft.CodeAnalysis.CSharp.Scripting.UnitTests (1)
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (4)
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (14)
Microsoft.CodeAnalysis.EditorFeatures.UnitTests (7)
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler (1)
Microsoft.CodeAnalysis.Extensions.Package (36)
Microsoft.CodeAnalysis.ExternalAccess.OmniSharp (2)
Microsoft.CodeAnalysis.Features (44)
Microsoft.CodeAnalysis.Features.UnitTests (2)
Microsoft.CodeAnalysis.LanguageServer.Protocol (7)
Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers (67)
Microsoft.CodeAnalysis.PublicApiAnalyzers (59)
Microsoft.CodeAnalysis.ResxSourceGenerator (59)
Microsoft.CodeAnalysis.Test.Utilities (1)
Microsoft.CodeAnalysis.VisualBasic (19)
Microsoft.CodeAnalysis.Workspaces (93)
FindSymbols\FindReferences\DependentProjectsFinder.cs (12)
28/// name of the <see cref="IAssemblySymbol"/> defined by it.
36(IAssemblySymbol assembly, Project? sourceProject, SymbolVisibility visibility),
101/// cref="IAssemblySymbol"/> for both source and metadata symbols, and an optional <see cref="Project"/> if this
104private static Dictionary<IAssemblySymbol, (Project? sourceProject, SymbolVisibility maxVisibility)> GetSymbolOriginations(
107var result = new Dictionary<IAssemblySymbol, (Project? sourceProject, SymbolVisibility visibility)>();
111var assembly = symbol.OriginalDefinition.ContainingAssembly;
136(IAssemblySymbol assembly, Project? sourceProject) symbolOrigination,
164(IAssemblySymbol assembly, Project? sourceProject) symbolOrigination,
259(IAssemblySymbol assembly, Project? sourceProject) symbolOrigination,
284private static HashSet<string> GetInternalsVisibleToSet(IAssemblySymbol assembly)
307(IAssemblySymbol assembly, Project? sourceProject) symbolOrigination,
372var name = compilation.GetAssemblyOrModuleSymbol(peReference) is IAssemblySymbol { Name: string metadataAssemblyName }
FindSymbols\SymbolTree\SymbolTreeInfo.cs (8)
26/// will still incur a heavy cost (for example, getting the <see cref="IAssemblySymbol"/> root symbol for a
120SearchQuery query, IAssemblySymbol assembly, SymbolFilter filter, CancellationToken cancellationToken)
127query, AsyncLazy.Create((IAssemblySymbol?)assembly), filter, cancellationToken);
131SearchQuery query, AsyncLazy<IAssemblySymbol?> lazyAssembly,
144SearchQuery query, AsyncLazy<IAssemblySymbol?> lazyAssembly, CancellationToken cancellationToken)
169AsyncLazy<IAssemblySymbol?> lazyAssembly, string name, CancellationToken cancellationToken)
215AsyncLazy<IAssemblySymbol?> lazyAssembly,
224IAssemblySymbol? assemblySymbol = null;
Microsoft.CodeAnalysis.Workspaces.MSBuild (2)
Microsoft.CodeAnalysis.Workspaces.MSBuild.UnitTests (8)
Microsoft.CodeAnalysis.Workspaces.UnitTests (3)
Microsoft.DotNet.ApiCompatibility (73)
ApiComparer.cs (22)
39public IEnumerable<CompatDifference> GetDifferences(IAssemblySymbol left,
40IAssemblySymbol right)
42return GetDifferences(new ElementContainer<IAssemblySymbol>(left, MetadataInformation.DefaultLeft),
43new ElementContainer<IAssemblySymbol>(right, MetadataInformation.DefaultRight));
47public IEnumerable<CompatDifference> GetDifferences(ElementContainer<IAssemblySymbol> left,
48ElementContainer<IAssemblySymbol> right)
61public IEnumerable<CompatDifference> GetDifferences(IEnumerable<ElementContainer<IAssemblySymbol>> left,
62IEnumerable<ElementContainer<IAssemblySymbol>> right)
75public IEnumerable<CompatDifference> GetDifferences(IEnumerable<IAssemblySymbol> left,
76IEnumerable<IAssemblySymbol> right)
78List<ElementContainer<IAssemblySymbol>> transformedLeft = [];
79foreach (IAssemblySymbol assemblySymbol in left)
81transformedLeft.Add(new ElementContainer<IAssemblySymbol>(assemblySymbol, MetadataInformation.DefaultLeft));
84List<ElementContainer<IAssemblySymbol>> transformedRight = [];
85foreach (IAssemblySymbol assemblySymbol in right)
87transformedRight.Add(new ElementContainer<IAssemblySymbol>(assemblySymbol, MetadataInformation.DefaultRight));
94public IEnumerable<CompatDifference> GetDifferences(ElementContainer<IAssemblySymbol> left,
95IReadOnlyList<ElementContainer<IAssemblySymbol>> right)
112public IEnumerable<CompatDifference> GetDifferences(IEnumerable<ElementContainer<IAssemblySymbol>> left,
113IReadOnlyList<IEnumerable<ElementContainer<IAssemblySymbol>>> right)
130IEnumerable<ElementContainer<IAssemblySymbol>> inputMetadata)
135foreach (ElementContainer<IAssemblySymbol> elementContainer in inputMetadata)
Rules\RuleContext.cs (8)
13private readonly List<Action<IAssemblySymbol?, IAssemblySymbol?, MetadataInformation, MetadataInformation, bool, IList<CompatDifference>>> _onAssemblySymbolActions = [];
19public void RegisterOnAssemblySymbolAction(Action<IAssemblySymbol?, IAssemblySymbol?, MetadataInformation, MetadataInformation, bool, IList<CompatDifference>> action)
43public void RunOnAssemblySymbolActions(IAssemblySymbol? left, IAssemblySymbol? right, MetadataInformation leftMetadata, MetadataInformation rightMetadata, bool isSingleAssembly, IList<CompatDifference> differences)
45foreach (Action<IAssemblySymbol?, IAssemblySymbol?, MetadataInformation, MetadataInformation, bool, IList<CompatDifference>> action in _onAssemblySymbolActions)
Microsoft.DotNet.ApiCompatibility.Tests (206)
CustomSideNameTests.cs (8)
34IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax, enableNullable);
35IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax, enableNullable);
68ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(leftSyntax, enableNullable),
70ElementContainer<IAssemblySymbol> right = new(SymbolFactory.GetAssemblyFromSyntax(rightSyntax, enableNullable),
107ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(leftSyntax, enableNullable),
109ElementContainer<IAssemblySymbol> right = new(SymbolFactory.GetAssemblyFromSyntax(rightSyntax, enableNullable),
192ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(leftSyntax), new MetadataInformation("a.dll", "ref/net6.0/a.dll"));
193IReadOnlyList<ElementContainer<IAssemblySymbol>> right = SymbolFactoryExtensions.GetElementContainersFromSyntaxes(rightSyntaxes);
Rules\TypeMustExistTests.cs (26)
37IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax);
38IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax);
72IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax, enableNullable);
73IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax, enableNullable);
101IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax, enableNullable);
102IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax, enableNullable);
136IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntaxWithReferences(leftSyntax, new[] { forwardedTypeSyntax });
137IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax);
166IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntaxWithReferences(syntax, references);
167IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntaxWithReferences(syntax, references);
196IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax);
197IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax);
230IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax);
231IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax);
280IAssemblySymbol left = SymbolFactory.GetAssemblyFromSyntax(leftSyntax);
281IAssemblySymbol right = SymbolFactory.GetAssemblyFromSyntax(rightSyntax);
331ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(leftSyntax),
333IReadOnlyList<ElementContainer<IAssemblySymbol>> right = SymbolFactoryExtensions.GetElementContainersFromSyntaxes(rightSyntaxes);
406ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(leftSyntax),
408IReadOnlyList<ElementContainer<IAssemblySymbol>> right = SymbolFactoryExtensions.GetElementContainersFromSyntaxes(rightSyntaxes);
444ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(leftSyntax),
447IReadOnlyList<ElementContainer<IAssemblySymbol>> right = SymbolFactoryExtensions.GetElementContainersFromSyntaxes(rightSyntaxes);
468ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(forwardedTypeSyntax),
471IReadOnlyList<ElementContainer<IAssemblySymbol>> right = SymbolFactoryExtensions.GetElementContainersFromSyntaxes(rightSyntaxes, references);
491ElementContainer<IAssemblySymbol> left = new(SymbolFactory.GetAssemblyFromSyntax(forwardedTypeSyntax),
495IReadOnlyList<ElementContainer<IAssemblySymbol>> right = SymbolFactoryExtensions.GetElementContainersFromSyntaxes(rightSyntaxes, references);
Microsoft.DotNet.ApiDiff (17)
MemoryOutputDiffGenerator.cs (13)
31private readonly ConcurrentDictionary<string, IAssemblySymbol> _beforeAssemblySymbols;
32private readonly ConcurrentDictionary<string, IAssemblySymbol> _afterAssemblySymbols;
60Dictionary<string, IAssemblySymbol> beforeAssemblySymbols,
61Dictionary<string, IAssemblySymbol> afterAssemblySymbols,
70_beforeAssemblySymbols = new ConcurrentDictionary<string, IAssemblySymbol>(beforeAssemblySymbols);
71_afterAssemblySymbols = new ConcurrentDictionary<string, IAssemblySymbol>(afterAssemblySymbols);
92foreach ((string beforeAssemblyName, IAssemblySymbol beforeAssemblySymbol) in _beforeAssemblySymbols)
101foreach ((string afterAssemblyName, IAssemblySymbol afterAssemblySymbol) in _afterAssemblySymbols)
112private async Task ProcessBeforeAndAfterAssemblyAsync(string beforeAssemblyName, IAssemblySymbol beforeAssemblySymbol)
123if (_afterAssemblySymbols.TryGetValue(beforeAssemblyName, out IAssemblySymbol? afterAssemblySymbol))
144private async Task ProcessNewAssemblyAsync(string afterAssemblyName, IAssemblySymbol afterAssemblySymbol)
153private async Task<string> ProcessAfterAssemblyAsync(IAssemblySymbol afterAssemblySymbol, SyntaxNode? beforeParentNode = null, SemanticModel? beforeModel = null)
173private async Task<(SyntaxNode rootNode, SemanticModel model)> GetAssemblyRootNodeAndModelAsync(IAssemblySymbolLoader loader, IAssemblySymbol assemblySymbol)
Microsoft.DotNet.ApiDiff.Tests (8)
Microsoft.DotNet.ApiSymbolExtensions (44)
AssemblySymbolLoader.cs (25)
15/// Loads <see cref="IAssemblySymbol"/> objects from source files, binaries or directories containing binaries.
64public static (AssemblySymbolLoader, Dictionary<string, IAssemblySymbol>) CreateFromFiles(
75new Dictionary<string, IAssemblySymbol>());
94Dictionary<string, IAssemblySymbol> dictionary = [];
97if (loader._cSharpCompilation.GetAssemblyOrModuleSymbol(metadataReference) is IAssemblySymbol assemblySymbol &&
153public IReadOnlyList<IAssemblySymbol?> LoadAssemblies(params string[] paths)
165IAssemblySymbol?[] assemblySymbols = new IAssemblySymbol[assembliesToReturn.Count];
170assemblySymbols[i] = symbol as IAssemblySymbol;
179public IReadOnlyList<IAssemblySymbol?> LoadAssembliesFromArchive(string archivePath, IReadOnlyList<string> relativePaths)
217IAssemblySymbol?[] assemblySymbols = new IAssemblySymbol[metadataReferences.Length];
223_cSharpCompilation.GetAssemblyOrModuleSymbol(metadataReference) as IAssemblySymbol :
233public IAssemblySymbol? LoadAssembly(string path)
238IAssemblySymbol? assemblySymbol = _cSharpCompilation.GetAssemblyOrModuleSymbol(metadataReference) as IAssemblySymbol;
245public IAssemblySymbol? LoadAssembly(string name, Stream stream)
260IAssemblySymbol? assemblySymbol = _cSharpCompilation.GetAssemblyOrModuleSymbol(metadataReference) as IAssemblySymbol;
267public IAssemblySymbol LoadAssemblyFromSourceFiles(IEnumerable<string> filePaths, string? assemblyName, IEnumerable<string> referencePaths)
296public IEnumerable<IAssemblySymbol> LoadMatchingAssemblies(IEnumerable<IAssemblySymbol> fromAssemblies, IEnumerable<string> searchPaths, bool validateMatchingIdentity = true, bool warnOnMissingAssemblies = true)
298List<IAssemblySymbol> matchingAssemblies = [];
299foreach (IAssemblySymbol assembly in fromAssemblies)
315if (symbol is IAssemblySymbol matchingAssembly)
Microsoft.DotNet.ApiSymbolExtensions.Tests (16)
AssemblySymbolLoaderTests.cs (13)
115IAssemblySymbol assembly = SymbolFactory.GetAssemblyFromSyntax("namespace MyNamespace { class Foo { } }");
123IAssemblySymbol assembly = SymbolFactory.GetAssemblyFromSyntax("namespace MyNamespace { class Foo { } }");
128IEnumerable<IAssemblySymbol> symbols = loader.LoadMatchingAssemblies(new[] { assembly }, paths);
139IAssemblySymbol fromAssembly = SymbolFactory.GetAssemblyFromSyntax(SimpleAssemblySourceContents, assemblyName: assemblyName);
157IEnumerable<IAssemblySymbol> matchingAssemblies = loader.LoadMatchingAssemblies(new[] { fromAssembly }, new[] { outputDirectory });
169IAssemblySymbol fromAssembly = SymbolFactory.GetAssemblyFromSyntax(SimpleAssemblySourceContents, assemblyName: assetInfo.TestAsset.TestProject.Name);
173IEnumerable<IAssemblySymbol> matchingAssemblies = loader.LoadMatchingAssemblies(new[] { fromAssembly }, new[] { assetInfo.OutputDirectory }, validateMatchingIdentity: validateIdentities);
196IEnumerable<IAssemblySymbol> symbols = loader.LoadAssemblies(assetInfo.OutputDirectory);
215IAssemblySymbol symbol = loader.LoadAssembly(Path.Combine(assetInfo.OutputDirectory, assetInfo.TestAsset.TestProject.Name + ".dll"));
250IEnumerable<IAssemblySymbol> symbols = loader.LoadAssemblies(outputDirectory);
321IAssemblySymbol symbol = loader.LoadAssembly(testProject.Name, stream);
340(AssemblySymbolLoader loader, Dictionary<string, IAssemblySymbol> symbols) = AssemblySymbolLoader.CreateFromFiles(
363(AssemblySymbolLoader loader, Dictionary<string, IAssemblySymbol> symbols) = AssemblySymbolLoader.CreateFromFiles(
Microsoft.DotNet.GenAPI (10)
Microsoft.DotNet.GenAPI.Tests (7)
Microsoft.Extensions.Logging.Generators (2)
Microsoft.Extensions.Options.SourceGeneration (1)
Microsoft.Gen.Logging (1)
Microsoft.Gen.Metrics (1)
Microsoft.Interop.ComInterfaceGenerator (1)
Microsoft.Interop.LibraryImportGenerator (1)
Microsoft.Interop.LibraryImportGenerator.Downlevel (1)
Microsoft.Interop.SourceGeneration (1)
Microsoft.Maui.Controls.SourceGen (6)
Microsoft.ML.InternalCodeAnalyzer (3)
Microsoft.VisualStudio.LanguageServices (33)
Library\ObjectBrowser\AbstractListItemFactory.cs (17)
137private static bool IncludeMemberSymbol(ISymbol symbol, IAssemblySymbol assemblySymbol)
405public void CollectNamespaceListItems(IAssemblySymbol assemblySymbol, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
445var assemblySymbol = parentListItem is ReferenceListItem
456private sealed class AssemblySymbolComparer : IEqualityComparer<(ProjectId, IAssemblySymbol)>
458public bool Equals((ProjectId, IAssemblySymbol) x, (ProjectId, IAssemblySymbol) y)
461public int GetHashCode((ProjectId, IAssemblySymbol) obj)
465public async Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(
496if (compilation.GetAssemblyOrModuleSymbol(reference) is IAssemblySymbol referenceAssembly)
507public async Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(Project project, bool lookInReferences, CancellationToken cancellationToken)
524if (compilation.GetAssemblyOrModuleSymbol(reference) is IAssemblySymbol referenceAssembly)
535private static bool ContainsAccessibleTypeMember(INamespaceOrTypeSymbol namespaceOrTypeSymbol, IAssemblySymbol assemblySymbol)
548private static ImmutableArray<INamedTypeSymbol> GetAccessibleTypeMembers(INamespaceOrTypeSymbol namespaceOrTypeSymbol, IAssemblySymbol assemblySymbol)
564private static bool IncludeTypeMember(INamedTypeSymbol typeMember, IAssemblySymbol assemblySymbol)
654if (compilation.GetAssemblyOrModuleSymbol(reference) is IAssemblySymbol assemblySymbol)
743public void CollectTypeListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
775public void CollectMemberListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
Library\ObjectBrowser\AbstractObjectBrowserLibraryManager_ListItems.cs (5)
14internal void CollectMemberListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
17internal void CollectNamespaceListItems(IAssemblySymbol assemblySymbol, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
20internal void CollectTypeListItems(IAssemblySymbol assemblySymbol, Compilation compilation, ProjectId projectId, ImmutableArray<ObjectListItem>.Builder builder, string searchString)
23internal Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(Solution solution, string languageName, CancellationToken cancellationToken)
26internal Task<ImmutableHashSet<(ProjectId, IAssemblySymbol)>> GetAssemblySetAsync(Project project, bool lookInReferences, CancellationToken cancellationToken)
Microsoft.VisualStudio.LanguageServices.Implementation (2)
Roslyn.Diagnostics.Analyzers (68)
System.Private.CoreLib.Generators (1)
System.Text.Json.SourceGeneration (1)
System.Text.RegularExpressions.Generator (1)
Test.Utilities (6)
Text.Analyzers (68)