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 可能为 Error。

Options

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

ReferencedAssemblyNames

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

References

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

ScriptClass

表示隐式 Script 类的符号。 如果未在编译中定义类,则为 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>)

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

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

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

CommonCreateArrayTypeSymbol(ITypeSymbol, Int32)

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

CommonCreateArrayTypeSymbol(ITypeSymbol, Int32, NullableAnnotation)

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

CommonCreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol)

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

CommonCreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol, ITypeSymbol)

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

CommonCreateErrorNamespaceSymbol(INamespaceSymbol, String)

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

CommonCreateErrorTypeSymbol(INamespaceOrTypeSymbol, String, Int32)

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

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

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

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

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

CommonCreateNativeIntegerTypeSymbol(Boolean)

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

CommonCreatePointerTypeSymbol(ITypeSymbol)

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

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

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

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

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

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

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

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

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

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)创建新的语义模型。

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>)

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

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

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

CreateArrayTypeSymbol(ITypeSymbol, Int32)

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

CreateArrayTypeSymbol(ITypeSymbol, Int32, NullableAnnotation)

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

CreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol)

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

CreateBuiltinOperator(String, ITypeSymbol, ITypeSymbol, ITypeSymbol)

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

CreateDefaultWin32Resources(Boolean, Boolean, Stream, Stream)

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

CreateErrorNamespaceSymbol(INamespaceSymbol, String)

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

CreateErrorTypeSymbol(INamespaceOrTypeSymbol, String, Int32)

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

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

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

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

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

CreateNativeIntegerTypeSymbol(Boolean)

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

CreatePointerTypeSymbol(ITypeSymbol)

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

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

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

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

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

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

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

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

返回一个新的 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, 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

GetSpecialType(SpecialType)

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

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) 从 fromType 转换为 toType,则返回 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)

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

扩展方法

ClassifyConversion(Compilation, ITypeSymbol, ITypeSymbol)

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

WithAnalyzers(Compilation, ImmutableArray<DiagnosticAnalyzer>, AnalyzerOptions)

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

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

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

WithAnalyzers(Compilation, ImmutableArray<DiagnosticAnalyzer>, CompilationWithAnalyzersOptions)

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

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

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

AliasImports(Compilation)

获取编译 AliasImports 属性。

ClassifyConversion(Compilation, ITypeSymbol, ITypeSymbol)

确定指定类型之间的转换类型。

GetSpecialType(Compilation, SpecialType)

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

MemberImports(Compilation)

获取编译 MemberImports 属性。

RootNamespace(Compilation)

获取编译 RootNamespace 属性。

适用于