app.config 中的 System.diagnostics 項目

針對具有 app.config 檔案的應用程式,不再允許 <configuration><configSections> 項目包含 <section name="system.diagnostics"> 項目。 如果有的話,您必須移除該項目。

當第一次使用組態系統時,擁有 <section name="system.diagnostics"> 項目會擲回以下執行階段例外狀況:

ConfigurationErrorsException:區段或群組名稱 'system.diagnostics' 已經定義。 對此進行的更新,可能只會發生在定義它的組態層級。

舉例來說,以下 app.config 檔案包含不必要的項目:

<configuration>
 <configSections>
   <section name="system.diagnostics"
            type="System.Diagnostics.SystemDiagnosticsSection,
            System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 </configSections>

可能只有當應用程式有以下情況時才會發生此中斷:

  • 已從 .NET Framework 移轉至 .NET。
  • 已明確新增 <section name="system.diagnostics">app.config 檔案以支援手動讀取 <system.diagnostics> 區段。
  • 已升級至具有隱含 <section name="system.diagnostics"> 項目的 .NET 7。

先前的行為

指定 <section name="system.diagnostics"> 是允許的行為,且如果有出現如下的更新 <system.diagnostics> 組態區段時是必要的行為:

<configuration>
    <system.diagnostics>

不過,系統並未自動讀取區段。 這是因為 System.Diagnostics 尚不支援新增接聽程式的功能,亦不支援藉由處理該區段設定其他診斷功能。

不過,.NET Framework 有支援處理 <system.diagnostics> 區段,且在 machine.config 檔案中有一個 <section name="system.diagnostics"> 項目。

新的行為

System.Diagnostics 現在支援從組態檔讀取 <system.diagnostics> 區段和新增隱含的 <section name="system.diagnostics"> 項目。 在 app.config 檔案中有明確的 <section name="system.diagnostics"> 項目會導致重複的項目,這會擲回 ConfigurationErrorsException

導入的版本

.NET 7 RC 1

中斷性變更的類型

這項變更會影響二進位相容性

變更原因

為了支援讓 System.Diagnostics 讀取 app.config 檔案的新功能,我們必須新增隱含的 <section name="system.diagnostics"> 元素。

移除不必要的 <section name="system.diagnostics" ... > 區段。

受影響的 API

N/A