是什么原因导致MS Visual Studio无法识别构建错误?

时间:2014-01-09 14:32:21

标签: c++ visual-studio-2010 visual-studio visual-studio-2012

Visual Studio Express 2010中,我通常只能构建一个程序,然后进行任何更改,我必须将我的代码粘贴到一个新项目中。它会说构建成功,但后来我尝试运行它并收到一条错误消息,

  

“这个项目已经过时了 - 你想建立它吗?”

然后我单击是,我收到另一条错误消息,指出存在构建错误,我必须从上次成功构建继续。 有时而不是运行上一次成功的构建,我收到一条错误消息,

  

“无法打开[目录编程]。系统找不到   文件指定。“

出于这个原因,我通常会使用Visual Express 2012,但即便如此,它也时不时地发生,似乎是随机的。一旦问题开始,没有明显的方法来解决它(重建和重新启动Visual Studio都有相同的结果)。在Visual Studio Pro 2012中,这似乎也发生了。

编辑:这是在我面前的一个输出框(2010年版)

1>------ Build started: Project: Lab01, Configuration: Debug Win32 ------
1>  Lab01.cpp
1>c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.0\system.core.dll : warning C4945: 'ExtensionAttribute' : cannot import symbol from 'c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.0\system.core.dll': as 'System::Runtime::CompilerServices::ExtensionAttribute' has already been imported from another assembly 'mscorlib'
1>          c:\windows\microsoft.net\framework\v4.0.30319\mscorlib.dll : see declaration of 'System::Runtime::CompilerServices::ExtensionAttribute'
1>          first seen type is used; re-order imported assemblies to use the current type
1>          This diagnostic occurred while importing type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
1>Lab01.cpp(28): error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem &)' : cannot convert parameter 1 from 'char [101]' to 'char &'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>
1>          ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我猜它在那里说错误,但它告诉我“构建成功”由于某种原因......

1 个答案:

答案 0 :(得分:2)

以下是查找和分析Visual Studio报告的错误的方法:

continue from the last successful build - 点击(几乎总是)。错误应显示在View->Error List中。如果感到困惑,请在构建后检查View->Output窗口,这是很多相同的信息,但更详细。

rebuilding ... same result - 完全重建应该提供除project is out of date之外的其他错误。

Lab01.cpp(28): error C2664: - Lab01.cpp的28行和3行上下都会有所帮助。

看起来你正在用std :: streams做一些不正确的事情,但我不知道什么没看到代码。 这应该在错误列表中

warning C4945: - 之所以发生这种情况,是因为您在单个项目中使用.net 4.0和4.5以及(可能)混合使用clr和非clr代码。从新的CLR项目重新创建,该项目在任何地方都选择了正确的.Net库版本,可能会删除此警告。 (ExtensionAttribute在4.0到4.5升级期间被移动了)

这只是一个警告,所以无所谓。