是否可以确定.Net核心控制台应用程序是否在用户交互模式下运行?
在以前版本的.Net中,可以测试Environment.UserInteractive用户是否可以访问该应用程序.这似乎不存在于.Net核心中.
.NET Core面临的问题不仅仅是经典的.NET Framework,而是定义了"用户交互"的方式.即使在"经典".NET上,也会Environment.UserInteractive感觉很麻烦,因为它依赖于系统API调用来查询用户对象标志并测试描述为的标志Window station has visible display surfaces.目前还不清楚在用于运行命令的无GUI的Windows nano服务器上,这应该在语义上意味着什么.
我的建议是确定您要测试的确切用例.例如,您可以测试附加的输入和输出流是否使用Console.IsOutputRedirected和重定向Console. IsInputRedirected.在非Windows系统上,isatty()可以进行调用,但目前不能用作.NET API(您必须编写PInvoke代码).如果要确定是否作为Windows服务运行,TopShelf会检查服务主机是否已启动该进程.另一种方法是为特定用例添加其他参数 - 例如,添加并检查--noninteractive何时从脚本运行工具.
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |