Kompilatorvarning WFAC010

Version introducerad: .NET 6

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.

Viktigt!

Från och med .NET 9 har varningen ändrats till WFO0003.

Lösningar

Använda C#

Använd nya bootstrap-API:et genom att 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>net8.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>

    <ApplicationVisualStyles>true</ApplicationVisualStyles>
    <ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
    <ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
    <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 fungerar lite annorlunda än C# just nu. Inställningarna för projektfilen krävs för att Visual Studio ska kunna identifiera programinställningarna, men du måste också konfigurera inställningarna på projektets egenskapssida Application>Application Framework (som påverkar My Project\Application.myapp-filen) eller i starthändelserna för programmet.

Viktigt!

Teckensnitt kan inte ställas in i projektegenskaperna.

I följande kodexempel visas hur du hanterar händelsen ApplyApplicationDefaults för att konfigurera standardteckensnittet och HighDPI-läget:

Imports Microsoft.VisualBasic.ApplicationServices

Namespace My
    Partial Friend Class MyApplication
        Private Sub MyApplication_ApplyApplicationDefaults(sender As Object, e As ApplyApplicationDefaultsEventArgs) Handles Me.ApplyApplicationDefaults
            e.Font = New Font("Microsoft Sans Serif", 8.25)
            e.HighDpiMode = HighDpiMode.SystemAware
        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.WFAC010.severity = none
    

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

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

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