在 Visual Studio 2019 中为 .NET Core WinForm App 启用窗体设计器
當我們在使用 Visual Studio 2019 非預覽版本開發 Windows Forms App (.NET Core) 應用程序時是不能使用窗體設計器的。即使在窗體文件上右擊選擇“顯示設計器”菜單,仍舊只能看到代碼,無法打開窗體設計器。
根據微軟開發者博客的描述,我們可以使用 Visual Studio 2019 預覽通道,將 Visual Studio 2019 更新至 16.6 來啟用設計器(參見:Updates on .NET Core Windows Forms designer)。
在不啟用預覽通道的情況下,我們仍然可以通過更改項目文件來讓項目支持窗體設計器。
當我們新建一個 .NET Core Windows Forms 程序時,我們的項目文件(*.csproj)通常包含以下內容:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>netcoreapp3.1</TargetFramework><UseWindowsForms>true</UseWindowsForms></PropertyGroup></Project>TargetFramework?標簽標識我們程序的目標框架是?.netcoreapp3.1?。如果我們的項目同時可以支持 .NET Framework 那么就可以在 Visual Studio 中使用設計器,可以使用?TargetFrameworks?標簽來讓項目支持多個目標框架:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net472;netcoreapp3.1</TargetFramework><UseWindowsForms>true</UseWindowsForms></PropertyGroup></Project>保存更改后,Visual Studio 可能會提示重新加載。確認重新加載,窗體設計器就可以使用了:
通過為項目增加 .NET Framework 目標框架來啟用設計器做完這一步,我們的代碼會無法通過編譯。這是因為項目中使用了一個新的 API :SetHighDpiMode?,但是 .NET Framework 4.7.2 并不支持。可以通過條件編譯來限定對?SetHighDpiMode?的調用僅在 .NET Core APP 下生效。當目標框架是 .NET Core 時,生成系統可以識別?NETCOREAPP?處理器符號(感謝 @麥殼餅 的提示)。對 Program.cs 文件中 Main 方法的代碼稍作修改即可編譯通過:
??????? /// <summary>///? The main entry point for the application./// </summary>[STAThread]static void Main(){#if NETCOREAPPApplication.SetHighDpiMode(HighDpiMode.SystemAware);#endifApplication.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new FrmMain());}點擊“調試”按鈕的下拉項對目標框架進行切換:
切換調試項目的目標框架程序運行起來后,效果令人滿意:
.NET Core Windows Forms 運行效果總結
以上是生活随笔為你收集整理的在 Visual Studio 2019 中为 .NET Core WinForm App 启用窗体设计器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【半译】在ASP.NET Core中创建
- 下一篇: 视频号,张小龙的星辰大海