Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MacOS上后台运行.NetCore控制台应用程序_C#_Macos_.net Core - Fatal编程技术网

C# 在MacOS上后台运行.NetCore控制台应用程序

C# 在MacOS上后台运行.NetCore控制台应用程序,c#,macos,.net-core,C#,Macos,.net Core,我正在开发一个.NetCore控制台应用程序,它将在Windows和MacOS上使用。我有一个要求,即控制台应用程序不应以任何方式对最终用户可见 我在Windows上通过使用kernel32和user32 dll实现了这一点: [DllImport("kernel32.dll")] private static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] private static extern bool ShowWi

我正在开发一个.NetCore控制台应用程序,它将在Windows和MacOS上使用。我有一个要求,即控制台应用程序不应以任何方式对最终用户可见

我在Windows上通过使用kernel32和user32 dll实现了这一点:

[DllImport("kernel32.dll")]
private static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_HIDE = 0;
const int SW_SHOW = 5;
const int SW_RESTORE = 9;

public static void EnableBackgroundMode()
{
    var handle = GetConsoleWindow();
    ShowWindow(handle, SW_HIDE);
}
public static void DisableBackgroundMode()
{
    var handle = GetConsoleWindow();
    ShowWindow(handle, SW_SHOW);
}
在MacOS上尝试使用这些方法时,我得到了一个“System.DllNotFoundException”,这是预期的,因为这些dll是我所理解的特定于windows的


有没有办法在MacOS上实现这一点?

可能重复@Franck我不认为这是重复的,因为这个问题只针对osx,而不是Windows。提供的链接显示了如何在Windows而不是Mac(osx)中解决此问题。@Ruan您找到解决方案了吗?“我也在寻找同样的答案。”奈纳索尼我设法想出了一个解决办法是的。解决方案是相当多的工作,因为我必须为Mac单独创建一个Cocoa应用程序。这反过来会下载.Net核心文件并在“隐藏”终端中启动它们,另外,您还可以使用Cocoa应用程序在系统中显示图标,从而允许用户进行某种程度的交互。这是我实现这一目标的唯一途径。希望对您有所帮助:)@Ruan谢谢您的回复!我还了解到,我可以通过Xamarin.mac最大限度地利用C#代码。因此,我也在使用windows应用程序中的一些C#代码从头开始编写单独的应用程序。可能重复@Franck,我不认为这是重复的,因为这个问题只针对osx,而不是windows。提供的链接显示了如何在Windows而不是Mac(osx)中解决此问题。@Ruan您找到解决方案了吗?“我也在寻找同样的答案。”奈纳索尼我设法想出了一个解决办法是的。解决方案是相当多的工作,因为我必须为Mac单独创建一个Cocoa应用程序。这反过来会下载.Net核心文件并在“隐藏”终端中启动它们,另外,您还可以使用Cocoa应用程序在系统中显示图标,从而允许用户进行某种程度的交互。这是我实现这一目标的唯一途径。希望对您有所帮助:)@Ruan谢谢您的回复!我还了解到,我可以通过Xamarin.mac最大限度地利用C#代码。因此,我还使用windows应用程序中的一些C#代码从头开始编写独立的应用程序。