我正在尝试使用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,但我不确定如何在我的代码或项目属性中应用此功能,或者是否存在其他问题?
答案 0 :(得分:3)
也许MS Connect上的这个答案与您的问题有关。 MS团队发表评论:
这是一个我们无法修复VS2010的已知问题。该 解决方法,在这种情况下,就是编辑项目文件和 手动重新添加引用
因此,在 .csproj 文件中添加缺少的引用:
<ItemGroup>
<Reference Include="mscorlib" />
答案 1 :(得分:2)
您需要注意一些事项,
在您的问题中,请提供足够的详细信息。您甚至不会粘贴错误消息,这使得很难加入讨论。
了解MSBuild如何将项目转换为C#命令行。
后者很难实现,但是如果你启用详细的MSBuild日志记录,你会看到日志条目上有很多东西,它们会显示你的内容。
关于mscorlib
的引用,在大多数情况下它是隐含的。通常没有<Reference Include="mscorlib">
,没有<NoStdLib>True</NoStdLib>
。这样,MSBuild将使用/ nostdlib - 。
对于某些项目类型(通常是.NET CF项目),VS会将<NoStdLib>True</NoStdLib>
添加到项目文件,并<Reference Include="mscorlib">
添加到相应平台的mscorlib.dll
。可以找到示例文件here。通过这种方式,MSBuild使用/ nostdlib +。
因此,如果您遇到与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,因此请不要将其更改为默认值。