开发者

My application won't run under .net 2.0 , works on 3.5

I made this windows forms application in .net 3.5 (VS c# express) . Now I want to convert it so it can run with just .net 2.0 installed. SO in my project properties: I selected "target framework " as 2.0 , fixed the errors that I got.

After this the app runs fine with .net 3.0 installed , but won't run on a fresh install of xp with with .net 2.0 installed. "Application has crashed. send error report" What do I do ? I want this thing to run under 2.0.

here is the code :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Xml;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        int numberOfMatches = 0;

        string[,] data;
        bool update = true ;
        string fileToParse = Path.GetTempPath() + "cricketfile.xml";
        int matchToShow = 0;
        bool showschedule = true ;

        public const int WM_NCLBUTTONDOWN = 0xA1;
        public const int HT_CAPTION = 0x2;

        [DllImportAttribute("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd,
                         int Msg, int wParam, int lParam);
        [DllImportAttribute("user32.dll")]
        public static extern bool ReleaseCapture();

        RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

        public Form1()
        {

            InitializeComponent();

            if (Environment.OSVersion.Version.Major <= 5)
            {
                // MessageBox.Show("xp");
            }
            else
            {
                label1.Top = 1;
                pictureBox1.Top = 1;
            }
            // label1.Left = 1;
            int X = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width / 2 - this.Width / 2;
            this.Location = new System.Drawing.Point(X, -5);


            if (rkApp.GetValue("cricketscore") == null)
            {
                startWithWindowsToolStripMenuItem.Checked = false ;
            }
            else
            {
                startWithWindowsToolStripMenuItem.Checked = true ;
            }
            this.Region = new Region(new Rectangle(10, 10, 197, 17));
            ToolTip tooltip = new ToolTip();
//            MessageBox.Show(" F" + tooltip.AutomaticDelay);
            tooltip.AutomaticDelay = 0;
            tooltip.InitialDelay = 0;
            tooltip.SetToolTip(pictureBox1, " right click for settings, left click to move");
            tooltip.SetToolTip(label1, " right click for settings, left click to move");
            fetchData();
            addContextEntries();
            chooseIndia();
            updateScore();

           // MessageBox.Show(data.GetLength(0).ToString());


            //foreach (string s in data)
            //{
            //    Console.WriteLine(s);
            //}

            timer1.Interval = 20 * 1000;
            timer1.Enabled = true;

        }
        public void addContextEntries()
        {
           // MessageBox.Show("num- " + numberOfMatches);
            List<ToolStripMenuItem> Mylist1 = new List<ToolStripMenuItem>();
            for (int i = 0; i < numberOfMatches; i++)
            {
                Mylist1.Add( new ToolStripMenuItem() );
                this.contextMenuStrip1.Items.Add(Mylist1[i]);
                Mylist1[i].Text = "See Match " + (i + 1) + "'s score";
                switch(i) 
                {
                    case 0:
                        Mylist1[i].Click += new System.EventHandler(this.match1);
                        break;
                    case 1:
                        Mylist1[i].Click += new System.EventHandler(this.match2);
                        break;
                    case 2:
                        Mylist1[i].Click += new System.EventHandler(this.match3);
                        break;
                    case 3:
                        Mylist1[i].Click += new System.EventHandler(this.match4);
                        break;
                    case 4:
                        Mylist1[i].Click += new System.EventHandler(this.match5);
                        break;
                }

            }

        }
        public void match1(object sender, EventArgs e)
        {
           // MessageBox.Show("match 1");
            matchToShow = 0;
            label1.Text = data[0, 0] + " " + data[0, 1];


        }
        public void match2(object sender, EventArgs e)
        {
          //  MessageBox.Show("match 2");
            matchToShow = 1;
            label1.Text = data[1, 0] + " " + data[1, 1];

        }
        public void match3(object sender, EventArgs e)
        {
            matchToShow = 2;
            label1.Text = data[2, 0] + " " + data[2, 1];

        }
        public void match4(object sender, EventArgs e)
        {
            matchToShow = 3;
            label1.Text = data[3, 0] + " " + data[3, 1];

        }
        public void match5(object sender, EventArgs e)
        {
            matchToShow = 4;
            label1.Text = data[4, 0] + " " + data[4, 1];

        }

        public void chooseIndia()
        {
            try
            {
                for (int i = 0; i < data.GetLength(0); i++)
                {
                    // MessageBox.Show("i - " + i);
                    if (data[i, 3].ToLower().Contains("india"))
                    {
                        matchToShow = i;
                      //  MessageBox.Show("i - " + i);
                        break;
                    }
                }
            }
            catch (NullReferenceException ne)
            {

            }
        }
        public void updateScore()
        {
            fetchData();
            if (update == true)
            {
                try
                {
                    label1.Text = data[matchToShow, 0] + " " + data[matchToShow, 1];
                }
                catch (Exception e)
                { 

                }
            }
        }

        public void fetchData()
        {
            int matchnumber = -1;
            numberOfMatches = 0;
            WebClient Client = new WebClient();
            try
            {
              Client.DownloadFile("http://synd.cricbuzz.com/score-gadget/gadget-scores-feed.xml", fileToParse);
            }
            catch (WebException we)
            {
               // if (we.ToString().ToLower().Contains("connect to"))
               // MessageBox.Show("sdf");
                    label1.Text = "No Internet";
                    update = false ;
                    this.Update();
                   // System.Threading.Thread.Sleep(1000);

            }
            try
            {
                XmlTextReader xmlreader0 = new XmlTextReader(fileToParse);
                while (xmlreader0.Read())
                {
                    if (xmlreader0.Name.ToString() == "match" && xmlreader0.NodeType == XmlNodeType.Element)
                    {
           开发者_运维知识库             ++numberOfMatches;
                    }
                }
                data = new string[numberOfMatches, 4];
                // numberOfMatches = 0;
                // MessageBox.Show("matchnumbers - " + numberOfMatches);
               // MessageBox.Show("asd");
                XmlTextReader xmlreader = new XmlTextReader(fileToParse);
                while (xmlreader.Read())
                {
                    // MessageBox.Show("READING");
                    if (xmlreader.Name.ToString() == "header" && xmlreader.NodeType == XmlNodeType.Element)
                    {
                        xmlreader.Read();

                        data[matchnumber, 0] = xmlreader.Value;
                        //  MessageBox.Show(xmlreader.Value);
                    }


                    if (xmlreader.Name == "description" && xmlreader.NodeType == XmlNodeType.Element)
                    {
                        //  MessageBox.Show(xmlreader.Value);
                        xmlreader.Read();
                        //  MessageBox.Show("matched - " + xmlreader.Value);
                        data[matchnumber, 1] = xmlreader.Value;
                    }

                    if (xmlreader.Name == "url-text" && xmlreader.NodeType == XmlNodeType.Element)
                    {
                        xmlreader.Read();
                        // MessageBox.Show(xmlreader.Value);
                        data[matchnumber, 2] = xmlreader.Value;
                    }

                    if (xmlreader.Name == "url-link" && xmlreader.NodeType == XmlNodeType.Element)
                    {
                        xmlreader.Read();
                        data[matchnumber, 3] = xmlreader.Value;
                    }

                    if (xmlreader.Name.ToString() == "match" && xmlreader.NodeType == XmlNodeType.Element)
                    {
                        matchnumber++;
                        showFullScorecardToolStripMenuItem.Text = "Show full scorecard";
                        showschedule = true;
                        update = true;
                    }
                    if (xmlreader.Name.ToString() == "nextlive" && xmlreader.NodeType == XmlNodeType.Element)
                    {
                        label1.Text = "No current match";
                        showFullScorecardToolStripMenuItem.Text = "Show Schedule";
                        showschedule = false;
                        update = false;
                        break;
                    }

                }
                xmlreader.Close();
                xmlreader0.Close();
            }
            catch (FileNotFoundException fe)
            {
                // MessageBox.Show("no internet");
            }

        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            updateScore();
        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
            }
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
            }
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void switchColrosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if ( label1.ForeColor == System.Drawing.Color.Black)
                label1.ForeColor = System.Drawing.Color.White ;
            else
                label1.ForeColor = System.Drawing.Color.Black; 
        }

        private void startWithWindowsToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void startWithWindowsToolStripMenuItem_CheckStateChanged(object sender, EventArgs e)
        {
            if (startWithWindowsToolStripMenuItem.Checked == true)
            {
                rkApp.SetValue("cricketscore", Application.ExecutablePath.ToString());
            }
            else
            {
                rkApp.DeleteValue("cricketscore", false);
            }
        }

        private void showFullScorecardToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if ( showschedule == true )
                System.Diagnostics.Process.Start(data[matchToShow, 3]);
            else
                System.Diagnostics.Process.Start("http://www.cricbuzz.com/component/cricket_schedule/");
        }

        private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
            }
        }

        //public void findNumberOfMatches()
        //{
        //    if (xmlreader.Name.ToString() == "match" && xmlreader.NodeType == XmlNodeType.Element)
        //    {
        //        matchnumber++;
        //    }
        //}
    }
}

Thanks


The way it closes doesn't look like need to upgrade the framework but lets see those:

  • Try to test it under .NET 2.0 with latest .NET 2.0 service pack installed

  • Try to check the references in your project whether they're all clean to .NET 2.0 or not, sometimes this is not done correctly. Press F4 of every assembly that has 2.0 and 3.x versions to see properties and confirm (and remove/add if needed). If you see anything like LINQ or so, this needs to be removed.

  • Try to bring Visual C# 2005 Express or similar and see if the code compiles under it. Or create new .NET 2.0 project and copy your code to it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜