2011-04-24 119 views
0

如何从另一个WPF应用程序(4.0应用程序)运行一个WPF exe(位于3.5框架中)。如何在WPF应用程序中调用.exe

上述原因是:
我正在使用一些仅支持3.5框架的第三方,而我现有的应用程序在4.0上。我无法改变当前的应用程序目标类型b'coz它有大约200个需要改变的项目。

我坚持这个问题,我也需要传递字符串作为参数。

下面是代码,我尝试过,但没有得到有任何运气:

var processInfo = new ProcessStartInfo(path, param); 
Process.Start(processInfo); 

编辑: 我改变了路线,它为我工作。但现在问题是我无法获得.exe应用程序中的命令行参数。就像目前我传递“param”(它是一个字符串类型的数组)作为我的.exe参数。但任何人都可以请帮助我,如何在.exe文件中获取此参数。手段在window.Loaded处理程序我想获得这个参数,并基于我想执行一些操作。

+0

仔细检查路径,它是否包含目录和文件。您可能还必须将启动目录路径传递给接受更多选项的重载。 – 2011-04-24 18:20:57

+0

重新标记的问题 - 不是WPF或XAML相关的。 – 2011-04-24 18:25:07

+0

您是否使用日志查看应用程序版本4是否获取这些参数? – Rev 2011-04-25 12:27:48

回答

1

如果您提供的路径是相对路径,那么请检查工作目录(Environment.CurrentDirectory)此API以及许多其他API将此路径用作创建绝对路径的基本路径,当提供相对路径时。

+0

嗨,谢谢你的回答..我改变了路径,它适用于我..但现在的问题是我无法获得.exe应用程序中的命令行参数。 – Peter 2011-04-24 18:46:28

+0

像目前我将“参数”作为参数传递给我的.exe。但是,请您帮助我如何在.exe文件中获取此参数。手段在window.Loaded处理程序我得到这个参数,并基于我可以触发一些查询或任何行动。 – Peter 2011-04-24 18:50:10

+0

命令行参数应该在你的主函数的字符串数组中(在你开始的过程中)。你也可以通过访问Environment.CommandLine – Asher 2011-04-24 18:53:33

0

启动另一个进程将为该应用程序加载所需的.NET CLR版本。启动需要与当前版本不同版本的.NET应用程序没有问题。

检查路径是否有正确的值。

请发布您收到的任何异常。

+0

嗨,Emo,感谢您的回答,您是正确的,实际上问题是无效的路径,但现在停留在命令行参数的东西。 – Peter 2011-04-24 19:00:22

+0

请注意,您可能需要转义或添加引号! – 2011-04-24 19:02:49

0

您应该能够从.Net 4.0应用程序调用.Net 3.5应用程序,而无需使用Process.Start()。只需将3.5 exe添加到引用中,现在可以使用该程序集中的类型。

相关问题