Страница ASP.net получает ошибку в операторе импорта, но у меня есть ссылка на месте? - PullRequest
33 голосов
/ 27 мая 2010

Есть идеи, почему я получаю приведенную ниже ошибку в своем проекте MVC2, даже если в самом проекте у меня есть ссылка на "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" %>

спасибо

РЕДАКТИРОВАТЬ - Кстати, если я вычеркну строку 3, я получу ошибку:

 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 

Ответы [ 4 ]

55 голосов
/ 31 августа 2010

Как предложено miensol , попробуйте добавить это в файл 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>
2 голосов
/ 21 февраля 2013

Альтернативой манипулированию с конфигурацией compilation.assemblies является просто пометить сборку System.Data.Entity как «Копировать локально» в вашем решении.

Это работает из-за корневого уровня web.config, содержащего подстановочный знак add element, который приводит к тому, что все сборки в вашем "кэше частных сборок" будут использоваться во время компиляции страницы , Из MSDN:

Значением элемента add является имя сборки, а не путь к DLL. ASP.NET ищет имя сборки, чтобы найти ее физическое местоположение DLL. При желании вы можете указать подстановочный знак звездочка (*) для добавления каждая сборка в частном кэше сборок для приложения, который находится либо в подкаталоге \ bin приложения, либо в каталоге установки .NET Framework (% SystemRoot% \ Microsoft.NET \ Framework \ версия).

0 голосов
/ 20 июня 2013

Кроме того, вы ссылаетесь на web.config (как указано выше), вы должны: Убедитесь, что файлы DLL находятся в вашем проекте, например, в папке BIN. Если вы хотите узнать, является ли DLL верной версией, перейдите в C: \ Windows \ Assembly и убедитесь, что у вас есть версии DLL с соответствующими им PublicKeyToken против вашего проекта. Скопируйте правильную DLL, но сделайте это, используя CMD (в Windows Explorer не показывает файлы), например, наберите CD C: \ Windows \ Assembly \ GAC_MSIL и скопируйте нужную DLL.

0 голосов
/ 27 июля 2012

Monish, файл App.config служит для той же цели, что и файл Web.config, и добавление сборки выполняется так же, как и для файла Web.config.

<configuration>
    <compilation debug="true">
        <assemblies> 
            <add assembly="myassembly, Version=1.0.0.0, Culture=neutral,PublicKeyToken=9999999999999"/> 
        </assemblies> 
    </compilation>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...