推荐使用 Avalonia 的 Launcher.LaunchUriAsync 打开链接,它跨平台安全可靠;若失败,再按 Windows/macOS 用 Process.Start、Linux 用 xdg-open 降级处理,并捕获异常。
在 Avalonia 中直接使用 Proce 打开链接是可行的,但要注意跨平台兼容性问题——它在 Windows 上通常能正常工作,但在 Linux 和 macOS 上可能失败或行为不一致(比如缺少默认浏览器关联、权限问题等)。
ss.Start
Avalonia 提供了跨平台安全的 Launcher 类,专门用于打开 URL、文件或启动外部应用,会自动调用系统默认浏览器或关联程序:
Avalonia.Controls(通常已包含)await Avalonia.Controls.ApplicationLifetimes.Launcher.LaunchUriAsync(new Uri("https://example.com"));
bool 表示是否成功启动,建议判断结果并做降级处理如果需要更精细控制,或 Launcher 不可用(如某些嵌入场景),可按平台分支处理:
Process.Start("https://...")(.NET 5+ 支持直接传 URI)xdg-open:Process.Start("xdg-open", "https://example.com");
try/catch,防止因无默认浏览器导致异常避免直接写 Process.Start("https://...") 而不指定平台逻辑,否则在 Linux 上大概率抛出 FileNotFoundException;也不要硬编码 cmd /c start 或 open,这些不是跨平台方案。另外,Avalonia 的 Launcher 需要应用已初始化生命周期(即不能在 AppBuilder 构建前调用)。
假设你在命令执行逻辑里:
Launcher.LaunchUriAsync
RuntimeInformation.IsOSPlatform 选择 fallback 方案