2011-04-24 67 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添加到引用中,現在可以使用該程序集中的類型。