Compilation 类

定义

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

public ref class Compilation abstract
public abstract class Compilation
type Compilation = class
Public MustInherit Class Compilation
继承
Compilation
派生

字段

名称 说明
_features

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

属性

名称 说明
Assembly

表示 IAssemblySymbol 正在创建的程序集。

AssemblyName

简单程序集名称,如果未指定,则为 null。

CommonAssembly

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonDynamicType

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonGlobalNamespace

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonObjectType

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonOptions

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonScriptClass

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonScriptGlobalsType

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonSourceModule

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonSyntaxTrees

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

DirectiveReferences

此编译的源代码中通过 #r 指令指定的唯一元数据引用。

DynamicType

此编译中类型“dynamic”的 TypeSymbol。

ExternalReferences

传递给编译构造函数的元数据引用。

GlobalNamespace

根命名空间,其中包含在源代码或引用的元数据中定义的所有命名空间和类型,合并到单个命名空间层次结构中。

IsCaseSensitive

如果这是区分大小写的编译,则返回 true;否则返回 false。 区分大小写会影响编译功能,例如名称查找,以及在有多个不同选项时选择要发出的名称(例如,虚拟方法和替代之间)。

Language

获取源语言(“C#”或“Visual Basic”)。

ObjectType

.NET System.Object 类型的 INamedTypeSymbol,如果此编译中没有 COR 库,则可能会有 TypeKind 错误。

Options

获取使用编译创建的选项。

ReferencedAssemblyNames

此编译直接引用的所有程序集的程序集标识。

References

所有元数据引用 - 传递给编译构造函数的引用,以及通过 #r 指令指定的引用。

ScriptClass

表示隐式脚本类的符号。 如果未在编译中定义类,则为 null。

ScriptCompilationInfo

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

SourceModule

获取 IModuleSymbol 通过编译所有源代码创建的模块。

SyntaxTrees

获取使用此编译创建的语法树(从源代码分析)。

方法

名称 说明
AddReferences(IEnumerable<MetadataReference>)

使用其他元数据引用创建新的编译。

AddReferences(MetadataReference[])

使用其他元数据引用创建新的编译。

AddSyntaxTrees(IEnumerable<SyntaxTree>)

使用其他语法树创建新的编译。

AddSyntaxTrees(SyntaxTree[])

使用其他语法树创建新的编译。

AppendDefaultVersionResource(Stream)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CheckTupleElementLocations(Int32, ImmutableArray<Location>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CheckTupleElementNames(Int32, ImmutableArray<String>)

检查是否提供了任何名称,其数字是否与预期的基数匹配。 返回元素名称的规范化版本(如果所有名称均为 null,则为空数组)。

CheckTupleElementNullableAnnotations(Int32, ImmutableArray<NullableAnnotation>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

ClassifyCommonConversion(ITypeSymbol, ITypeSymbol)

根据此编译的编程语言对转换sourcedestination进行分类。

Clone()

创建与具有不同符号实例的编译等效的新编译。

CommonAddSyntaxTrees(IEnumerable<SyntaxTree>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonBindScriptClass()

解析表示脚本容器(Script 类)的符号。 使用存储到 ScriptClassName 的容器类的全名来查找符号。

CommonClone()

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonContainsSyntaxTree(SyntaxTree)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateAnonymousTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Location>, ImmutableArray<Boolean>, ImmutableArray<NullableAnnotation>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateAnonymousTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Location>, ImmutableArray<Boolean>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateArrayTypeSymbol(ITypeSymbol, Int32, NullableAnnotation)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateArrayTypeSymbol(ITypeSymbol, Int32)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol, ITypeSymbol)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateErrorNamespaceSymbol(INamespaceSymbol, String)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateErrorTypeSymbol(INamespaceOrTypeSymbol, String, Int32)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateFunctionPointerTypeSymbol(ITypeSymbol, RefKind, ImmutableArray<ITypeSymbol>, ImmutableArray<RefKind>, SignatureCallingConvention, ImmutableArray<INamedTypeSymbol>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateFunctionPointerTypeSymbol(ITypeSymbol, RefKind, ImmutableArray<ITypeSymbol>, ImmutableArray<RefKind>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateNativeIntegerTypeSymbol(Boolean)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreatePointerTypeSymbol(ITypeSymbol)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreatePreprocessingSymbol(String)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateTupleTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Location>, ImmutableArray<NullableAnnotation>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateTupleTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Location>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateTupleTypeSymbol(INamedTypeSymbol, ImmutableArray<String>, ImmutableArray<Location>, ImmutableArray<NullableAnnotation>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonCreateTupleTypeSymbol(INamedTypeSymbol, ImmutableArray<String>, ImmutableArray<Location>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonGetAssemblyOrModuleSymbol(MetadataReference)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonGetCompilationNamespace(INamespaceSymbol)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonGetEntryPoint(CancellationToken)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonGetSemanticModel(SyntaxTree, Boolean)

获取给定SemanticModel的一个 syntaxTree 。 如果 Microsoft.CodeAnalysis.Compilation.SemanticModelProvider 为非 null,则尝试用于 Microsoft.CodeAnalysis.SemanticModelProvider.GetSemanticModel(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.Compilation,System.Boolean) 获取语义模型。 否则,它将使用 Microsoft.CodeAnalysis.Compilation.CreateSemanticModel(Microsoft.CodeAnalysis.SyntaxTree,System.Boolean)..

CommonGetSemanticModel(SyntaxTree, SemanticModelOptions)

获取给定SemanticModel的一个 syntaxTree 。 如果 Microsoft.CodeAnalysis.Compilation.SemanticModelProvider 为非 null,则尝试用于 Microsoft.CodeAnalysis.SemanticModelProvider.GetSemanticModel(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.SemanticModelOptions) 获取语义模型。 否则,它将使用 Microsoft.CodeAnalysis.Compilation.CreateSemanticModel(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SemanticModelOptions)..

CommonGetSpecialType(SpecialType)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonGetTypeByMetadataName(String)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonRemoveAllSyntaxTrees()

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonRemoveSyntaxTrees(IEnumerable<SyntaxTree>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonReplaceSyntaxTree(SyntaxTree, SyntaxTree)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonWithAssemblyName(String)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonWithOptions(CompilationOptions)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

CommonWithReferences(IEnumerable<MetadataReference>)

使用指定的引用创建新的编译。

CommonWithScriptCompilationInfo(ScriptCompilationInfo)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

ContainsSymbolsWithName(Func<String,Boolean>, SymbolFilter, CancellationToken)

如果源声明符号名称满足给定谓词,则返回 true。

ContainsSymbolsWithName(String, SymbolFilter, CancellationToken)

如果源声明符号名称与提供的名称匹配,则返回 true。 这可能比 ContainsSymbolsWithName(Func<String,Boolean>, SymbolFilter, CancellationToken) 谓词只是一个简单的字符串检查时更快。 name 区分大小写,具体取决于目标语言。

ContainsSyntaxTree(SyntaxTree)

如果此编译包含指定的树,则返回 true。 否则为 false。

CreateAnonymousTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Boolean>, ImmutableArray<Location>, ImmutableArray<NullableAnnotation>)

返回一个新的匿名类型符号,其中包含给定的成员类型、名称、源位置和可为 null 的批注。 默认情况下,匿名类型成员将只读。 VB 支持可写属性,可以通过传入 false 相应的位置来创建 memberIsReadOnly

CreateAnonymousTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Boolean>, ImmutableArray<Location>)

返回具有给定成员类型、名称和源位置的新匿名类型符号。 默认情况下,匿名类型成员将只读。 VB 支持可写属性,可以通过传入 false 相应的位置来创建 memberIsReadOnly

CreateArrayTypeSymbol(ITypeSymbol, Int32, NullableAnnotation)

返回一个新的 ArrayTypeSymbol,表示此编译中绑定到 COR 库基类型的数组类型。

CreateArrayTypeSymbol(ITypeSymbol, Int32)

返回一个新的 ArrayTypeSymbol,表示此编译中绑定到 COR 库基类型的数组类型。

CreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol, ITypeSymbol)

创建一个IMethodSymbolMethodKind进制运算符。BuiltinOperator 内置运算符通常为语言隐式支持的符号 bool int.operator ==(int v1, int v2) 创建,即使未为源或元数据中的该类型显式定义此类符号也是如此。

CreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol)

IMethodSymbol创建一元运算符的一MethodKind个对象BuiltinOperator。 内置运算符通常为语言隐式支持的符号 bool int.operator -(int value) 创建,即使未为源或元数据中的该类型显式定义此类符号也是如此。

CreateDefaultWin32Resources(Boolean, Boolean, Stream, Stream)

创建填充了默认 win32 资源的流。

CreateErrorNamespaceSymbol(INamespaceSymbol, String)

返回一个新的 INamespaceSymbol,表示具有给定名称的错误(缺失)命名空间。

CreateErrorTypeSymbol(INamespaceOrTypeSymbol, String, Int32)

返回一个新的 INamedTypeSymbol,表示给定容器中具有给定名称和 arity 的错误类型。

CreateFunctionPointerTypeSymbol(ITypeSymbol, RefKind, ImmutableArray<ITypeSymbol>, ImmutableArray<RefKind>, SignatureCallingConvention, ImmutableArray<INamedTypeSymbol>)

返回一个新的 IFunctionPointerTypeSymbol,表示绑定到此编译中的类型的函数指针类型。

CreateFunctionPointerTypeSymbol(ITypeSymbol, RefKind, ImmutableArray<ITypeSymbol>, ImmutableArray<RefKind>)

返回一个新的 IFunctionPointerTypeSymbol,表示绑定到此编译中的类型的函数指针类型。

CreateNativeIntegerTypeSymbol(Boolean)

返回表示本机整数的新 INamedTypeSymbol。

CreatePointerTypeSymbol(ITypeSymbol)

返回一个新的 IPointerTypeSymbol,表示绑定到此编译中的类型的指针类型。

CreatePreprocessingSymbol(String)

返回一个新的 IPreprocessingSymbol,表示具有给定名称的预处理符号。

CreateTupleTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Location>, ImmutableArray<NullableAnnotation>)

返回一个新的 INamedTypeSymbol,其中包含给定的元素类型和(可选)元素名称、位置和可为 null 的批注。

CreateTupleTypeSymbol(ImmutableArray<ITypeSymbol>, ImmutableArray<String>, ImmutableArray<Location>)

返回具有给定元素类型、名称和位置的新 INamedTypeSymbol。

CreateTupleTypeSymbol(INamedTypeSymbol, ImmutableArray<String>, ImmutableArray<Location>, ImmutableArray<NullableAnnotation>)

返回具有给定基础类型和(可选)元素名称、位置和可为 null 注释的新 INamedTypeSymbol。 基础类型需要与元组兼容。

CreateTupleTypeSymbol(INamedTypeSymbol, ImmutableArray<String>, ImmutableArray<Location>)

返回具有给定的基础类型和元素名称和位置的新 INamedTypeSymbol。 基础类型需要与元组兼容。

Emit(Stream, Stream, Stream, Stream, IEnumerable<ResourceDescription>, EmitOptions, CancellationToken)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

Emit(Stream, Stream, Stream, Stream, IEnumerable<ResourceDescription>, EmitOptions, IMethodSymbol, CancellationToken)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

Emit(Stream, Stream, Stream, Stream, IEnumerable<ResourceDescription>, EmitOptions, IMethodSymbol, Stream, IEnumerable<EmbeddedText>, CancellationToken)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

Emit(Stream, Stream, Stream, Stream, IEnumerable<ResourceDescription>, EmitOptions, IMethodSymbol, Stream, IEnumerable<EmbeddedText>, Stream, CancellationToken)

将编译的源代码的 IL 发出到指定的流中。

EmitDifference(EmitBaseline, IEnumerable<SemanticEdit>, Func<ISymbol,Boolean>, Stream, Stream, Stream, CancellationToken)

发出编译与上一代编辑并继续之间的差异。 差异表示为添加和更改的符号,并作为元数据、IL 和 PDB 增量发出。 当前编译的表示形式作为 EmitBaseline 返回,以便在后续的“编辑并继续”中使用。

EmitDifference(EmitBaseline, IEnumerable<SemanticEdit>, Func<ISymbol,Boolean>, Stream, Stream, Stream, EmitDifferenceOptions, CancellationToken)

发出编译与上一代编辑并继续之间的差异。 差异表示为添加和更改的符号,并作为元数据、IL 和 PDB 增量发出。 当前编译的表示形式作为 EmitBaseline 返回,以便在后续的“编辑并继续”中使用。

EmitDifference(EmitBaseline, IEnumerable<SemanticEdit>, Func<ISymbol, Boolean>, Stream, Stream, Stream, ICollection<MethodDefinitionHandle>, CancellationToken)
已过时.

发出编译与上一代编辑并继续之间的差异。 差异表示为添加和更改的符号,并作为元数据、IL 和 PDB 增量发出。 当前编译的表示形式作为 EmitBaseline 返回,以便在后续的“编辑并继续”中使用。

EmitDifference(EmitBaseline, IEnumerable<SemanticEdit>, Stream, Stream, Stream, ICollection<MethodDefinitionHandle>, CancellationToken)
已过时.

发出编译与上一代编辑并继续之间的差异。 差异表示为添加和更改的符号,并作为元数据、IL 和 PDB 增量发出。 当前编译的表示形式作为 EmitBaseline 返回,以便在后续的“编辑并继续”中使用。

GetAssemblyOrModuleSymbol(MetadataReference)

IAssemblySymbol获取或IModuleSymbol获取用于创建此编译的元数据引用。

GetCompilationNamespace(INamespaceSymbol)

获取指定模块或程序集命名空间的相应编译命名空间。

GetDeclarationDiagnostics(CancellationToken)

获取在符号声明期间生成的诊断。

GetDiagnostics(CancellationToken)

获取编译的所有诊断,包括语法、声明和绑定。 不包括在发出期间可能生成的任何诊断,请参阅 EmitResult

GetEntryPoint(CancellationToken)

如果程序集是可执行文件(而不是脚本),则返回 Main 方法,该方法将用作程序集的入口点。

GetMetadataReference(IAssemblySymbol)

MetadataReference获取对应于程序集符号的对应项。

GetMethodBodyDiagnostics(CancellationToken)

获取在方法主体和字段初始值设定项分析期间生成的诊断。

GetParseDiagnostics(CancellationToken)

获取在分析阶段生成的诊断。

GetRequiredLanguageVersion(Diagnostic)

返回在找到 Diagnostic所需的语言版本(如果有)。 如果未找到任何值,则返回 null。

GetSemanticModel(SyntaxTree, Boolean)

获取指定语法树的一个新 SemanticModel 值。

GetSemanticModel(SyntaxTree, SemanticModelOptions)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

GetSpecialType(SpecialType)

从此编译引用的 Cor Library 获取预定义类型的符号。

GetSymbolsWithName(Func<String,Boolean>, SymbolFilter, CancellationToken)

返回名称符合给定谓词的源声明符号。

GetSymbolsWithName(String, SymbolFilter, CancellationToken)

返回名称与提供的名称匹配的源声明符号。 这可能比 GetSymbolsWithName(Func<String,Boolean>, SymbolFilter, CancellationToken) 谓词只是一个简单的字符串检查时更快。 name 区分大小写,具体取决于目标语言。

GetTypeByMetadataName(String)

获取编译程序集中的类型以及所有引用的程序集(而不是只能通过外部别名引用的程序集)使用其规范 CLR 元数据名称。 此查找遵循以下顺序:

  1. 如果在编译的程序集中找到该类型,则返回该类型。
  2. 接下来,搜索核心库(定义 System.Object 且没有程序集引用的库)。 如果找到该类型,则返回该类型。
  3. 最后,搜索所有剩余引用的非外部程序集。 如果找到一个且只有一个与提供的元数据名称匹配的类型,则返回该单一类型。 此检查将忽略辅助功能。
GetTypesByMetadataName(String)

获取具有编译程序集和具有给定规范 CLR 元数据名称的所有引用程序集的所有类型。 搜索匹配的类型名称时,将忽略当前程序集的可访问性。

GetUnreferencedAssemblyIdentities(Diagnostic)

Diagnostic给定未引用AssemblyIdentity的报告,返回未引用的实际AssemblyIdentity实例。

GetUsedAssemblyReferences(CancellationToken)

此编译考虑使用的唯一元数据程序集引用。 例如,如果在引用的程序集中声明的类型在此编译中的源代码中引用,则此引用被视为使用。 等。返回集是 API 返回的 References 引用的子集。 如果编译包含错误,则结果未定义。

导入的命名空间对此 API 结果的影响取决于是否为编译禁用了未使用的导入的报告。 如果 DocumentationMode 设置为 None,则禁用未使用的导入报告。

禁用未使用的导入报告后,所有引用的程序集都包含在结果中,其中包含属于导入命名空间的任何类型。 即已考虑使用。

启用未使用的导入报告后,导入的命名空间不会影响此 API 的结果。 因此,删除结果中不存在的程序集引用可能会导致错误“CS0246:找不到类型或命名空间名称(你缺少 using 指令或程序集引用吗? 但是,编译器会将该导入报告为未用于调用此 API 的编译。 为了避免错误,建议同时删除未使用的程序集引用和未使用的导入。

HasImplicitConversion(ITypeSymbol, ITypeSymbol)

如果存在隐式 (C#) 或扩大 (VB) 转换, fromTypetoType返回 true。 如果任一或fromTypetoType为 null,或者不存在此类转换,则返回 false。

IsSymbolAccessibleWithin(ISymbol, ISymbol, ITypeSymbol)

检查是否 symbol 可从内部 within访问。 类型的 throughType 可选限定符用于解析实例成员的受保护访问。 所有符号都必须来自此编译或此编译引用的一些程序集(References)。 within 是一个 INamedTypeSymbolIAssemblySymbol

RemoveAllReferences()

在不引用任何元数据的情况下创建新的编译。

RemoveAllSyntaxTrees()

创建不包含任何语法树的新编译。 保留元数据信息,以供以后添加的树一起使用。

RemoveReferences(IEnumerable<MetadataReference>)

创建没有指定元数据引用的新编译。

RemoveReferences(MetadataReference[])

创建没有指定元数据引用的新编译。

RemoveSyntaxTrees(IEnumerable<SyntaxTree>)

创建没有指定语法树的新编译。 保留元数据信息,以供以后添加的树一起使用。

RemoveSyntaxTrees(SyntaxTree[])

创建没有指定语法树的新编译。 保留元数据信息,以供以后添加的树一起使用。

ReplaceReference(MetadataReference, MetadataReference)

使用替换为新元数据引用的旧元数据引用创建新的编译。

ReplaceSyntaxTree(SyntaxTree, SyntaxTree)

使用替换为新语法树的旧语法树创建新的编译。 重用旧编译对象的元数据。

SupportsRuntimeCapability(RuntimeCapability)

确定此 Compilation 目标面向的运行时是否支持特定功能。

SyntaxTreeCommonFeatures(IEnumerable<SyntaxTree>)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

ToMetadataReference(ImmutableArray<String>, Boolean)

为此编译创建元数据引用。

WithAssemblyName(String)

创建具有指定程序集名称的编译。

WithOptions(CompilationOptions)

使用指定的编译选项创建新的编译。

WithReferences(IEnumerable<MetadataReference>)

使用指定的引用创建新的编译。

WithReferences(MetadataReference[])

使用指定的引用创建新的编译。

WithScriptCompilationInfo(ScriptCompilationInfo)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

扩展方法

名称 说明
AliasImports(Compilation)

获取编译 AliasImports 属性。

ClassifyConversion(Compilation, ITypeSymbol, ITypeSymbol)

编译对象是编译器的单个调用的不可变表示形式。 虽然不可变,但编译也是按需的,并会根据需要实现和缓存数据。 编译可以从现有编译生成新的编译,并应用小型增量。 在许多情况下,它比从头开始创建新编译更有效,因为新编译可以重复使用旧编译中的信息。

ClassifyConversion(Compilation, ITypeSymbol, ITypeSymbol)

确定指定类型之间存在哪种类型的转换。

Emit(Compilation, String, String, String, String, IEnumerable<ResourceDescription>, CancellationToken)

将编译的 IL 发出到指定的流中。

GetSpecialType(Compilation, SpecialType)

获取当前编译中的特殊类型符号。

MemberImports(Compilation)

获取编译 MemberImports 属性。

RootNamespace(Compilation)

获取编译 RootNamespace 属性。

WithAnalyzers(Compilation, ImmutableArray<DiagnosticAnalyzer>, AnalyzerOptions, CancellationToken)
已过时.

返回带有附加诊断分析器的新编译。

WithAnalyzers(Compilation, ImmutableArray<DiagnosticAnalyzer>, AnalyzerOptions)

返回带有附加诊断分析器的新编译。

WithAnalyzers(Compilation, ImmutableArray<DiagnosticAnalyzer>, CompilationWithAnalyzersOptions)

返回带有附加诊断分析器的新编译。

适用于