2011-09-12 41 views
1

我寫了一個簡單的.NET控制檯應用程序。多簡單?這個簡單的:什麼會導致簡單的.NET控制檯應用程序在Windows XP下失敗?

class Program 
{ 
    static void Main(string[] args) 
    { 
     if (args.Length == 0) 
     { 
      Console.Error.WriteLine("Returns a date some number of days in the future or past."); 
      Console.Error.WriteLine(); 
      Console.Error.WriteLine("GETDATE days [format]"); 
      Console.Error.WriteLine(""); 
      Console.Error.WriteLine(" days  Specifies the number of days (defaults to 0, may be negative)."); 
      Console.Error.WriteLine(" format .NET format string for output, (defaults to \"MM-dd-yyyy\")."); 
      return; 
     } 
     string number = (args[0]); 
     string format = (args.Length > 1) 
          ? args[2] 
          : "MM-dd-yyyy"; 

     int days; 
     if (!int.TryParse(number, out days)) 
     { 
      Console.Error.WriteLine("Can't parse {0} into an integer.", days); 
      return; 
     } 

     DateTime d = DateTime.Now + new TimeSpan(days, 0, 0, 0); 
     try 
     { 
      string result = d.ToString(format); 
      Console.Out.Write(result); 
     } 
     catch (FormatException) 
     { 
      Console.Error.Write("{0} is not a valid format.", format); 
     } 
    } 
} 

我已經對.NET 2.0框架做了一個發佈版本,並將可執行文件給了我的一個客戶。當他在他的XP機器(或他的Windows 2008服務器)上的命令窗口中運行它時,他得到(DOS)內存不足錯誤。

我在絞盡腦汁想弄清楚我可能做錯了什麼。我當然沒有我自己的XP環境來測試,所以我不能複製這個問題。有任何想法嗎?

+0

如果你有Windows 7專業版,你可以安裝XPMode這是一個XP虛擬機。這應該允許你在本地測試這個問題。 – ChrisF

+0

我知道它有點明顯,他是否安裝了.Net的正確版本? –

+0

當然還有更多的代碼?編寫AppDomain.CurrentDomain.UnhandledException的事件處理程序並顯示e.ExceptionObject.ToString()的值。堆棧跟蹤會告訴你它在哪裏吹。 –

回答

1

一個想法:也許你的客戶沒有安裝.NET Framework。

+0

不,他已經安裝了框架 - 我已經構建了大量的.NET應用程序,他正在他的環境中運行。不過,這是唯一的控制檯應用程序。 –

1

你可以試試虛擬機來創建XP嗎? (虛擬盒等)

我在一些機器上看到了一些Windows更新損壞的Machine.config,但我認爲這只是在機器上發生.NET錯誤,而不是Outofmemory錯誤。

您可以嘗試使用只提供基本窗口,查看文本框,按鈕的.NET Windows窗體應用程序,並且當您單擊按鈕時,將當前日期/時間放入文本框中以消除環境錯誤。

我知道這是不是有幫助,但如果你是剛剛加入天的日期,你可以使用DateTime.Now.AddDays(天)

0

你給了他一個64位可執行文件來運行一個32位操作系統?這是行不通的...

+0

這(在32位機器上的64位exe)不會產生任何愚蠢的行爲。 –

相關問題