Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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# Mac上类似Windows的外壳扩展&;Linux_C#_Linux_Macos_Shell - Fatal编程技术网

C# Mac上类似Windows的外壳扩展&;Linux

C# Mac上类似Windows的外壳扩展&;Linux,c#,linux,macos,shell,C#,Linux,Macos,Shell,我正在制作一个应用程序(最初用于Windows,但尽快扩展到Mac和Linux),我需要在这两个平台上扩展shell,以实现最佳可用性。那么,我将如何在C#中为MacOSX和Linux(基于GNOME)进行shell扩展呢 在Windows上有一个名为SharpShell的库,它可以为您处理几乎所有这些,所以这很好。但Mac或Linux没有这样的运气(据我所知) 我希望与之集成的Shell的主要方面是右键单击一个文件,并让它显示一个上下文菜单,其中包含我的应用程序的不同选项。(如Windows上

我正在制作一个应用程序(最初用于Windows,但尽快扩展到Mac和Linux),我需要在这两个平台上扩展shell,以实现最佳可用性。那么,我将如何在C#中为MacOSX和Linux(基于GNOME)进行shell扩展呢

在Windows上有一个名为SharpShell的库,它可以为您处理几乎所有这些,所以这很好。但Mac或Linux没有这样的运气(据我所知)

我希望与之集成的Shell的主要方面是右键单击一个文件,并让它显示一个上下文菜单,其中包含我的应用程序的不同选项。(如Windows上的7-Zip)

当我使用术语Shell时,我是从Windows派生出来的。所以,当我说我希望与Shell集成时,我的意思是在右键单击时创建上下文菜单,以及类似的功能。所有基于用户界面的操作系统。

“Linux”没有“外壳”

它有许多不同的应用程序,提供类似于“shell”的功能,还有更多的应用程序提供类似于文件管理器的功能

这里有一些规范(链接如下)可能与您的目标相关,可能有助于您以通用方式完成其中的一些工作,但最终我不知道您将能够得到的模拟结果有多接近



您试图在完全不同的*NIX环境中应用Windows环境(上下文菜单)中特定的概念。这是一项艰巨的任务,而且非常困难,因为*NIX没有提供一个友好的API来修改环境,因为桌面/shell(Gnome、KDE等)是不完整的。Windows Shell是explorer.exe,提供Shell和桌面体验,explorer.exe向您显示桌面、开始按钮栏和explorer窗口(用于在文件、设备和目录之间导航),因此在Windows中,我们只有一个程序可以做到这一点,Linux或OSX遵循另一种设计,在Linux中,我们有一个桌面管理器(Gnome、KDE、LXDE),它向您展示了桌面,但对于文件交互,我们有一个不同的程序,叫做文件管理器(Nautilus、Dolphin等)。但是,我需要说,这很难,但并非不可能

为了实现这一点,您需要编写一个抽象层(AL)。您的程序只需要调用这个层,并且您需要将AL移植到您拥有的每个平台/桌面管理器

例如:

假设我们有一个名为AddContextualItem(…)的函数在我们的AL中,要向Shell上下文菜单添加一个新项,您的代码需要调用此函数,但对于Windows环境,此函数肯定会调用一些WIN32 API来实现此目标,但在OSX环境或Linux中,此函数AddContextualItem应被另一个与unix桌面环境兼容的实现所取代(如Gnome、KDE等)或特定的文件管理器(鹦鹉螺、海豚等)

<> P>最后,C语言似乎不是完成任务的更好的语言,XAMARIN在单帧框架下做得很好,但还不够。C或C++是更强大的语言。


哪个shell?bash、tcsh、ksh、ash、csh?您正在添加什么扩展?编辑此问题以回答您的问题@Matsperdersonit如果您能够具体说明,其他人通常会更容易提供帮助。与“和类似的功能”不同,您到底想实现什么好吧,现在就这样。一个带有一些选项的右键单击菜单,它将启动一个具有不同命令行参数的应用程序,具体取决于所选的选项。linux拥有的shell数量超过了单手计算的数量。前一个响应者提供了问题的解决方案。@MartyMcGowan我在回答和l中指出了选项的广度按照适用于大多数(如果不是全部的话)主要(以及更多次要)“桌面环境”的标准。你所说的“先前的响应者”是指Kellerman吗?在我发布这篇文章一周后,谁做出了响应?你还有其他的观点吗?