啟動組態檔
提供 Managed 擴充性模型的應用程式可以透過在應用程式組態檔或主機組態檔中指定特定版本的 .NET Framework 執行階段,要求使用該版本來執行擴充功能。 在 .NET Framework 4 版以前,使用較新版的執行階段撰寫擴充功能的唯一方式,就是提供不同的組態檔給應用程式。 但這種方式會產生不良後果,那就是強迫所有的擴充功能都使用較新的執行階段。
啟用組態檔可以為採取特定模式 (例如使用應用程式擴充性模型做為平台來完整控制所有載入的擴充功能) 的擴充功能作者,提供替代解決方式。 在該情節中,很適合讓擴充功能作者決定要載入和啟用哪個版本的執行階段。
例如,您可以使用 .NET Framework 4 建立 Microsoft Management Console (MMC) 嵌入式管理單元,以在 MMC 指定啟用 .NET Framework 2.0 版 執行階段的電腦上自訂 Management 主控台的使用者介面。 您無法直接取代 MMC 的啟用資訊,但是可以使用環境變數指定特定主控台的替代啟用組態檔位置,讓 .NET Framework 4 執行階段在啟動主控台時啟用。
提供啟用組態檔
啟用組態檔名稱的模式和應用程式組態檔名稱相同,但副檔名為 .activation_config。 例如,應用程式 MyApp.exe 的應用程式組態檔名稱會是 MyApp.exe.config,啟用組態檔名稱會是 MyApp.exe.activation_config。
啟用組態檔可以包含任何組態檔項目,但只有一般會用於啟用的項目會受到剖析:
<startup> 區段中的項目。
<runtime> 區段中的 <gcServer>、<appdomainResourceMonitoring> 和 <etwEnable> 項目。
重要事項 確定啟用組態檔中的這三項 <runtime> 設定與應用程式組態檔或主機組態檔中的對應設定相同。
啟用組態檔只會由啟動執行階段的 Shim 程式碼使用。 執行階段本身不會與此檔案有任何互動。
建立應用程式組態檔後,請將 COMPLUS_ApplicationMigrationRuntimeActivationConfigPath 環境變數設定為該檔案所在的路徑。 在選取要啟用之執行階段的過程中,即會在這個路徑搜尋名稱符合此模式的應用程式組態檔。
如果已設定環境變數,但是指定的路徑未包含符合此模式的啟用組態檔,則執行階段啟用會照常由應用程式組態檔或主機組態檔控制。
此環境變數可以全域方式設定,或是由會設定環境的啟動器處理序設定。 設定全域環境變數受制於與其他應用程式的競爭條件。
例如,下列命令列工作階段會將啟用組態檔複製到資料夾、將環境變數設定為該路徑,然後執行應用程式:
copy c:\MyConfigs\MyApp.exe.activation_config c:\CustomConfigs
set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath =
c:\CustomConfigs
c:\Program Files\MyApp\MyApp.exe
下列啟用組態檔會指定啟用 .NET Framework 4 執行階段,並且從假設應用程式的組態檔複製假設的 <appDomainResourceMonitoring> 設定:
<configuration>
<startup>
<supportedRuntime version="v4.0.xxxx"/>
</startup>
<runtime>
<appDomainResourceMonitoring enabled="true"/>
</runtime>
</configuration>
支援的啟用方法
啟用組態檔會影響下列啟用方法。 「舊版」一詞是指在 .NET Framework 4 之前的 .NET Framework 版本。
在已安裝 .NET Framework 4 的電腦上執行任何 Managed .exe 檔案。
使用舊版主機 API;例如,CorBindToRuntimeHost 全域函式。
載入和執行以 Visual C++ 建立的舊版混合模式元件。
載入和執行舊版 COM 元件。
注意事項 當您載入和執行以 .NET Framework 4 或更新版本建立的 COM 元件時,並不會使用啟用組態檔。
使用主機 API 中的 ICLRMetaHostPolicy::GetRequestedRuntime 方法並搭配 METAHOST_POLICY_USE_PROCESS_IMAGE_PATH 旗標。
使用 ICLRMetaHostPolicy::GetRequestedRuntime 方法並提供組件檔路徑給 pwzBinary 參數。
注意事項 如果呼叫 ICLRMetaHostPolicy::GetRequestedRuntime 方法,但既未使用 pwzBinary 參數也未使用 METAHOST_POLICY_USE_PROCESS_IMAGE_PATH 旗標,則不會使用啟用組態檔。