预定义类型 System.Object 未定义或未导入

Predefined type System.Object is not defined or imported

我只在 VS 2015 的 .cshtml 文件中遇到这个奇怪的错误。 当我用 VS 2013 打开项目时没有出现错误。

Error CS0246 The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)

这是我的参考资料:

<ItemGroup>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Sitecore.Kernel, Version=7.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\Sitecore.Kernel.dll</HintPath>
</Reference>
<Reference Include="Sitecore.Mvc">
  <HintPath>N:\XXX\Sitecore.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.DynamicData" />
<Reference Include="System.Web.Entity" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Core" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\System.Web.Helpers.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Providers">
  <HintPath>N:\XXX\System.Web.Providers.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Deployment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\System.Web.WebPages.Deployment.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>N:\XXX\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Drawing" />
<Reference Include="System.Web" />
<Reference Include="System.Xml" />
<Reference Include="System.Configuration" />
<Reference Include="System.Web.Services" />
<Reference Include="System.EnterpriseServices" />

这可能是什么原因?

请参考我创建的这个问题。这是同一个问题:

在项目引用中添加对系统程序集的引用:

右键单击引用 -> 添加引用 -> 程序集 -> 框架 -> 系统

我在 VS 2015 中遇到了很多关于 MVC 4 的 CSHTML Intellisense 问题,并选择只升级到 MVC 5。但是,MVC 4 应该仍然可以工作,只是不完美,根据:Does Visual Studio 2015 support older versions of MVC?

解决了问题。我将构建路径设置为 "c:...\bin" 而不是“\bin”。我相信这是因为我在项目的根目录中没有任何 web.config,所以 VS 没有将我的项目识别为 Web 项目。在我更改构建根目录并重新加载项目后,错误消失了,智能感知出现了。

这是 VS 2013 和 VS 2015 中的问题。构建输出 必须 设置为 默认构建路径 以便Razor intellisense 在 .cshtml 文件中工作。请参阅这篇重现问题并讨论替代方案的优秀文章。 http://www.dennisonpro.info/managing-intellisense-in-razor-views-with-mvc-5-using-custom-builds-in-visual-studio-2013/

因此,对于 MVC 项目,构建路径必须设置为 bin\。如果您需要输出到其他地方,您必须创建一个 post-build 步骤,将文件从 bin\ 复制到另一个位置。

删除该解决方案所有项目中的 bin 和 obj 文件夹对我有用。

似乎那些文件是由一些旧版本的 visual studio 生成的旧文件,这些文件与新版本的 visual studio 不兼容。