0

我使用 Sharp Develop 4.2 在装有 .NET 4.0 的 Windows 7 计算机上用 c# 编写了一个程序。然后,我将其更改为 Sharp Develop 中的版本,构建它,并将 bin\Release 文件夹中的 .exe 复制到另一台具有 .NET 4.0 的 Windows 7 计算机。它在不加载初始表单的情况下立即崩溃,并且没有给出特定错误。我的 MainForm 方法是这样的:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Drawing.Printing;
using System.Diagnostics;
using System.Text;

namespace BiasTracker1._
{
public partial class MainForm : Form
{
//Here are my initial variables

public static SqlConnectionStringBuilder sqlBldr = new SqlConnectionStringBuilder();
public static DataSet ds = new DataSet();
public static DataTable DisplayTable = ds.Tables.Add("DisplayTable");
SqlDataAdapter RawDataDA;
SqlCommandBuilder RawSampleSCB;
public static DataTable InstrumentDetail = ds.Tables.Add("InstrumentDetail");
public static string DatabaseOwner;
System.Windows.Forms.DataVisualization.Charting.Chart CurrentChart;
public static DataTable ImportDataTable = new DataTable();
public static string NewTransfer;
public static bool ValidatePerCell = true;
public static Image chart1Image;
public static string Title;
public static string NIRLabString;
bool ChangesNotDisplayed = false;
Point PreviousChartLocation;
List<System.Windows.Forms.DataVisualization.Charting.DataPoint> SelectedPoints = new List<System.Windows.Forms.DataVisualization.Charting.DataPoint>();
List<DataRow> SelectedRows = new List<DataRow>();
static double EPS = 2.22045e-016;
double FPMIN = 2.22507e-308 / EPS;
public static CustomPrintDoc pd = new CustomPrintDoc();
int NumOfParametersInReport = 0;
public static SqlConnectionStringBuilder SimPlusConn;
public static string SimPlusProductGUID;
public static string SimPlusSiteCode;
public double[] cof = new double[] {-1.3026537197817904,0.64196979235649026,0.019476473204185836,-0.009561514786808631,-0.000946595344482036,0.000366839497852761,0.000042523324806907,-0.000020278578112534,-0.000001624290004647,0.00000130365583558,0.000000015626441722,-0.000000085238095915,0.000000006529054439,0.000000005059343495,-0.000000000991364156,-0.000000000227365122,0.000000000096467911,0.000000000002394038,-0.000000000006886027,0.000000000000894487,0.000000000000313092,-0.000000000000112708,0.000000000000000381,0.000000000000007106,-0.000000000000001523,-0.000000000000000094,0.000000000000000121,-0.000000000000000028};
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();

public MainForm()
{
     try
     {
          InitializeComponent();
     }
     catch(Exception ex)
     {
          MessageBox.Show("Failed in Initialization.\n" + ex.ToString());
     }
     //Test SQL Connection
     FileStream ConnectionStream;
     try
     {
          ConnectionStream = new FileStream(@"C:\BiasTracker\settings.ini",FileMode.OpenOrCreate);
     }
     catch(DirectoryNotFoundException ex)
     {
          MessageBox.Show("Not able to find ini... Creating one.");
          Directory.CreateDirectory(@"C:\BiasTracker");
          ConnectionStream = new FileStream(@"C:\BiasTracker\settings.ini",FileMode.OpenOrCreate);
     }
     try
     {
          StreamReader ConnectionRdr = new StreamReader(ConnectionStream);
          string line = null;
          if((line = ConnectionRdr.ReadLine()) != null)
          {
               sqlBldr.DataSource = line;
               sqlBldr.Password = ConnectionRdr.ReadLine();
               sqlBldr.UserID = ConnectionRdr.ReadLine();
               sqlBldr.InitialCatalog = ConnectionRdr.ReadLine();
          }
          else
          {
               sqlBldr.DataSource = ".\\SQLEXPRESS";
               sqlBldr.Password = "password";
               sqlBldr.UserID = "sa";
               sqlBldr.InitialCatalog = "BiasMaster";
               StreamWriter ConnectionWtr = new StreamWriter(ConnectionStream);
               ConnectionWtr.WriteLine(".\\SQLEXPRESS");
               ConnectionWtr.WriteLine("password");
               ConnectionWtr.WriteLine("sa");
               ConnectionWtr.WriteLine("BiasMaster");
               ConnectionWtr.WriteLine("applications\\SQLEXPRESS");
               ConnectionWtr.WriteLine("password");
               ConnectionWtr.WriteLine("sa");
               ConnectionWtr.WriteLine("BiasMaster");
               ConnectionWtr.Dispose();
          }
          ConnectionStream.Close();
          ConnectionStream.Dispose();
          ConnectionRdr.Dispose();
     }
     catch(Exception ex)
     {
          MessageBox.Show("Not Able to read connection string\n" + ex.ToString());
     }
     System.Data.SqlClient.SqlConnection tmpConn;
     tmpConn = new SqlConnection(sqlBldr.ConnectionString);
     try                   //Test the connection and existence of the database
     {
          tmpConn.Open();
          tmpConn.Close();
     }
     catch
     {
          MessageBox.Show("Database Connection not Found.");
          tmpConn.Close();
     }

     SqlDataAdapter SettingsDA = new SqlDataAdapter("SELECT * FROM Settings WHERE SettingDesc = 'Owner'",sqlBldr.ConnectionString);
     DataTable SettingsTable = new DataTable();
     SettingsDA.Fill(SettingsTable);
     DatabaseOwner = SettingsTable.Rows[0][1].ToString();

     MakeTreeView();

}

MakeTreeView 被带有消息框的 try catch 包围。

我的表单加载这些控件:

privateSystem.Windows.Forms.ToolStripMenuItemsimPlusImportToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripStatusLabeltoolStripStatusLabel1;
privateSystem.Windows.Forms.ToolStripMenuItemsyncWithSharedServerToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemsyncToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemsetDBConnectionToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemtestToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemdetectOutliersToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemsaveToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemexcludeSelectedToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemgraphActionsToolStripMenuItem;
privateSystem.Windows.Forms.ComboBoxcomboBox7;
privateSystem.Windows.Forms.ToolStripMenuItemprintReportToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemaddToReportToolStripMenuItem;
privateSystem.Windows.Forms.DataVisualization.Charting.Chartchart4;
privateSystem.Windows.Forms.DataVisualization.Charting.Chartchart3;
privateSystem.Windows.Forms.Panelpanel2;
privateSystem.Windows.Forms.DataVisualization.Charting.Chartchart2;
privateSystem.Windows.Forms.ComboBoxcomboBox6;
privateSystem.Windows.Forms.Labellabel7;
privateSystem.Windows.Forms.Buttonbutton3;
privateSystem.Windows.Forms.DataVisualization.Charting.Chartchart1;
privateSystem.Windows.Forms.Buttonbutton2;
privateSystem.Windows.Forms.ToolStripMenuItemremoveProductFormInstrumentToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemcopyInstrumentProductListToAnotherInstrumentToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemaddProductToInstrumentToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemaddParameterToProductToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemtablesToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemtXTToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemcSVToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItembiasDataToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemimportToolStripMenuItem;
privateSystem.Windows.Forms.Labellabel1;
privateSystem.Windows.Forms.ComboBoxcomboBox1;
privateSystem.Windows.Forms.Labellabel2;
privateSystem.Windows.Forms.ComboBoxcomboBox2;
privateSystem.Windows.Forms.Labellabel3;
privateSystem.Windows.Forms.ComboBoxcomboBox3;
privateSystem.Windows.Forms.Labellabel4;
privateSystem.Windows.Forms.ComboBoxcomboBox4;
privateSystem.Windows.Forms.Labellabel5;
privateSystem.Windows.Forms.ComboBoxcomboBox5;
privateSystem.Windows.Forms.Labellabel6;
privateSystem.Windows.Forms.DateTimePickerdateTimePicker1;
privateSystem.Windows.Forms.DateTimePickerdateTimePicker2;
privateSystem.Windows.Forms.ToolStripMenuItemparameterToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemproductToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuIteminstrumentToolStripMenuItem1;
privateSystem.Windows.Forms.ToolStripMenuItemlocationToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemcompanyToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemnewToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemfileToolStripMenuItem;
privateSystem.Windows.Forms.MenuStripmenuStrip1;
privateSystem.Windows.Forms.StatusStripstatusStrip1;
privateSystem.Windows.Forms.TabPagetabPage2;
privateSystem.Windows.Forms.DataGridViewdataGridView1;
privateSystem.Windows.Forms.TreeViewtreeView1;
privateSystem.Windows.Forms.Buttonbutton1;
privateSystem.Windows.Forms.Panelpanel1;
privateSystem.Windows.Forms.TabPagetabPage1;
privateSystem.Windows.Forms.TabControltabControl1;

我唯一能想到的是我正在使用对另一台计算机无法访问的东西的引用。我以为是图表控件,但 .NET 4.0 包含了这些。任何帮助将不胜感激。

4

1 回答 1

2

我找到了罪魁祸首。是这样的:

DatabaseOwner = SettingsTable.Rows[0][1].ToString();

我使用 AppDomain.UnhandledException 找到了它。如果其他人遇到类似问题,这是一个很好的工具。 http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

于 2012-12-17T17:51:33.390 回答