【问题标题】:Predefined type System.Object is not defined or imported未定义或导入预定义类型 System.Object
【发布时间】:2018-05-31 23:11:43
【问题描述】:

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

错误 CS0246 找不到类型或命名空间名称“系统” (您是否缺少 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 中打开它,您会看到同样的错误吗?
  • 我有很多类似于上面的错误(~4000)。我在csproj中添加&lt;Reference Include="mscorlib" /&gt;后,所有错误都消失了

标签: c# asp.net-mvc visual-studio-2015 .net-4.5 asp.net-mvc-5.1


【解决方案1】:

这是 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\。如果您需要输出到其他位置,则必须创建一个构建后步骤,将文件从 bin\ 复制到另一个位置。

【讨论】:

  • 谢谢,这解决了我的问题。我有一个网站需要与另一个网站合并,所以我重定向了 bin 路径。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    似乎那些有一些旧版本的 Visual Studio 生成的旧文件,这些文件与新版本的 Visual Studio 不兼容。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 而且 System.Object 甚至不在系统程序集中——它在 mscorlib 中。
        • 对不起,我没有关注你。谁提到了 System.Object?
        • 问题的标题。
        猜你喜欢
        • 2019-03-23
        • 1970-01-01
        • 2015-09-22
        • 1970-01-01
        • 2019-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-17
        相关资源
        最近更新 更多