C#Winform应用程序无法在其他计算机上运行(神秘的启动时)

C#Winform应用程序无法在其他计算机上运行(神秘的启动时),第1张

概述我在Visual Studio中创建了一个 winforms应用程序.这个应用程序是一个简单的Hello World应用程序,按下时将按钮的文本更改为“Hello World”. 以下是代码: using System;using System.Windows.Forms;namespace HelloWorld{ public partial class Form1 : Form 我在Visual Studio中创建了一个 winforms应用程序.这个应用程序是一个简单的Hello World应用程序,按下时将按钮的文本更改为“Hello World”.

以下是代码:

using System;using System.windows.Forms;namespace HelloWorld{    public partial class Form1 : Form    {        public Form1()        {            try            {                InitializeComponent();            }            catch (Exception ex)            {                MessageBox.Show(ex.ToString());            }        }        private voID button1_Click(object sender,EventArgs e)        {            try            {                button1.Text = "Hello World";                button1.Enabled = false;            }            catch (Exception ex)            {                MessageBox.Show(ex.ToString());            }        }    }}

当我尝试在我的开发计算机上打开这个程序时,一切正常.我尝试在安装了.NET 3.5的10台不同的windows PC上运行(我的目标平台),并且每个人都做同样的事情.

一旦我双击,或右键单击并以管理员身份运行,似乎应用程序什么都不做,但我可以告诉它正在做某事,因为鼠标光标变为等待光标……并且它无限期地执行此 *** 作.它还会产生应用程序名称的3个无法终止的进程.没有错误或“此应用程序已停止工作”被抛出.

此外,我无法使用任务管理器,进程资源管理器,deBUGdiag或procdump创建故障转储.当我尝试使用进程资源管理器获取转储时…它会说“只是ReadProcessMemory的一部分”.当我尝试使用deBUGdiag创建时…转储是0字节并且在分析时失败.当我尝试使用procdump进行转储时…它将永远坐在那里.

我甚至试图以这种方式试图强迫某种错误……

using System;using System.windows.Forms;namespace HelloWorld{    static class Program    {        /// <summary>        /// The main entry point for the application.        /// </summary>        [STAThread]        static voID Main()        {            try            {                System.windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);                System.windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnGuiUnhandedException);                AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;                Application.EnableVisualStyles();                Application.SetCompatibleTextRenderingDefault(false);                Application.Run(new Form1());            }            catch (Exception e)            {                HandleUnhandledException(e);            }            finally            {                // Do stuff            }        }        private static voID HandleUnhandledException(Object o)        {            // Todo: Log it!            Exception e = o as Exception;            if (e != null)            {            }        }        private static voID OnUnhandledException(Object sender,UnhandledExceptionEventArgs e)        {            HandleUnhandledException(e.ExceptionObject);        }        private static voID OnGuiUnhandedException(object sender,System.Threading.ThreadExceptionEventArgs e)        {            HandleUnhandledException(e.Exception);        }    }}

后来我尝试在Main()函数开头的program.cs中放入一个MessageBox和一个返回.它仍然在所有10台PC上做同样的事情.所以我认为当程序运行时,它实际上从未达到过:

Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());

毕竟,我想知道它是否必须对我的Visual Studio设置或配置做任何事情.

我采取的步骤:

>我在Visual Studio 2015中创建了新的winforms应用程序
>我将.Net平台改为3.5
>我编写简单的应用程序如上所示
>在配置管理器下,我改为x86
>我内置了调试和发布模式

在此之后,我尝试了3种部署方法:

>将整个版本文件夹复制到另一台计算机
>尝试过ClickOnce技术
>尝试过InstallShIEld limited

所有这些都没有用.它们都做同样的事情……产生3个具有相同名称但无法终止的进程,除非我重新启动计算机.无法创建转储以查看问题所在.我跑步时无限期挂起,不显示任何错误或窗口. ClickOnce和InstallShIEld永远不会通过任何类型的向导.他们只是无限期地挂起……

我尝试在朋友的PC上定位2.0,3.0,3.5,4.0,4.5,4.5.2 .NET版本,我也遇到了同样的情况.这些PC是windows 7和8.1.为什么我的简单HelloWorld应用程序会这样做?它是否在我的Visual Studio配置中?

解决方法 我似乎终于解决了这个问题.问题在于我创建新项目时.它总是针对4.5.2.然后我会转到项目设置并从那里更改框架版本.

当我在创建项目之前选择除4.5.2之外的任何其他框架时,它可以工作.

我不知道为什么,但它为我修好了.

总结

以上是内存溢出为你收集整理的C#Winform应用程序无法在其他计算机上运行(神秘的启动时)全部内容,希望文章能够帮你解决C#Winform应用程序无法在其他计算机上运行(神秘的启动时)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存