编译C#winForms时出错

时间:2013-07-17 06:47:04

标签: c# winforms visual-studio-2010

我正在尝试使用Visual Studio 2010中的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,但我不确定如何在我的代码或项目属性中应用此功能,或者是否存在其他问题?

3 个答案:

答案 0 :(得分:3)

也许MS Connect上的这个答案与您的问题有关。 MS团队发表评论:

  

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

因此,在 .csproj 文件中添加缺少的引用:

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

答案 1 :(得分:2)

您需要注意一些事项,

  1. 在您的问题中,请提供足够的详细信息。您甚至不会粘贴错误消息,这使得很难加入讨论。

  2. 了解MSBuild如何将项目转换为C#命令行。

  3. 后者很难实现,但是如果你启用详细的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/

答案 2 :(得分:1)

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

另外,您找到了“/ nostdlib”编译器选项。你想要使用它,因为你需要那个dll。 That page提到“不要引用mscorlib.dll属性”(我在VS2012中没有看到)。您执行想要引用mscorlib,因此请不要将其更改为默认值。