欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net Core3 用Windows 桌面應用開發(fā)Asp.Net Core網站

 更新時間:2020年01月20日 10:24:35   作者:coredx  
這篇文章主要介紹了.Net Core3 用Windows 桌面應用開發(fā)Asp.Net Core網站,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

曾經在開發(fā) Asp.Net 網站時就在想,為什么一定要把網站掛到 IIS 上?網站項目的 Main 函數哪兒去了?后來才知道這個 Main 函數在 w3wp.exe 里,這也是 IIS 的主進程。Asp.Net 網站的命門被 IIS 捏著,我無力改變。有時需要臨時搭建一個簡單的 Web 服務器,去網上一通度娘,發(fā)現了MyWebServer、HFS (HTTP File Server) 等簡單實用的 Web 服務器,而且它們還是桌面應用。我就在想,什么時候能用 .Net 來開發(fā)一個桌面 Web 服務器。直到 .Net Core 3.0 誕生 ㄟ(≧◇≦)ㄏ

Asp.Net Core 網站本質上是一個控制臺程序,使用 Microsoft.NET.Sdk.Web SDK 進行開發(fā)。Windows桌面應用是 .Net Core 3.0 新增的開發(fā)方式,使用Microsoft.NET.Sdk.WindowsDesktop SDK 開發(fā)。本來一個項目只能使用一個SDK,再加上這兩種應用的特殊性,用 Microsoft.NET.Sdk 基礎 SDK(控制臺應用的SDK)自行使用 Nuget 引入相關包來開發(fā)會導致各種問題。曾經試過網站應用,編譯后會導致Razor引擎異常,無法正常渲染視圖。但自從 Asp.Net Core 網站脫離 IIS 可以自寄宿運行,.Net Core 支持 Windows 桌面應用開發(fā),我就夢想能把 Asp.Net Core 應用托管到 Windows 桌面程序。C/C++ 曾經的天下,大 .Net 也想分杯羹。

經過一段時間的摸索,夢想終于實現了。在此記錄隨筆紀念,同時也分享給廣大園友。

正文

廢話不多說,先說明如何運行項目。首先下載項目源代碼,注意是 NetCore_3.0 分支,地址:https://github.com/CoreDX9/IdentityServerDemo

確認VS 2019 16.4.0 以上版本,安裝 .Net Core 3.1 SDK。打開解決方案,卸載如圖所示的項目,避免生成失敗,都是些暫時沒用的東西。

修改代碼,具體如圖所示:

還原解決方案的 Nuget 包,還原 IdentityServer 的 npm 包。在 IdentityServer 和 IdentityServerGui 上右鍵,選擇發(fā)布, 其中 IdentityServer 使用FolderProfileRelease 配置進行發(fā)布。如果沒有問題的話稍等片刻發(fā)布成功,到解決方案根目錄找到.publish 文件夾,進去把 IdentityServerGui\release 文件夾中的所有東西復制粘貼到IdentityServer\release 文件夾中,途中如果存在重名文件,請忽略大小時間都相同的文件,其他文件盡量選最新或最大的,除非你清楚哪個是你要的。推薦在 Win 10 下操作,或者用其他更智能的文件拷貝軟件。

到此,所有準備工作已經完成,進去找到 IdentityServerGui.exe 雙擊運行即可。

效果預覽

原理講解

桌面程序是一個 WPF 程序,本來是想簡單點用 Winform 來做的,結果 Winform 沒有設計器 (╯‵□′)╯︵┻━┻ 搞得我還現研究 WPF 怎么玩。關鍵在于, Asp.Net Core 網站實際上就是一個標準的 .Net 程序集,可以當作類庫來引用,這里搞清楚以后剩下的事就水到渠成了。在 WPF 項目的依賴項中添加引用 Asp.Net Core 網站項目,using 命名空間,調用在 Asp.Net Core 項目中準備好的公共方法獲取 IHost 接口對象,啟動就行。要注意 ContentRootPath 對不對,不然 css、js 會404。

嗯,原理就是這么簡單。。。來幾張截圖說明下關鍵部分吧 o(*////▽////*)q

一些注意點:

1、在網站運行中關閉主窗口會最小化到系統(tǒng)托盤圖標,雙擊圖標恢復窗口。網站未運行時就是正常退出程序。

2、發(fā)布的網站實際上也可以單獨運行,雙擊 IdentityServer.exe 就行。

3、關于Https配置,具體見下圖。

4、關于網站日志信息,重定向輸出流,具體看圖。

5、WPF 模型綁定需要實現的 INotifyPropertyChanged 接口代碼由PropertyChanged.Fody 在編譯時注入。

6、注意跨線程調用UI控件的問題。

更新(2020-1-10):

請同時克隆 github 項目https://github.com/CoreDX9/Harmonic/tree/dev,在 IdentityServer 項目的依賴項中將Harmonic(Harmonic.csproj )項目引用指向您下載的位置,否則會導致編譯失敗。

  本文地址:https://www.cnblogs.com/coredx/p/12031514.html

  完整源代碼:Github

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論