Compilerwarnung WFO0003

Eingeführt in Version: .NET 9

Entfernen Sie die hohen DPI-Einstellungen aus app.manifest und konfigurieren Sie über die Application.SetHighDpiMode-API oder die ApplicationHighDpiMode-Projekteigenschaft.

Windows Forms-Anwendungen sollten anwendungsbezogene DPI-Informationen über die Anwendungskonfiguration oder mithilfe der Application.SetHighDpiMode-API angeben.

Beispiel

Ihr Projekt enthält eine app.manifest Datei mit der <dpiAware> Einstellung:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <!-- other settings omitted for brevity -->
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
</assembly>

Um diese Warnung zu korrigieren

Windows Forms-Anwendungen sollten anwendungsbezogene DPI-Informationen über die Anwendungskonfiguration oder mithilfe der Application.SetHighDpiMode-API angeben.

Verwenden von C#

Rufen Sie die ApplicationConfiguration.Initialize Methode vor Application.Run().

class Program
{
    [STAThread]
    static void Main()
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new Form1());
    }
}

Die ApplicationConfiguration.Initialize-Methode wird beim Kompilieren Ihrer App basierend auf den Einstellungen in der Projektdatei der App generiert. Sehen Sie sich beispielsweise die folgenden <Application*>-Einstellungen an:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net9.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>

    <ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
    <ApplicationVisualStyles>true</ApplicationVisualStyles>
    <ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
    <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>

  </PropertyGroup>

</Project>

Diese Einstellungen generieren die folgende Methode:

[CompilerGenerated]
internal static partial class ApplicationConfiguration
{
    public static void Initialize()
    {
        global::System.Windows.Forms.Application.EnableVisualStyles();
        global::System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
        global::System.Windows.Forms.Application.SetHighDpiMode(HighDpiMode.SystemAware);
        global::System.Windows.Forms.Application.SetDefaultFont(new Font(new FontFamily("Microsoft Sans Serif"), 8.25f, (FontStyle)0, (GraphicsUnit)3));
    }
}

Verwenden von Visual Basic

Visual Basic legt den Modus für hohen DPI-Wert an zwei Stellen fest. Die erste befindet sich in den Projekteigenschaften, die sich auf den Visual Studio-Designer auswirken, sich aber nicht auf die App zur Laufzeit auswirken.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net9.0-windows</TargetFramework>
    <StartupObject>Sub Main</StartupObject>
    <UseWindowsForms>true</UseWindowsForms>
    <MyType>WindowsForms</MyType>

    <ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
    <ApplicationVisualStyles>false</ApplicationVisualStyles>
    <ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
    <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>

  </PropertyGroup>

</Project>

Der zweite Platz befindet sich in den Visual Basic Application Framework-Einstellungen. Diese befinden sich auf der Projekteigenschaftenseite unter Application>Application Framework. Diese Einstellungen werden in der Datei "My Project\Application.myapp " oder in einem Anwendungsstartereignishandler gespeichert.

Festlegen der Schriftart in Visual Basic

Die Laufzeitschriftart kann jedoch in Visual Basic nicht über eine App-Einstellung oder die Projektdatei konfiguriert werden. Er muss im ApplyApplicationDefaults Ereignishandler festgelegt werden.

Imports Microsoft.VisualBasic.ApplicationServices

Namespace My
    Partial Friend Class MyApplication
        Private Sub MyApplication_ApplyApplicationDefaults(sender As Object, e As ApplyApplicationDefaultsEventArgs) Handles Me.ApplyApplicationDefaults
            e.HighDpiMode = HighDpiMode.SystemAware
            e.Font = New Font("Microsoft Sans Serif", 8.25)
        End Sub
    End Class
End Namespace

Verwalten der Warnung

Unterdrücken Sie die Warnung mit einer der folgenden Methoden:

  • Legen Sie den Schweregrad der Regel in der .editorConfig-Datei fest.

    [*.{cs,vb}]
    dotnet_diagnostic.WFO0003.severity = none
    

    Weitere Informationen zu Editorkonfigurationsdateien finden Sie unter Konfigurationsdateien für Codeanalyseregeln.

  • Fügen Sie das folgende PropertyGroup zu Ihrer Projektdatei hinzu:

    <PropertyGroup>
        <NoWarn>$(NoWarn);WFO0003</NoWarn>
    </PropertyGroup>
    
  • Unterdrücken Sie im Code mit der #pragma warning disable WFO0003-Anweisung.