Kompilatorvarning WFO0003

Introducerad version: .NET 9

Ta bort höga DPI-inställningar från app.manifest och konfigurera via Application.SetHighDpiMode API eller ApplicationHighDpiMode projektegenskap.

Windows Forms-applikationer bör ställa in applikationens DPI-medvetenhet antingen via programkonfiguration eller med Application.SetHighDpiMode API.

Exempel

Projektet innehåller en app.manifest fil med inställningen <dpiAware>:

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

Så här korrigerar du den här varningen

Windows Forms-applikationer bör ställa in applikationens DPI-medvetenhet antingen via programkonfiguration eller med Application.SetHighDpiMode API.

Använda C#

Anropa metoden ApplicationConfiguration.Initialize innan Application.Run().

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

Metoden ApplicationConfiguration.Initialize genereras när appen kompileras, baserat på inställningarna i appens projektfil. Titta till exempel på följande <Application*> inställningar:

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

De här inställningarna genererar följande metod:

[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));
    }
}

Använda Visual Basic

Visual Basic anger läget Hög DPI på två platser. Den första är i projektegenskaperna, som påverkar Visual Studio Designer-verktyget, men inte appen vid exekvering.

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

Den andra platsen finns i Visual Basic Application Framework-inställningarna. Dessa finns på sidan projektegenskaper under Application>Application Framework. De här inställningarna sparas i My Project\Application.myapp fil eller i en händelsehanterare för programstart.

Ange teckensnittet i Visual Basic

Körningsteckensnittet kan dock inte konfigureras i Visual Basic via en appinställning eller projektfilen. Den måste anges i ApplyApplicationDefaults-händelsehanteraren.

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

Hantera varningen

Ignorera varningen med någon av följande metoder:

  • Ange allvarlighetsgraden för regeln i filen .editorConfig.

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

    Mer information om redigeringskonfigurationsfiler finns i Konfigurationsfiler för kodanalysregler.

  • Lägg till följande PropertyGroup i projektfilen:

    <PropertyGroup>
        <NoWarn>$(NoWarn);WFO0003</NoWarn>
    </PropertyGroup>
    
  • Undertryck i kod med #pragma warning disable WFO0003-direktivet.