[英]C# ConnectionString on app.config not working on other computers
[英]C# Winform App Not Working On Other Computers (Mysterious Hang On Startup)
我在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設置或配置做任何事情。
我采取的步驟:
在此之后,我嘗試了3種部署方法:
所有這些都沒有用。 它們都做同樣的事情......產生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之外的任何其他框架時,它可以工作。
我不知道為什么,但它為我修好了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.