Подтвердить что ты не робот

Тип или имя пространства имен "Linq" не существует в пространстве имен "Система",

У меня есть служба wcf, размещенная на веб-сайте в IIS, и у меня, похоже, есть эта проблема. В моем web.config у меня есть следующее:

<system.web>
        <compilation>
            <assemblies>
                <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies>
        </compilation>
    </system.web>

Все проекты в целевой платформе решений 4.0.

LE: Я получаю сообщение об ошибке при попытке импортировать System.Linq;

 using System.Linq;
4b9b3361

Ответ 1

Решение. Кажется, что веб-конфиг должен быть:

<system.web>
    <compilation debug="true" targetFramework="4.0"/>
</system.web>

Ответ 2

У вас есть файл кода на вашем сайте с помощью Imports System.Linq (VB) или using System.Linq; (С#)?

Похоже, самый простой ответ - это опечатка. Возможно, пространство имен должно быть исправлено до System.Data.Linq.

Изменить: System.Linq должно быть допустимым пространством имен, поскольку оно "предоставляет классы и интерфейсы, которые поддерживают запросы, использующие языковой интегральный запрос (LINQ)". (Http://msdn.microsoft.com/en-us/library/system.linq.aspx). Он также импортируется по умолчанию в системном уровне web.config.

Итак, не уверен, что происходит здесь, если это не связано с моим предложением выше. Возможно, что-то не так в вашем файле machine.config или на системном уровне web.config?

Изменить 2: Мне странно, что вы добавляете сборку System.Core на этом уровне. Я считаю, что это сборка, которая включает пространство имен System.Linq. Может быть, удаление этого поможет?

Изменить 3: System.Linq импортируется по умолчанию в машинный уровень web.config. Вы можете удалить строку в файле кода.

Ответ 3

Иногда он "исчезает" просто для удовольствия. Если вам это не нужно, просто удалите его.

Просто щелкните правой кнопкой мыши свой веб-сайт в проводнике решений и добавьте ссылку на него.

Ответ 4

У меня не было методов Linq на моем контроллере (Count, Where, toList и т.д.). Добавление пространства имен:

using System.Linq;

исправил проблему для меня. Может быть, поможет кому-то в будущем...

Ответ 5

Я решил эту проблему, добавив пространство имен System.Linq в пространства имен в файле Views\Shared\Web.config, например, как показано ниже, 2 снизу, над пространством имен WebApplication1.

Обратите внимание, что это находится в Web.config в папке Views и не является основным веб-сайтом "Web.config".

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Optimization"/>
            <add namespace="System.Web.Routing" />
            <add namespace="System.Linq" />
            <add namespace="WebApplication1" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

Ответ 6

проблема заключается в том, что вы не добавили

debug="true|false" targetFramework="4.0"

в теге компиляции.

Ответ 7

У меня была такая же ошибка, но мое веб-приложение работало на платформе v2.0. Изменен пул приложений с версии 2.0 до версии 4.0. все работающие... счастливые дни

Ответ 8

Еще одна вещь, которую нужно проверить - это ваш файл .csproj, а именно:

<TargetFrameworkProfile>Profile47</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

Если у вас нет папки для указанного профиля, вам, возможно, придется вручную изменить ее на ту, которая у вас есть. Вы также можете загрузить цель с https://www.microsoft.com/net/download/visual-studio-sdks.

К сожалению, у моего коллеги это произошло с проектом PCL старого стиля (PCL на основе профиля), поэтому он не смог загрузить целевой объект .NET Portable, но мне пришлось выдать ему библиотеки DLL из моей рабочей папки ( C:\Program Files (x86)\Справочные сборки \Microsoft\Framework.NETPortable\v4.0\Profile\Profile47).

Ответ 9

Решение для меня было пойти в:

Инструменты> Диспетчер пакетов Nuget> Управление пакетами NuGet для решения

И установите пакет System.Linq.