歡迎光臨
每天分享高質量文章

解決vs2019中暫時無法為.net core WinForms使用 Designer 的臨時方法

以下方法來自於微軟github開源專案WinForms:

dotnet/winforms – Using the Classic WinForms Designer in WinForms Core, 請放心使用 .

目前.net core下的 Windows Forms的可視化設計器(Designer)尚不可用,後續的Visual Studio 2019 Update才會支持該部分的功能。不過目前我們想在vs2019中使用 Designer,有一種臨時解決方法。

可以使用Visual Studio來處理鏈接檔案(Link files)的功能,並將其WinForms Designer用於Classic Framework (即.net Framework的Win Forms專案)。

具體的解決方法是在同一個 Solution下創建兩個專案:

  • 用於設計WinForms應用程式的.NET Framework應用程式(.net core專案)
  • 用於運行WinForms應用程式的.NET Core應用程式(.net Framework 專案)

而兩個應用程式(.net core專案和相應.net Framework 專案)都將取用相同的檔案。

在該方法中,只要添加新的Win Form或新的UserControl,就需要在Classic Framework WinForms專案(.net Framework的Win Forms專案)中重新設置Form檔案的嵌套層級關係,推薦使用Mad Kristensen的檔案嵌套擴展來完成這件事,而不是使用文本編輯器來修補專案檔案(.csproj檔案),建議事先安裝好該vs插件。

完整步驟:

安裝 vs 2019 professional/enterprise版本

先安裝 vs 2019 professional/enterprise版本,安裝好.net core 3.0 SDK,此時試著創建一個.net core下的 win forms 應用,

設置好相關專案名和存放路徑後,會彈出:

在vs的設置里,勾選.NET core下的”Use preview SDK”

設置完,重啟vs才能生效。

使用vs自帶的模板,選擇其中的 .net core forms 創建Project, 取名為”CoreHelloForm”

此時的檔案目錄為:

在剛創建的Solution中使用vs自帶的模板,選擇其中的.net framework forms添加新的project,取名為”CoreHelloForm.Designer”

此時Solution中的檔案目錄為:

將.net core form下的Form1 重命名為 MainForm

此時,選中 .net core form專案,右鍵選擇 “Set as start up project”,按F5運行專案,可看到窗體:

然後點窗體右上角的x關閉按鈕,停止運行.

測試從命令列是否能正常 build .net core專案

右鍵 .net core form專案,點擊”Open Folder in File Explorer”,

刪除此處的bin 檔案夾

在上方地址欄輸入cmd 進入命令列:

輸入dotnet --version,看是否能看到具體.net core版本,如果沒問題,繼續下麵的步驟。

輸入dotnet build

此時,回到檔案目錄D:\Coding\csProj\CoreHelloForm\CoreHelloForm\bin\Debug\netcoreapp3.0,雙擊其中的exe檔案,窗體能正常打開。

刪除專案CoreHelloForm.Designer中所有Form1相關的檔案

接著選中.net framework專案CoreHelloForm.Designer下的Form1,右鍵點擊”Delete”,

會出現下麵這個警告框,點OK

在專案`CoreHelloForm.Designer中以”As Link”的方式取用.net core form專案下的MainForm相關檔案

選中專案CoreHelloForm.Designer,右鍵Add,選”Existing Item”

打開檔案選擇框之後,選擇.net core專案CoreHelloForm下的下圖中高亮的3個檔案.

點擊Add As Link

從Extension market下載並安裝擴展 File Nesting

下載地址: File Nesting for VS
下載到的檔案是File_Nesting_v2.6.85.vsix, 關閉vs,雙擊,勾選上相應版本的vs安裝即可~

使用 File Nesting來修改 Link 的 MainForm相關檔案的層次關係.

先選中檔案MainForm.Designer.csMainForm.resx,然後右鍵點擊 “File Nesting” -> “Auto-nest selected items”

再右鍵點擊 “File Nesting” -> “Nest item”,選擇 MainForm

點 OK繼續.

再進行一次重命名

.Designer專案下的Program.cs中的Form1改為MainForm.

重設啟動項專案

選中專案CoreHelloForm.Designer,右鍵 Rebuild, 選中.net framework專案CoreHelloForm.Designer,右鍵選擇 “Set as start up project”.

關閉 Solution中 專案CoreHelloForm.Designer中MainForm的干擾檔案

此時,如果試著雙擊專案CoreHelloForm.Designer中的MainForm.cs,會彈出如下警告。

那是因為專案CoreHelloForm.Designer中的MainForm.cs 所Link 的與MainForm相關的檔案已經在 專案CoreHelloForm 中 打開。

我們將已打開的檔案中與專案CoreHelloForm.Designer中Form相關的檔案都關閉掉,比如:

試用 Designer

現在,再雙擊專案CoreHelloForm.Designer中的MainForm.cs,就能看到 Designer 了。

此時,可以進行可視化編輯了。

比如,我做瞭如下幾處修改:

  • 改掉 Form的 Title

  • 改掉文本框的內容.

  • 改掉窗體的圖標(icon)

F5,運行的效果圖為:

專案代碼已推到github,歡迎Forkstar.
傳送門: .netCore-WinForms_Designer , 如果覺得自己配置起來麻煩,也可以 clone 下來自己體驗一把喔~

已同步到看一看
赞(0)

分享創造快樂