2013-07-17 128 views
3

我想在Visual Studio 2010中使用C#構建我的第一個Winforms。它只是一個簡單的窗體,它具有關閉窗體的按鈕單擊事件。 下面的代碼:編譯C#winForms時出錯

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnEnglish_Click(object sender, EventArgs e) 
     { 
      this.Text = " Do you speak English? "; 

     } 

     private void btnSpanish_Click(object sender, EventArgs e) 
     { 
      this.Text = " Do you speak Spanish? "; 
     } 

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

這好像一些配置屬性或類似的東西在我的項目中遺漏了我無法找出究竟?

一些搜索引導我到http://msdn.microsoft.com/en-us/library/fa13yay7.aspx,但我不知道如何將其應用於我的代碼或項目屬性或者是否存在其他問題?

+0

是您的源在檢查源代碼控制? – Ehsan

+0

想不出多少,嘗試重建或關閉VS n重新打開VS n檢查? –

+1

你的代碼有多簡單?你可以刪除它並重寫它嗎?或者只是關閉VS,重新打開,重新創建項目並添加表單?你能做到嗎? –

回答

3

也許這個答案在MS Connect有一些與你的問題有關的問題。 MS團隊評論:

這是一個已知問題,我們將無法修復VS2010。該 解決辦法,在這種情況下一次,是編輯的項目文件和 手動重新添加引用

所以,在你.csproj的文件,添加缺少的參考:

<ItemGroup> 
    <Reference Include="mscorlib" /> 
+1

我已經遇到了這個問題,我自己解決這個問題的唯一方法就是採用這種解決方案。 –

+0

這種解決方法只有在項目文件中出現' True'時才起作用。 –

1

搜索「預定義類型'System.Object'未定義或導入」顯示原因是未引用「mscorlib」。因此請添加該參考。還有建議您需要創建一個新的解決方案(其中應包含該參考)。您可以將您的代碼複製到該新解決方案。

另外,您還找到了「/ nostdlib」編譯器選項。你做的不是想用那個,因爲你的需要那個dll。 That page提到「不要引用mscorlib.dll屬性」(我在VS2012中看不到)。你想引用mscorlib,所以不要從默認值改變它。

+1

將重新安裝,但是他說他重建項目... –

+0

是我沒有重建項目 – Why

+0

如果我嘗試添加它,它說:「以‘mscorlib程序’的引用無法添加。 「 – Why

2

有需要注意的幾件事,

  1. 在你的問題,請提供足夠的細節。您甚至不會粘貼錯誤消息,這使得難以加入討論。

  2. 瞭解MSBuild如何將項目轉換爲C#命令行。

這後者是很難實現的,但如果您啓用的MSBuild的詳細日誌記錄,你會看到,告訴你什麼是引擎蓋下的日誌條目噸。

關於對mscorlib的引用,大多數情況下它是隱含的。通常沒有<Reference Include="mscorlib">,也沒有<NoStdLib>True</NoStdLib>。這樣,MSBuild將使用/ nostdlib-調用C#編譯器。

對於某些項目類型(通常爲.NET CF項目),VS將<NoStdLib>True</NoStdLib>添加到項目文件中,並將<Reference Include="mscorlib">添加到相應平臺的mscorlib.dll。示例文件可以在here找到。通過這種方式,MSBuild使用/ nostdlib +調用C#編譯器。

因此,如果你體會到MSCORLIB相關的任何編譯的問題,請檢查您的項目文件,以及MSBuild的詳細記錄。這應該讓你輕鬆知道什麼是錯的。

更新時間: http://www.lextm.com/2013/08/how-to-resolve-mscorlib-related-issues-in-visual-studiomsbuild/