编译C#winForms时出错

问题描述:

我想在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,重新打开,重新创建项目并添加表单?你能做到吗? –

也许这个答案在MS Connect有一些与你的问题有关的问题。 MS团队评论:

这是一个已知问题,我们将无法修复VS2010。该 解决办法,在这种情况下一次,是编辑的项目文件和 手动重新添加引用

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

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

我已经遇到了这个问题,我自己解决这个问题的唯一方法就是采用这种解决方案。 –

+0

这种解决方法只有在项目文件中出现' True'时才起作用。 –

搜索“预定义类型'System.Object'未定义或导入”显示原因是未引用“mscorlib”。因此请添加该参考。还有建议您需要创建一个新的解决方案(其中应包含该参考)。您可以将您的代码复制到该新解决方案。

另外,您还找到了“/ nostdlib”编译器选项。你做的不是想用那个,因为你的需要那个dll。 That page提到“不要引用mscorlib.dll属性”(我在VS2012中看不到)。你想引用mscorlib,所以不要从默认值改变它。

+1

将重新安装,但是他说他重建项目... –

+0

是我没有重建项目 – Why

+0

如果我尝试添加它,它说:“以‘mscorlib程序’的引用无法添加。 “ – Why

有需要注意的几件事,

  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/