2010-05-27 4 views
33

Jakiekolwiek pomysły, dlaczego otrzymuję poniższy błąd w moim projekcie MVC2, nawet w samym projekcie zdecydowanie mam odniesienie do "system.Web.Entity"?Strona ASP.net zawiera błąd w instrukcji importowania, ale mam referencję na miejscu?

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

dzięki

EDIT - Nawiasem mówiąc, jeśli biorę się linia 3 następnie pojawia się błąd:

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 
+13

Czy masz ten zestaw System.Data.Entity, do którego odwołuje się Web.config? ( sekcja) – miensol

+0

nie - Właśnie dodałem go do sekcji referencyjnej projektu - czy to jest problem dla asp.net? – Greg

Odpowiedz

55

Jak miensol zasugerował, spróbuj umieścić to w pliku 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> 
+1

Greg jest osobą, która zadała pytanie, kredyt powinien trafić do miensol. – StarCub

+0

Doskonałe rozwiązanie !! – imdadhusen

+0

Mam aplikację konsoli. Gdzie można utworzyć plik Web.config? (Istnieje jeden plik app.config) – Monish

0

Monish, plik App.config służy w przybliżeniu temu samemu celowi co Web.config plik, a dodanie zespołu odbywa się w taki sam sposób, jak w przypadku pliku Web.config.

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

Alternatywą błahy z konfiguracją compilation.assemblies jest po prostu z okazji zespół System.Data.Entity jako „Kopia lokalna” w roztworze.

Działa to ze względu na głównym poziomieweb.config zawierającej wildcard add element, co powoduje, że wszystkie zespoły w swojej „prywatnej” pamięci podręcznej zestawów do wykorzystania w czasie strona kompilacji. Od MSDN:

The value of the add element is an assembly name, not a DLL path. ASP.NET looks up the assembly name to find its physical DLL location. Optionally, you can specify the asterisk (*) wildcard character to add every assembly within the private assembly cache for the application, which is located either in the \bin subdirectory of an application or in the.NET Framework installation directory (%systemroot%\Microsoft.NET\Framework\version).

+0

Samo dodawanie sekcji montażowej do moich plików web.config (poziom rozwiązania i poziom widoku) nie działało - musiałem zmienić właściwość odwołania "Kopiuj lokalnie" na "true" - Dzięki Schneider – Dudeman3000

0

Poza ty odwoływać w pliku web.config (jak wskazano powyżej), należy: Sprawdź, czy pliki DLL są w projekcie, na przykład w folderze BIN. Jeśli chcesz się dowiedzieć, czy biblioteka DLL jest poprawną wersją, musisz przejść do C: \ Windows \ Assembly i sprawdzić, czy masz tutaj wersje DLL z ich odpowiednikiem PublicKeyToken przeciwko Twojemu projektowi. Skopiuj poprawną bibliotekę DLL, ale zrób to za pomocą CMD (w Eksploratorze Windows nie pokazuje plików), na przykład napisz CD C: \ Windows \ Assembly \ GAC_MSIL i skopiuj bibliotekę DLL, której potrzebujesz.