Пространство имен System.Linq отсутствует даже со ссылкой на System.Core.Dll

Когда я открываю свой веб-сайт Asp Net в Visual Studio 2010, свойства говорят «Target Framework 3.5», однако, когда я пытаюсь использовать пространство имен Linq, компилятор жалуется на это.

«Не удалось найти тип или имя пространства имен 'var' (вам не хватает директивы using или ссылки на сборку?)»

«Тип или имя пространства имен 'Linq' не существует в пространстве имен 'Система' (вам не хватает ссылки на сборку?)»

Я вручную сослался на некоторые DLL, чтобы исправить свою проблему, но все равно безуспешно.

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Помощь? :-)


person joeriks    schedule 30.09.2010    source источник


Ответы (2)


Если вы даже не можете использовать var, это говорит о том, что он даже не использует правильную версию компилятора C #. (Вы должны иметь возможность использовать var даже при нацеливании на .NET 2.0, если вы используете компилятор C # 3 или C # 4.) Я бы сконцентрировался на том, чтобы это работало в первую очередь, прежде чем что-либо еще.

Возможно ли, что вы работаете в IIS, но не настроили его должным образом? Возможно, стоит посмотреть на конфигурацию вашего веб-сайта с этой стороны и, возможно, повторно запустить aspnet_regiis.

person Jon Skeet    schedule 30.09.2010
comment
Спасибо, что указали мне правильное направление - когда я смотрю на YSOD и расширяю вывод Show Detail Compiler, я получаю следующее: Microsoft (R) Visual C # 2005 Compiler version 8.00.50727.4016 для Microsoft (R) Windows (R) 2005 Framework версии 2.0.50727 --- но я не решаюсь запустить aspnet_regiis, как я могу быть уверен, что ничего не нарушаю? Это живой сервер. - person joeriks; 30.09.2010
comment
... здесь учимся новому ... в разделе "Сборки", посвященном компиляции IIS .Net, много ссылок на 2.0. (Не найдено в web.config). - person joeriks; 30.09.2010
comment
Необходимо следовать мудрости Скотта Хансельмана, hanselman.com/blog/, добавив несколько строк в раздел ‹system.codedom›. Сейчас работает, отлично! - person joeriks; 30.09.2010

Я только что исправил аналогичную проблему, добавив атрибут targetFramework="4.0" к элементу compilation в web.config

Соответствующий модифицированный фрагмент:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>
person amrtn    schedule 14.08.2014