编译 C# winForms 时出错[已关闭]

问题描述 投票:0回答:3

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

c# winforms visual-studio-2010
3个回答
3
投票

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

这是一个已知问题,我们无法在 VS2010 中修复。这 一旦遇到这种情况,解决方法是编辑项目文件并 手动重新添加引用

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

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

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
中。可以在此处找到示例文件。这样,MSBuild 通过 /nostdlib+ 调用 C# 编译器。

因此,如果您遇到任何与 mscorlib 相关的编译问题,请检查您的项目文件以及 MSBuild 详细日志记录。这应该可以让您轻松知道出了什么问题。

更新: https://docs.lextudio.com/blog/how-to-resolve-mscorlib-lated-issues-in-visual-studio-msbuild-84965aaf6f47


1
投票

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

此外,您还找到了“/nostdlib”编译器选项。您“不想”想要使用它,因为您“需要”该 dll。 该页面提到“不要引用 mscorlib.dll 属性”(我在 VS2012 中没有看到)。您确实想引用mscorlib,所以不要更改默认值。

© www.soinside.com 2019 - 2024. All rights reserved.