EmitBaseline.CreateInitialBaseline 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
CreateInitialBaseline(ModuleMetadata, Func<MethodDefinitionHandle,EditAndContinueMethodDebugInformation>) |
已淘汰.
EmitBaseline先從模組的元資料建立 ,再編輯,並從從方法對應至本機名稱陣列的函式建立 。 |
CreateInitialBaseline(ModuleMetadata, Func<MethodDefinitionHandle, EditAndContinueMethodDebugInformation>, Func<MethodDefinitionHandle, StandaloneSignatureHandle>, Boolean) |
已淘汰.
EmitBaseline先從模組的元資料建立 ,再編輯,並從從方法對應至本機名稱陣列的函式建立 。 |
CreateInitialBaseline(Compilation, ModuleMetadata, Func<MethodDefinitionHandle, EditAndContinueMethodDebugInformation>, Func<MethodDefinitionHandle, StandaloneSignatureHandle>, Boolean) |
EmitBaseline先從模組的元資料建立 ,再編輯,並從從方法對應至本機名稱陣列的函式建立 。 |
CreateInitialBaseline(ModuleMetadata, Func<MethodDefinitionHandle,EditAndContinueMethodDebugInformation>)
警告
This overload is no longer supported
EmitBaseline先從模組的元資料建立 ,再編輯,並從從方法對應至本機名稱陣列的函式建立 。
public:
static Microsoft::CodeAnalysis::Emit::EmitBaseline ^ CreateInitialBaseline(Microsoft::CodeAnalysis::ModuleMetadata ^ module, Func<System::Reflection::Metadata::MethodDefinitionHandle, Microsoft::CodeAnalysis::Emit::EditAndContinueMethodDebugInformation> ^ debugInformationProvider);
public static Microsoft.CodeAnalysis.Emit.EmitBaseline CreateInitialBaseline (Microsoft.CodeAnalysis.ModuleMetadata module, Func<System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> debugInformationProvider);
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[System.Obsolete("This overload is no longer supported", true)]
public static Microsoft.CodeAnalysis.Emit.EmitBaseline CreateInitialBaseline (Microsoft.CodeAnalysis.ModuleMetadata module, Func<System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> debugInformationProvider);
static member CreateInitialBaseline : Microsoft.CodeAnalysis.ModuleMetadata * Func<System.Reflection.Metadata.MethodDefinitionHandle, Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> -> Microsoft.CodeAnalysis.Emit.EmitBaseline
[<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>]
[<System.Obsolete("This overload is no longer supported", true)>]
static member CreateInitialBaseline : Microsoft.CodeAnalysis.ModuleMetadata * Func<System.Reflection.Metadata.MethodDefinitionHandle, Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> -> Microsoft.CodeAnalysis.Emit.EmitBaseline
Public Shared Function CreateInitialBaseline (module As ModuleMetadata, debugInformationProvider As Func(Of MethodDefinitionHandle, EditAndContinueMethodDebugInformation)) As EmitBaseline
參數
- module
- ModuleMetadata
編輯前模組的元數據。
- debugInformationProvider
- Func<MethodDefinitionHandle,EditAndContinueMethodDebugInformation>
方法句柄的函式會傳回編譯程序發出之 Edit and Continue 偵錯資訊到 PDB。 如果無法讀取指定方法的偵錯資訊,則函式會擲 InvalidDataException 回。 這個例外狀況會 IOException 攔截並轉換成發出診斷。 其他例外狀況會通過。
傳回
EmitBaseline模組的 。
- 屬性
例外狀況
module
不是 PE 映像。
debugInformationProvider
為 null。
讀取模組元數據時發生錯誤。
模組元數據無效。
已處置模組。
適用於
CreateInitialBaseline(ModuleMetadata, Func<MethodDefinitionHandle, EditAndContinueMethodDebugInformation>, Func<MethodDefinitionHandle, StandaloneSignatureHandle>, Boolean)
警告
This overload is no longer supported
EmitBaseline先從模組的元資料建立 ,再編輯,並從從方法對應至本機名稱陣列的函式建立 。
public:
static Microsoft::CodeAnalysis::Emit::EmitBaseline ^ CreateInitialBaseline(Microsoft::CodeAnalysis::ModuleMetadata ^ module, Func<System::Reflection::Metadata::MethodDefinitionHandle, Microsoft::CodeAnalysis::Emit::EditAndContinueMethodDebugInformation> ^ debugInformationProvider, Func<System::Reflection::Metadata::MethodDefinitionHandle, System::Reflection::Metadata::StandaloneSignatureHandle> ^ localSignatureProvider, bool hasPortableDebugInformation);
public static Microsoft.CodeAnalysis.Emit.EmitBaseline CreateInitialBaseline (Microsoft.CodeAnalysis.ModuleMetadata module, Func<System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> debugInformationProvider, Func<System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle> localSignatureProvider, bool hasPortableDebugInformation);
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[System.Obsolete("This overload is no longer supported", true)]
public static Microsoft.CodeAnalysis.Emit.EmitBaseline CreateInitialBaseline (Microsoft.CodeAnalysis.ModuleMetadata module, Func<System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> debugInformationProvider, Func<System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle> localSignatureProvider, bool hasPortableDebugInformation);
static member CreateInitialBaseline : Microsoft.CodeAnalysis.ModuleMetadata * Func<System.Reflection.Metadata.MethodDefinitionHandle, Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> * Func<System.Reflection.Metadata.MethodDefinitionHandle, System.Reflection.Metadata.StandaloneSignatureHandle> * bool -> Microsoft.CodeAnalysis.Emit.EmitBaseline
[<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>]
[<System.Obsolete("This overload is no longer supported", true)>]
static member CreateInitialBaseline : Microsoft.CodeAnalysis.ModuleMetadata * Func<System.Reflection.Metadata.MethodDefinitionHandle, Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> * Func<System.Reflection.Metadata.MethodDefinitionHandle, System.Reflection.Metadata.StandaloneSignatureHandle> * bool -> Microsoft.CodeAnalysis.Emit.EmitBaseline
Public Shared Function CreateInitialBaseline (module As ModuleMetadata, debugInformationProvider As Func(Of MethodDefinitionHandle, EditAndContinueMethodDebugInformation), localSignatureProvider As Func(Of MethodDefinitionHandle, StandaloneSignatureHandle), hasPortableDebugInformation As Boolean) As EmitBaseline
參數
- module
- ModuleMetadata
編輯前模組的元數據。
- debugInformationProvider
- Func<MethodDefinitionHandle,EditAndContinueMethodDebugInformation>
方法句柄的函式會傳回編譯程序發出之 Edit and Continue 偵錯資訊到 PDB。 如果無法讀取指定方法的偵錯資訊,則函式會擲 InvalidDataException 回。 這個例外狀況會 IOException 攔截並轉換成發出診斷。 其他例外狀況會通過。
- localSignatureProvider
- Func<MethodDefinitionHandle,StandaloneSignatureHandle>
方法句柄的函式會傳回其局部變數的簽章。 如果無法讀取指定方法的資訊,則此函式會擲 InvalidDataException 回。 這個例外狀況會 IOException 攔截並轉換成發出診斷。 其他例外狀況會通過。
- hasPortableDebugInformation
- Boolean
如果比較基準 PDB 是可攜式,則為 True。
傳回
EmitBaseline模組的 。
- 屬性
例外狀況
localSignatureProvider
為 null。
讀取模組元數據時發生錯誤。
模組元數據無效。
已處置模組。
備註
只有使用此方法建立初始基準;後續基準會在發出後續編譯的差異時自動建立。
當作用中方法 (堆疊上配置框架) 更新其局部變數的值時,必須保留其局部變數的值。 本機變數名稱與其框架中位置的對應不會包含在元數據中,因此必須由 debugInformationProvider
提供。
debugInformationProvider
只有初始產生時才需要 。 後續世代的對應會透過 EmitBaseline傳遞。 編譯程式會將位置指派給具名局部變數, (包括具名暫存變數) 它們出現在原始程式碼中的順序。 這個屬性可讓編譯程式重新建構初始產生的局部變數對應。 後續世代可能會在上一代的兩個變數之間新增變數。 由於前一代變數的位置必須保留,唯一的選項是將這些新變數新增至結尾。 因此,位置順序不再符合語法排序。 因此,您必須傳遞 Baseline 至下一代 (,而不是根據後續編譯所產生的元數據,從頭開始建立新的 EmitBaseline) 。
適用於
CreateInitialBaseline(Compilation, ModuleMetadata, Func<MethodDefinitionHandle, EditAndContinueMethodDebugInformation>, Func<MethodDefinitionHandle, StandaloneSignatureHandle>, Boolean)
EmitBaseline先從模組的元資料建立 ,再編輯,並從從方法對應至本機名稱陣列的函式建立 。
public static Microsoft.CodeAnalysis.Emit.EmitBaseline CreateInitialBaseline (Microsoft.CodeAnalysis.Compilation compilation, Microsoft.CodeAnalysis.ModuleMetadata module, Func<System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> debugInformationProvider, Func<System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle> localSignatureProvider, bool hasPortableDebugInformation);
static member CreateInitialBaseline : Microsoft.CodeAnalysis.Compilation * Microsoft.CodeAnalysis.ModuleMetadata * Func<System.Reflection.Metadata.MethodDefinitionHandle, Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation> * Func<System.Reflection.Metadata.MethodDefinitionHandle, System.Reflection.Metadata.StandaloneSignatureHandle> * bool -> Microsoft.CodeAnalysis.Emit.EmitBaseline
Public Shared Function CreateInitialBaseline (compilation As Compilation, module As ModuleMetadata, debugInformationProvider As Func(Of MethodDefinitionHandle, EditAndContinueMethodDebugInformation), localSignatureProvider As Func(Of MethodDefinitionHandle, StandaloneSignatureHandle), hasPortableDebugInformation As Boolean) As EmitBaseline
參數
- compilation
- Compilation
初始 Microsoft.CodeAnalysis.Emit.EmitBaseline.Compilation。
- module
- ModuleMetadata
編輯前模組的元數據。
- debugInformationProvider
- Func<MethodDefinitionHandle,EditAndContinueMethodDebugInformation>
方法句柄的函式會傳回編譯程序發出之 Edit and Continue 偵錯資訊到 PDB。 如果無法讀取指定方法的偵錯資訊,則函式會擲 InvalidDataException 回。 這個例外狀況會 IOException 攔截並轉換成發出診斷。 其他例外狀況會通過。
- localSignatureProvider
- Func<MethodDefinitionHandle,StandaloneSignatureHandle>
方法句柄的函式會傳回其局部變數的簽章。 如果無法讀取指定方法的資訊,則此函式會擲 InvalidDataException 回。 這個例外狀況會 IOException 攔截並轉換成發出診斷。 其他例外狀況會通過。
- hasPortableDebugInformation
- Boolean
如果比較基準 PDB 是可攜式,則為 True。
傳回
EmitBaseline模組的 。
例外狀況
localSignatureProvider
為 null。
讀取模組元數據時發生錯誤。
模組元數據無效。
已處置模組。
備註
只有使用此方法建立初始基準;後續基準會在發出後續編譯的差異時自動建立。
當作用中方法 (堆疊上配置框架) 更新其局部變數的值時,必須保留其局部變數的值。 本機變數名稱與其框架中位置的對應不會包含在元數據中,因此必須由 debugInformationProvider
提供。
debugInformationProvider
只有初始產生時才需要 。 後續世代的對應會透過 EmitBaseline傳遞。 編譯程式會將位置指派給具名局部變數, (包括具名暫存變數) 它們出現在原始程式碼中的順序。 這個屬性可讓編譯程式重新建構初始產生的局部變數對應。 後續世代可能會在上一代的兩個變數之間新增變數。 由於前一代變數的位置必須保留,唯一的選項是將這些新變數新增至結尾。 因此,位置順序不再符合語法排序。 因此,您必須傳遞 Baseline 至下一代 (,而不是根據後續編譯所產生的元數據,從頭開始建立新的 EmitBaseline) 。