2012-06-13 50 views
1

我已經創建了一個使用WPF的基本工具。如果我從它所在的目錄中運行該工具,一切正常。但是,如果我從其他目錄運行,則不會發生任何事情。從命令行,它只是返回到提示。我沒有WinForms應用程序的這個問題,並且該目錄確實包含了該工具所依賴的一個dll。還有什麼可以繼續?如何從不同目錄運行WPF應用程序?

編輯:我想我找到了這個問題。它在MainWindow.xaml.cs構造函數中的InitializeComponent調用中死去。被綁定的屬性正試圖訪問空對象。但是,我還沒有弄清楚爲什麼只有當我從一個不同的目錄運行該屬性爲空。考慮解決這個問題。

+0

您是否正在使用Environment.CurrentDirectory更改目錄?或者在快捷方式中設置工作目錄? – Slugart

+0

「從不同目錄運行」是什麼意思?你的應用程序是否做了某些需要特殊權限的事情,比如訪問文件系統? – madd0

+0

我只是從命令行運行。假設該工具位於C:\ temp \ debug。但是,我在目錄c:\ temp中並嘗試運行「C:\ temp \ debug \ tool.exe」。我能夠成功使用快捷方式,因爲它包含一個工作目錄。 – bsh152s

回答

3

回覆:爲什麼屬性爲null

我懷疑的InitializeComponent試圖加載一些資源,並期待在WorkingDirectory的資源文件。

試試這個:

var realWD = Environment.CurrentDirectory; 
Environment.CurrentDirectory = 
     System.IO.Path.GetDirectory(
      System.Reflection.Assembly.GetEntryAssembly().Location); 
InitializeComponent(); 
Environment.CurrentDirectory = realWD; 

編輯:只是重新格式化,以避免水平滾動。

-Jesse

+0

那實際上是怎麼回事。不知道爲什麼當我試圖反序列化一個不存在的文件時,異常沒有被吹掉。 – bsh152s

+0

一些異常是由InitializeComponent在內部捕獲的,或者是一些更深層的代碼。 –

相關問題