Страница ASP.net получает ошибку в заявлении на импорт, но у меня есть ссылка на место?
Любые идеи, почему я получаю ошибку ниже в моем проекте 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
Ответы
Ответ 1
Как 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
Альтернативой возиться с конфигурацией compilation.assemblies
является просто отметить сборку System.Data.Entity как "Копировать локальную" в вашем решении.
Это работает из-за корневого уровня web.config
, содержащего подстановочный знак add element
, который вызывает все сборки в вашем "частном кэше сборок" "для использования во время компиляции страницы. Из MSDN:
Значение элемента add - это имя сборки, а не путь к DLL. ASP.NET ищет имя сборки, чтобы найти физическое расположение DLL. При желании вы можете указать символ подстановки звездочки (*) для добавления каждая сборка в кеше частной сборки для приложения, который находится либо в подкаталоге \bin приложения, либо в каталоге установки .NET Framework (% SystemRoot%\Microsoft.NET\Framework\версия).
Ответ 3
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>
Ответ 4
Кроме того, вы ссылаетесь в web.config(как указано выше), вы должны:
Убедитесь, что файлы DLL находятся в вашем проекте, например, в папке BIN. Если вы хотите узнать, соответствует ли DLL правильная версия, перейдите в C:\Windows\Assembly и убедитесь, что у вас есть версии DLL со своим соответствующим PublicKeyToken против вашего проекта. Скопируйте правильную DLL, но сделайте это с помощью CMD (в Проводнике Windows не отображаются файлы), например, наберите CD C:\Windows\Assembly\GAC_MSIL и скопируйте нужную DLL.