【问题标题】:WPF application on different computer not displaying window不同计算机上的 WPF 应用程序不显示窗口
【发布时间】:2014-05-13 00:19:17
【问题描述】:

我为 Windows 7 开发了一个程序,它可以在我的计算机上正常运行(在发布模式下)。但是,当我将项目文件夹复制并粘贴到我的外部 HDD 并在另一台计算机上尝试时,它“运行”但没有真正显示出来。我将尝试发布相关代码:

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();
    }

在启动屏幕之后,主窗口应该打开,但它没有并且这个 MessageBox 永远不会出现。

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

正如我所提到的,程序在发布和调试模式下都按预期运行,但是当我将它带到另一台计算机时,它只显示“为什么是我??”一次而不是两次应该的。有什么想法吗?

【问题讨论】:

  • 程序还在任务管理器中运行吗?如果不是,您可能有错误。依赖或路径错误
  • 尝试检查 Windows 事件日志(win+R -> eventvwr -> Windows 日志 -> 应用程序)。通常当应用程序崩溃时,就像你的情况一样 - 崩溃信息应该在那里。
  • 您要将代码移动到的另一台机器是什么?他们都是x64的吗?你在什么配置下构建?你有外部参考吗?
  • 您还应该在启动代码中添加日志,并在 mw.Show() 周围添加一个又大又丑的 try/catch 块。

标签: c# wpf xaml


【解决方案1】:

原来我的代码有很多问题。我遇到的最大问题之一是运行它的计算机的硬编码文件路径。然而,真正帮助我解决所有与计算机迁移相关的问题是在每个类中添加以下代码:

在构造函数中:

 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

创建处理函数:

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

它缓慢而乏味,但它在帮助定位问题根源方面做得很好。所以我的程序有很多问题,但是添加上面的代码帮助解决了很多问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多