2012-01-26 53 views
0

有人提到使用COM interop從2.0應用程序使用4.0庫。我的要求略有不同,因爲我不想將類型公開給我的2.0應用程序,但是我在2.0應用程序中有一個Diagnostics.Process.Start(....)命令,直到現在,它在其他地方的其他地方啓動了一個外部EXE本地驅動器也已在2.0框架下編譯。從2.0應用程序啓動外部4.0進程

外部EXE已經升級到使用框架4.0,並且Diagnostics.Process.Start不再有效,似乎是出於這個原因。

我試圖改變被稱爲EXE的.csproj文件下的框架類型,重新編譯和嘗試,但仍然沒有喜悅,不知道現在它是否在VS2010下,它被不可逆轉地改變爲不再兼容2.0。我不會認爲這將是一個問題,就像我說我不是在庫中調用類型,我只是使用Diagnostics.Process.Start來啓動一個外部EXE,這肯定不應該關心什麼版本的框架它是根據什麼編譯的?

有沒有人遇到類似這樣的事情?

+0

Process.Start()完全不關心啓動的進程所需的資源。 「不起作用」不是一個合適的問題描述。 –

回答

1

如果您爲4.0可執行文件啓動一個全新的進程,則框架版本應該是不相關的。這兩個過程在不同的環境中是分開的。你可以指定你試圖啓動新的4.0 EXE時得到的錯誤嗎?

如果在新項目中將目標框架更改爲2.0失敗,我猜測這是另一回事。也許代碼訪問安全性,或一般權限?

編輯:如果你沒有得到明確的錯誤信息,但只是看到你的4.0 EXE啓動和關閉而沒有警告,請嘗試使用像ProcMonDbgView工具趕上意外消息,或添加到System.Diagnostics.Debugger通話。在4.0進程的主入口點附加(),進入調試並查看正在發生的事情。

+0

感謝您提供有關調試的提示,它們將在未來有用。事實證明問題在於Process.Start(app,params)被稱爲Process.Start(App.pathname +「」,params),即在應用程序名稱末尾有一個多餘的額外空間。出於某種原因,當啓動一個在VS2005中編譯的項目時,它並不關心額外的空間,但是當你將項目升級到VS2010時,它不再啓動這個額外的空間。非常奇怪 – NZJames

相關問題