Ошибка компиляции метода Linq в App_Code - PullRequest
0 голосов
/ 14 января 2010

Я царапал свою голову, казалось бы, целую вечность. Я уверен, что это действительно легко исправить, но я не вижу этого.

У меня есть класс в App_Code, который использует немного Linq.

var siteMap = SiteMapWrapper.BuildSiteMap(true);
var currentTopLevelParent = siteMap.Single(s => s.IsActive);
if (currentTopLevelParent != null)

Я разработал это локально, и все работает отлично. При переходе на IIS хостинг тот же класс не компилируется. Я получаю:

does not contain a definition for 'Single' and no extension method 'Single' 
accepting a  first argument of type 'SiteMapWrapper' could be found (are you 
missing a using directive or an assembly reference?)

Я подтвердил, что виртуальный каталог работает .NET 2.0, как и должно. Я также подтвердил, что в web.config загружаются правильные сборки.

<compilation debug="true">
  <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>

Я также пытался добавить директивы пространств имен в web.config, но безуспешно. Кто-нибудь может придумать что-нибудь еще, чтобы попробовать?

Большое спасибо.

Ответы [ 4 ]

0 голосов
/ 21 марта 2016

Измените Свойство сборки Свойство вашего файла .cs с Содержимое на Скомпилируйте .

См. Эту статью для получения дополнительной информации.

0 голосов
/ 15 января 2010

LINQ действительно требует .NET 3.0 (лучше 3.5), а не 2.0. Убедитесь, что AppPool настроен соответствующим образом.

0 голосов
/ 15 января 2010

Я думаю, вы обнаружите, что на сервере не установлено 3.5.

0 голосов
/ 14 января 2010

Добавьте using System.Linq; в начало файла .cs.

Также убедитесь, что SiteMapWrapper реализует IEnumerable<T>.

EDIT : я не заметил, что он работает на локальной машине. Убедитесь, что на сервере установлены правильные версии всех зависимых сборок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...