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

14

我在VS 2015中仅在.cshtml文件中遇到了这个奇怪的错误。当我使用VS 2013打开项目时,错误不会出现。

错误 CS0246 类型或命名空间名称“System”找不到 (是否缺少 using 指令或程序集引用?)

这是我的引用:

<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" />

这可能是什么原因造成的?

请同时参考我创建的这个问题。它与此问题相同:The type or namespace name 'System' could not be found


如果您在VS 2013中创建了一个新项目,并尝试在VS 2015中打开它,您是否会看到相同的错误? - user1152113
我遇到了很多类似上面的错误(约4000个)。在csproj中添加了<Reference Include="mscorlib" />之后,所有错误都消失了。 - Alexandru Irimiea
我在VS 2019的cshtml页面上遇到了这个问题。代码会被突出显示并显示错误,但代码本身运行得非常好。关闭并重新打开VS可以解决这个问题。 - Vanity Slug
5个回答

11
这是在VS 2013和VS 2015中共同遇到的问题。为了使.cshtml文件中的Razor智能提示正常工作,构建输出必须设置为默认构建路径。请参阅这篇优秀的文章以再现此问题并讨论替代方案。http://www.dennisonpro.info/managing-intellisense-in-razor-views-with-mvc-5-using-custom-builds-in-visual-studio-2013/ 因此,对于MVC项目,构建路径必须设置为bin\。如果您需要将输出放置在其他位置,则必须创建后构建步骤,将文件从bin\复制到另一个位置。

谢谢,这解决了我的问题。我有一个需要与另一个网站合并的网站,所以我重定向了 bin 路径。 - Sebazzz

5

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

看起来这些文件夹包含了一些旧版本Visual Studio生成的文件,与新版本Visual Studio不兼容。

0

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


-5
在项目引用中添加对System程序集的引用:
右键单击引用->添加引用->程序集->框架->系统。

1
而 System.Object 甚至不在 System 组件中 - 它在 mscorlib 中。 - Jon Skeet
抱歉,我没听懂你的意思。谁提到了System.Object? - AleFranz
问题的标题。 - General Grievance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接