2014-05-13 135 views
1

我開發了一個Windows 7的程序,它運行在我的電腦上,因爲它應該(在發佈模式下)。但是,當我將項目文件夾複製並粘貼到我的外部硬盤並在另一臺計算機上試用時,它會「運行」,但沒有任何顯示。我會嘗試發佈相關代碼:WPF應用程序在不同的計算機上不顯示窗口

class App : Application 
{ 
    [STAThread()] 
    static void Main() 
    { 
     new App(); 
    } 
    /// <summary> 
    /// Starts application with splash screen 
    /// </summary> 
    public App() 
    { 
     StartupUri = new System.Uri("SplashScreen.xaml", UriKind.Relative); 
     Run(); 
    } 
} 

即使此屏幕永遠不可見,我的MessageBox會顯示。

//constructor 
    public SplashScreen() 
    { 
     //generated method 
     InitializeComponent(); 
     System.Windows.MessageBox.Show("WHY ME??"); 
     mw = new MainWindow(); 
     mw.Show(); 
    } 

閃屏後,在主窗口應該打開,但是它沒有,這消息框從未出現。

public MainWindow() 
    { 
     //Windows generated 
     InitializeComponent(); 
     System.Windows.MessageBox.Show("WHY ME??"); 
    } 

正如我提到的,程序運行,因爲它是在發佈和調試模式應該是,但是當我把它帶到另一臺計算機上只顯示「WHY ME?」一次而不是兩次。有任何想法嗎?

+0

程序是否仍在任務管理器中運行?如果不是,你可能有一個錯誤。依賴或路徑錯誤 –

+1

嘗試檢查Windows事件日誌(win + R - > eventvwr - > Windows日誌 - >應用程序)。通常當你的應用崩潰時 - 崩潰信息應該在那裏。 –

+0

你正在將代碼移動到的其他機器是什麼?他們都是X64嗎?你在建立什麼樣的配置?你有外部參考嗎? –

回答

2

原來我的代碼有很多錯誤。我遇到的最大問題之一是硬編碼的文件路徑到它正在運行的計算機。然而,真正幫助我的所有計算機遷移相關的問題是添加以下代碼每個類:

在構造函數:

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 

創建處理函數:

void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
    { 
     System.Windows.MessageBox.Show(e.ExceptionObject.ToString()); 
    } 

它是緩慢的然而它卻很挑剔,但它在幫助定位問題來源方面做得相當不錯。所以我的程序有很多錯誤,但添加上面的代碼有助於解決很多問題。

相關問題