Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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# 在SharpShell从上下文菜单启动的程序中继承正确的app.config_C#_Wcf_Contextmenu_App Config - Fatal编程技术网

C# 在SharpShell从上下文菜单启动的程序中继承正确的app.config

C# 在SharpShell从上下文菜单启动的程序中继承正确的app.config,c#,wcf,contextmenu,app-config,C#,Wcf,Contextmenu,App Config,我正试图开发一个与Windowsshell集成的c#应用程序,因此我使用的是sharpshell库。 我在同一个项目中直接使用sharpshell库,为handle上下文菜单创建了一个专用类。 最初,我使用以下命令链接到关联菜单上的单击事件: System.Diagnostics.Process.Start(path, _command.ToString() + "|" + string.Join("|", SelectedItemPaths)); 系统正在运行。 现在,我尝试直接从Click

我正试图开发一个与Windowsshell集成的c#应用程序,因此我使用的是sharpshell库。 我在同一个项目中直接使用sharpshell库,为handle上下文菜单创建了一个专用类。 最初,我使用以下命令链接到关联菜单上的单击事件:

System.Diagnostics.Process.Start(path, _command.ToString() + "|" + string.Join("|", SelectedItemPaths));
系统正在运行。 现在,我尝试直接从Click事件开始创建程序的新距离。Main类包含以下代码:

            DmsDrive.Program.Main(new string[] { _command.ToString() + "|" + string.Join("|", SelectedItemPaths) });
远程监控系统工作正常,启动正常。 问题是,使用此方法启动进程会使程序在windows目录中查找app.config(主currentdomain是explorer.exe进程)。因此,app.config未加载,wcf服务的合同也无法工作

你知道我该怎么办吗?还是继续使用Process.start方法更好


关于。

我建议直接使用流程启动功能启动流程-我认为如果我正确阅读了您的帖子,您实际上是在直接调用程序的“Main”函数,这意味着您根本没有创建新流程(只需在Windows资源管理器进程中调用一个函数,该进程就是加载shell扩展的进程)。这意味着您正在运行的程序是在Windows shell进程中运行的,该进程不太友好,好像它崩溃了一样,它会使资源管理器崩溃

使用进程启动启动程序。如果需要配置它将如何连接,请考虑将命令行参数传递给程序(例如服务地址),并手动构建WCF客户端绑定。(事实上,您可能会发现,一旦习惯了以编程方式创建WCF客户机,它们的配置文件方法就更冗长,更不直观!)

最后一个选项是,对于严肃的Windows软件体系结构,您可以创建一个Windows服务,该服务承载某种“协调器”服务。shell上下文菜单可以调用协调器服务(说“做点什么”)服务可以启动进程,或者进程可以在启动时启动,并在需要时轮询服务