web-dev-qa-db-fra.com

Le type prédéfini System.Object n'est pas défini ni importé.

Je rencontre cette erreur étrange uniquement dans les fichiers .cshtml dans VS 2015. L'erreur ne s'affiche pas à l'ouverture du projet avec VS 2013.

Erreur CS0246 Le nom du type ou de l'espace de noms 'System' est introuvable (Il vous manque une directive using ou une référence Assembly?)

voici mes références:

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

Quelle pourrait en être la cause?

Veuillez vous référer à cette question que j'ai également créée. C'est le même problème: Le type ou le nom de l'espace de noms 'System' est introuvable

12
Hélder Gonçalves

J'ai eu beaucoup de problèmes CSHTML Intellisense avec MVC 4 dans VS 2015 et j'ai juste choisi de mettre à niveau vers MVC 5. Cependant, MVC 4 devrait toujours fonctionner, mais pas parfaitement, selon: Visual Studio 2015 prend-il en charge les anciennes versions de MVC?

4
Todd Sprang

Il s'agit d'un problème à la fois dans VS 2013 et VS 2015. La sortie de la construction must doit être définie sur chemin de construction par défaut pour que Razor intellisense fonctionne dans les fichiers .cshtml. Voir cet excellent article reproduisant le problème et discutant des alternatives. http://www.dennisonpro.info/managing-intellisense-in-razor-views-with-mvc-5-using-custom-builds-in-visual-studio-2013/

Ainsi, le chemin de génération doit être défini sur bin\ pour les projets MVC. Si vous souhaitez que votre sortie aille ailleurs, vous devez créer une étape de post-génération qui copie les fichiers de bin\ vers un autre emplacement.

10
dthrasher

La suppression des dossiers bin et obj dans tous les projets de cette solution a fonctionné pour moi. 

On dirait que les anciens fichiers ont été générés par une ancienne version de Visual Studio, qui ne sont pas compatibles avec la nouvelle version de Visual Studio. 

1
Jay Shah

Géré le problème .. Le chemin de génération était défini sur "c: ...\bin" au lieu de "\ bin". Je crois que cela est dû au fait que je n'ai pas de fichier web.config à la racine du projet. VS n'a donc pas identifié mon projet comme un projet Web. Après avoir changé la racine de la construction et rechargé le projet, les erreurs ont disparu et intellisense est apparu.

0
Hélder Gonçalves