如何解决将命令行参数传递给 C# .NET 应用程序而不使用 UWP 应用程序内的清单文件
我有一个正在开发的 UWP 应用程序,它启动另一个应用程序,该应用程序又启动一个 bat 文件,该文件执行某些任务,以便不阻塞 UI 线程,同时具有执行任务的足够权限。我尝试启动的 EXE 是一个单独的 .NET 框架应用程序,它在同一个 SLN 中,但在一个应用程序包项目中是一个不同的项目。但是,UWP 应用程序启动的第二个 C# 应用程序需要命令行参数,该参数的频率可能由应用程序的用户决定,因此不能将它们硬编码到清单文件中,并使用以下命令:>
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("ArgumentGroupName");
上述命令是否有替代方法,允许传入参数,同时每次启动时都可以更改参数值?除了对 SO 帖子的一条评论外,我已经搜索了几天没有找到任何关于此的主题,我找不到说它可以在不使用应用程序清单文件的情况下完成。我正在使用最新版本的 Visual Studio 2019 和最新的 .NET Framework (4.8) 和 Windows SDK(与 Windows 2004 兼容)。第二个 C# 应用使用 .NET Framework 运行,主 UWP 应用使用 Windows SDK。
解决方法
在不使用 UWP 应用程序内的清单文件的情况下将命令行参数传递给 C# .NET 应用程序
根据您的要求,您可以使用 LocalSettings
传递启动器参数。将参数存储在 UWP 客户端并从启动器中检索值,然后使用检索到的参数调用进程开始。
例如
UWP 客户端
private async void btnClick_Parameters(object sender,RoutedEventArgs e)
{
if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract",1,0))
{
// store command line parameters in local settings
// so the Lancher can retrieve them and pass them on
ApplicationData.Current.LocalSettings.Values["parameters"] = "command parameter";
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("Parameters");
}
}
启动器
string parameters = ApplicationData.Current.LocalSettings.Values["parameters"] as string;
Process newProcess = Process.Start(rootPath + @"WPF\WPF.exe",parameters);
有关更多详细信息,请参阅 stanfen 的博客 UWP with Desktop Extension – Part 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。