以下代码在.net框架上成功启动了Teams会议,但是在.net核心上运行时抛出System.ComponentModel.Win32Exception
(The system cannot find the file specified.
):
using System;
namespace TryToRunMsteams
{
class Program
{
static void Main(string[] args)
{
var msg = "msteams://teams.microsoft.com/l/meetup-join/19%3ameeting_NTIyYmU4ZG...";
System.Diagnostics.Process.Start(msg);
}
}
}
这是为什么?两者都是同一用户(已选中Environment.UserName
)。
如何在.net core中运行注册协议进程?
无法从.net核心运行注册协议进程,但可以从.net框架运行
这样做的主要原因是因为您要针对多个平台,而不仅仅是.NET框架。以.NET框架为目标时,该标准Process.Start
将按照您所见的那样工作。
var msg = "msteams://teams.microsoft.com/l/meetup-join/19%3ameeting_NTIyYmU4ZG...";
System.Diagnostics.Process.Start(msg);
要解决启动过程中的问题,.NET Core
请参见下面的语法。
var msg = "msteams://teams.microsoft.com/l/meetup-join/19%3ameeting_NTIyYmU4ZG...";
System.Diagnostics.Process.Start("cmd", $"/C start {msg}");
您确实拥有的另一种选择(不会解决您的问题)是检查您所运行的平台。如果需要执行基于平台的特定操作,可能会很有用。*请注意,这需要System.Runtime.InteropServices
命名空间。
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
// Do something for Windows
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句