如何通过编程方式启动本地Blazor Server应用?支持控制台或WinForm触发
如何编程启动Blazor Server应用
当然可以,以下是两种常用实现方式,效果和VS点击调试按钮一致:
方法一:通过执行dotnet命令启动
Blazor Server本质是ASP.NET Core应用,直接调用dotnet run命令就能启动项目,你可以在控制台项目或Windows应用的按钮点击事件中执行这个命令:
WinForms按钮点击示例代码
private void btnLaunchBlazor_Click(object sender, EventArgs e) { var startInfo = new ProcessStartInfo { FileName = "dotnet", Arguments = "run --project \"D:\\Projects\\MyBlazorServerApp\\MyBlazorServerApp.csproj\" --launch-profile \"https\"", WorkingDirectory = "D:\\Projects\\MyBlazorServerApp", CreateNoWindow = false, // 设为true则隐藏控制台窗口 UseShellExecute = true }; Process.Start(startInfo); }
控制台项目示例代码
static void Main(string[] args) { var startInfo = new ProcessStartInfo { FileName = "dotnet", Arguments = "run --project \"D:\\Projects\\MyBlazorServerApp\\MyBlazorServerApp.csproj\"", WorkingDirectory = "D:\\Projects\\MyBlazorServerApp" }; using var process = Process.Start(startInfo); process.WaitForExit(); }
方法二:直接引用Blazor项目并启动宿主
如果不想依赖外部命令,可以将Blazor Server项目改为类库,直接在应用中启动ASP.NET Core宿主:
步骤1:修改Blazor项目配置
编辑Blazor Server项目的.csproj文件,将输出类型改为类库:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <OutputType>Library</OutputType> <!-- 添加这行 --> </PropertyGroup> </Project>
步骤2:编写启动代码
在Windows应用或控制台项目中引用Blazor项目,然后编写启动逻辑:
using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; // WinForms按钮事件示例 private async void btnStartBlazorHost_Click(object sender, EventArgs e) { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<MyBlazorServerApp.Startup>(); // 替换为Blazor项目的Startup类 webBuilder.UseUrls("https://localhost:5001;http://localhost:5000"); // 匹配项目的调试端口 }) .Build(); await host.RunAsync(); }
注意事项
- 确保本地安装了与Blazor项目匹配的.NET SDK版本
- 使用
--launch-profile参数可以指定和VS调试一致的环境配置(对应项目Properties/launchSettings.json中的配置) - 若启动后需要关闭Blazor应用,需手动终止对应的
dotnet进程,或在宿主启动时保留引用以便后续停止
内容的提问来源于stack exchange,提问作者Üh Lieh
相关产品推荐
相关产品推荐

