33 votes

La page ASP.net reçoit une erreur sur la déclaration d'importation, mais la référence est-elle en place?

Des idées pour lesquelles je reçois l'erreur ci-dessous dans mon projet MVC2, même dans le projet lui-même, j'ai définitivement une référence à "system.Web.Entity"?

 Compiler Error Message: CS0234: The type or namespace name 'Entity' does not exist in the namespace 'System.Data' (are you missing an assembly reference?)

Source Error:

Line 1:  <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<List<Node>>" %>
Line 2:  <%@ Import Namespace="TopologyDAL" %>
Line 3:  <%@ Import Namespace="System.Data.Entity" %>
 

Merci

EDIT - En passant, si je supprime la ligne 3, je reçois le message d'erreur:

  Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0012: The type 'System.Data.Objects.DataClasses.EntityObject' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Source Error:

Line 164:    
Line 165:    [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
Line 166:    public class views_node_index_aspx : System.Web.Mvc.ViewPage<List<Node>>, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler {
Line 167:        
Line 168:        private static bool @__initialized;


Source File: c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6ec16fd2\a2147d7c\App_Web_index.aspx.1b64bdf1.ajruf7pv.0.cs    Line: 166 
 

55voto

Leo Moore Points 1454

Comme miensol l’a suggéré, essayez de placer ceci dans votre fichier Web.config :

 <compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </assemblies>
</compilation>
 

2voto

Schneider Points 3812

L'alternative à jongler avec l' compilation.assemblies configuration est simplement pour marquer le Système.Les données.Entité de l'assemblée en tant que "Copie Locale" dans votre solution.

Cela fonctionne en raison du niveau de la racine web.config contenant un caractère générique add element, ce qui provoque toutes assemblées dans votre "privé assembly cache" pour être utilisé pendant la page de compilation. À partir de MSDN:

La valeur de l'élément add est un assemblage de nom, pas une DLL chemin. ASP.NET recherche le nom de l'assemblage de trouver son physique DLL emplacement. En option, vous pouvez spécifier l'astérisque caractère générique (*) pour ajouter chaque assemblée dans le secteur privé assembly cache de l'application, qui se trouve dans le sous-répertoire \bin d'une demande ou d' dans the.NET Cadre répertoire d'installation (%systemroot%\Microsoft.NET\Framework\version).

0voto

Monish, le fichier App.config a à peu près le même objectif que le fichier Web.config. L'ajout d'un assemblage s'effectue de la même manière que pour un fichier Web.config.

 <configuration>
    <compilation debug="true">
        <assemblies> 
            <add assembly="myassembly, Version=1.0.0.0, Culture=neutral,PublicKeyToken=9999999999999"/> 
        </assemblies> 
    </compilation>
</configuration>
 

0voto

D'ailleurs pensez-vous de référence dans le web.config (comme indiqué ci-dessus), vous devez: Vérifiez que les fichiers DLL sont dans votre projet, par exemple dans le dossier BIN. Si vous voulez savoir si la DLL est la version correcte doit aller à C: \ Windows \ Assembly et vérifiez que vous avez ici les versions de DLL avec leurs PublicKeyToken vous contre votre projet. Copie de la DLL correcte, mais le faire en utilisant CMD (dans l'Explorateur Windows n'affiche pas les fichiers) exemple en tapant CD C: \ Windows \ Assembly \ GAC_MSIL et copiez la DLL que vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X