WinForm 直接运行 Admin.NET

简介: 本文介绍了如何将 Admin.NET 以 WinForm 桌面程序模式运行,简化了手动配置 Web 服务的过程,便于演示和作为单机软件使用。通过添加特定 NuGet 包、修改 `Program.cs` 和 `Form1.cs` 文件,并调整项目配置,最终实现了在 WinForm 中嵌入 WebView 组件显示 Admin.NET 界面的效果。

前言

以客户端 WinForm 桌面程序模式直接运行 Admin.NET,免去手动配置 Web 服务的繁琐步骤,方便给别人演示,可以当做单机软件使用了。

新建winform项目

添加包Furion.Pure与Microsoft.Web.WebView2

引用项目:Admin.NET.Web.Core

从Admin.NET.Web.Entry项目复制appsettings.json与SingleFilePublish.cs,

修改Program.cs

// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!

namespace WinFormsApp;

internal static class Program
{
    /// <summary>
    ///  The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Serve.RunNative(RunOptions.Default, Serve.IdleHost.Urls);   // 随机端口
        ApplicationConfiguration.Initialize();
        Application.Run(Native.CreateInstance<Form1>());

    }
}

修改Form1.cs

添加webview组件

// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!

using Microsoft.AspNetCore.Hosting.Server;
using Microsoft.Extensions.Hosting;
using Microsoft.Web.WebView2.Core;

namespace WinFormsApp;

public partial class Form1 : Form
{
    public Form1(IServer server)    // 注入 IServer 服务,获取 Web 启动地址/端口
    {
        InitializeComponent();

        webview.Dock = DockStyle.Fill;
        webview.Source = new Uri(server.GetServerAddress() + "/index.html");

        // 添加 WebView 右键菜单:在浏览器中打开
        webview.CoreWebView2InitializationCompleted += (a, c) =>
        {
            webview.CoreWebView2.ContextMenuRequested += (sender, args) =>
            {
                var newItem = webview.CoreWebView2.Environment.CreateContextMenuItem(
                    "在浏览器中打开", null, CoreWebView2ContextMenuItemKind.Command);

                newItem.CustomItemSelected += (send, ex) =>
                {
                    var pageUri = args.ContextMenuTarget.PageUri;
                    System.Diagnostics.Process.Start("explorer.exe", server.GetServerAddress() + "/index.html");
                };

                args.MenuItems.Insert(args.MenuItems.Count, newItem);
            };
        };
    }
    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

编辑WinFormsApp项目文件

将改为

新建wwwroot目录,将前端生成的文件复制到wwwroot目录

效果

作者

吴晓阳

目录
相关文章
|
3月前
|
开发框架 .NET 开发工具
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
|
开发框架 前端开发 .NET
ASP.NET Core 基础知识之​Startup 类配置
Startup 类配置服务和应用的请求管道。
154 0
|
开发工具
二:使用VS2019 + .net 6创建 webapi 项目
0、创建一个.net 6项目。由于目前.net 6还是预览版,所以需要添加预览版SDK功能。工具 -> 选项 -> 环境 -> 预览功能 ,勾选使用.net sdk预览版。
769 0
二:使用VS2019 + .net 6创建 webapi 项目
|
.NET C++ 开发框架
ASP.NET CORE下运行CMD命令
ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事本的, 现在公司的C++大神开发了个EXE,需要放在服务器上,然后当访问服务器上的某个网页的时候就执行这个EXE了。
2029 0
|
开发框架 缓存 .NET
ASP.NET Core : 十一. 如何在后台运行一个任务
在大部分程序中一般都会需要用到后台任务, 比如定时更新缓存或更新某些状态。
218 0
|
存储 开发框架 缓存
ASP.NET Core : 十一. 如何在后台运行一个任务(上)
在大部分程序中一般都会需要用到后台任务, 比如定时更新缓存或更新某些状态。
192 0
|
SQL 存储 .NET
一起谈.NET技术,ASP.NET调用.sql文件(二)
  笔者前一阵子发表了一篇《ASP.NET调用.sql文件》文章,主要是是解决数据库配置,减去传统手工附加数据库和自己改写web.config文件等等这些复杂的过程,而是配置的向导。其中给出关键的技术知识点,就是通过sql数据库生成数据库脚本即.sql文件,然后通过调用osql.exe来执行.sql文件。
778 0
|
SQL .NET 数据库
一起谈.NET技术,ASP.NET调用.sql文件
  笔者好久没有写随笔了,这次是遇到提出这样的问题“不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库”那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句。
839 0
|
Web App开发 .NET Shell
Sh“.NET研究”arePoint开发笔记-SharePoint2010添加ASP.NET应用程序
大家可能在sharepoint开发webpart会引入一些asp.net的控件,这时候就会需要添加dll引用..下图所示CRSWebControls便是我添加的.   部署这个项目到sharepoint后.
887 0