VisualStudio2019中為.NET Core WinForm App啟用窗體設(shè)計(jì)器
當(dāng)我們?cè)谑褂?Visual Studio 2019 非預(yù)覽版本開發(fā) Windows Forms App (.NET Core) 應(yīng)用程序時(shí)是不能使用窗體設(shè)計(jì)器的。即使在窗體文件上右擊選擇“顯示設(shè)計(jì)器”菜單,仍舊只能看到代碼,無法打開窗體設(shè)計(jì)器。
根據(jù)微軟開發(fā)者博客的描述,我們可以使用 Visual Studio 2019 預(yù)覽通道,將 Visual Studio 2019 更新至 16.6 來啟用設(shè)計(jì)器(參見:Updates on .NET Core Windows Forms designer)。
在不啟用預(yù)覽通道的情況下,我們?nèi)匀豢梢酝ㄟ^更改項(xiàng)目文件來讓項(xiàng)目支持窗體設(shè)計(jì)器。
當(dāng)我們新建一個(gè) .NET Core Windows Forms 程序時(shí),我們的項(xiàng)目文件(*.csproj)通常包含以下內(nèi)容:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
TargetFramework
標(biāo)簽標(biāo)識(shí)我們程序的目標(biāo)框架是.netcoreapp3.1
。如果我們的項(xiàng)目同時(shí)可以支持 .NET Framework 那么就可以在 Visual Studio 中使用設(shè)計(jì)器,可以使用TargetFrameworks
標(biāo)簽來讓項(xiàng)目支持多個(gè)目標(biāo)框架:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
保存更改后,Visual Studio 可能會(huì)提示重新加載。確認(rèn)重新加載,窗體設(shè)計(jì)器就可以使用了:
通過為項(xiàng)目增加 .NET Framework 目標(biāo)框架來啟用設(shè)計(jì)器
做完這一步,我們的代碼會(huì)無法通過編譯。這是因?yàn)轫?xiàng)目中使用了一個(gè)新的 API :SetHighDpiMode
,但是 .NET Framework 4.7.2 并不支持??梢酝ㄟ^條件編譯來限定對(duì)SetHighDpiMode
的調(diào)用僅在 .NET Core APP 下生效。當(dāng)目標(biāo)框架是 .NET Core 時(shí),生成系統(tǒng)可以識(shí)別NETCOREAPP
處理器符號(hào)(感謝 @麥殼餅 的提示)。對(duì) Program.cs 文件中 Main 方法的代碼稍作修改即可編譯通過:
/// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { #if NETCOREAPP Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FrmMain()); }
點(diǎn)擊“調(diào)試”按鈕的下拉項(xiàng)對(duì)目標(biāo)框架進(jìn)行切換:
切換調(diào)試項(xiàng)目的目標(biāo)框架
程序運(yùn)行起來后,效果令人滿意:
.NET Core Windows Forms 運(yùn)行效果
到此這篇關(guān)于VisualStudio2019中為.NET Core WinForm App啟用窗體設(shè)計(jì)器的文章就介紹到這了,更多相關(guān).NET Core WinForm App啟用窗體設(shè)計(jì)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp.net(C#)防sql注入組件的實(shí)現(xiàn)代碼
經(jīng)常要寫一些.net的程序,對(duì)于數(shù)據(jù)庫的防注入要求要比較高。這時(shí)我從網(wǎng)上搜了一些代碼。查看了一下主要是通過HTTPModel來進(jìn)行對(duì)客戶端轉(zhuǎn)過來的數(shù)據(jù)進(jìn)行處理。2009-12-12asp.net 抓取網(wǎng)頁源碼三種實(shí)現(xiàn)方法
asp.net 抓取網(wǎng)頁源碼三種實(shí)現(xiàn)方法,需要的朋友可以參考一下2013-06-06C#開發(fā)微信 二維碼鼠標(biāo)滑動(dòng) 圖像顯示隱藏效果(推薦)
客戶端微信在二維碼狀態(tài)下,鼠標(biāo)滑過,會(huì)有一張手機(jī)的圖片滑動(dòng)滑出,從隱藏到顯示,從顯示到隱藏。效果非常棒,本文思路介紹明確,感興趣的朋友一起看看吧2016-11-11ASP.NET 4中的可擴(kuò)展輸出緩存(可以緩存頁面/控件等)
ASP.NET 1.0引入輸出緩存的概念,這使得開發(fā)者可以緩存頁面、控件、控制器以及HTTP響應(yīng)的輸出到內(nèi)存中,接下來詳細(xì)介紹,感興趣的朋友可以了解下2013-01-01asp.net TextBox回車觸發(fā)事件 圖片在img顯示
TextBox回車觸發(fā)事件 數(shù)據(jù)庫取圖片在img顯示2009-10-10ASP.NET在上傳文件時(shí)對(duì)文件類型的高級(jí)判斷的代碼
在上傳文件過程中,可以通過修改擴(kuò)展名來逃過文件類型的判斷并實(shí)現(xiàn)上傳,就需要可以驗(yàn)證究竟是什么文件。下面的代碼大家可以測(cè)試下。2009-12-12ASP.NET生成兩個(gè)日期范圍內(nèi)隨機(jī)時(shí)間的實(shí)現(xiàn)方法
這篇文章主要介紹了ASP.NET生成兩個(gè)日期范圍內(nèi)隨機(jī)時(shí)間的實(shí)現(xiàn)方法,通過自定義函數(shù)記錄開始時(shí)間與結(jié)束時(shí)間確定時(shí)間范圍進(jìn)而生成該時(shí)間段的隨機(jī)時(shí)間,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12ASP.NET Core 2.0中Razor頁面禁用防偽令牌驗(yàn)證
在這篇短文中,我將向您介紹如何ASP.NET Core2.0 Razor頁面中禁用防偽令牌驗(yàn)證,對(duì)此有興趣的朋友參考學(xué)習(xí)下吧。2018-01-01