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

4

3 回答 3

3

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

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

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

<ItemGroup>
    <Reference Include="mscorlib" />
于 2013-07-17T07:15:57.440 回答
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 详细日志记录。这应该让你很容易知道出了什么问题。

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

于 2013-08-19T09:54:42.017 回答
1

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

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

于 2013-07-17T07:02:49.603 回答