命名空间“System”中不存在类型或命名空间名称“Linq”

时间:2012-01-30 20:44:04

标签: asp.net .net wcf

我在IIS的网站上托管了一个wcf服务,我似乎遇到了这个问题。 在我的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;

10 个答案:

答案 0 :(得分:19)

解决方案:似乎网络配置应该是:

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

答案 1 :(得分:5)

您的网站中是否有Imports System.Linq(VB)或using System.Linq;(c#)的代码文件?

似乎最简单的答案是它是一个错字。也许命名空间应该更正为System.Data.Linq

编辑: System.Linq应该是一个有效的命名空间,因为它提供了支持使用语言集成查询(LINQ)的查询的类和接口。&#34; (http://msdn.microsoft.com/en-us/library/system.linq.aspx)。它也默认导入系统级web.config。

所以,如果与我上面的建议无关,请不要确定这里发生了什么。你的machine.config或系统级web.config可能有问题吗?

编辑2: 我发现在这个级别添加System.Core程序集很奇怪。我相信这是包含System.Linq命名空间的程序集。也许删除它会有帮助吗?

编辑3: 默认情况下,在机器级web.config中导入System.Linq。您可以删除代码文件中的行。

答案 2 :(得分:3)

有时它会因为它的乐趣而“消失”。如果您不需要它,只需将其删除即可。

否则,请在解决方案资源管理器中右键单击您的网站,然后添加对它的引用。

答案 3 :(得分:2)

我的Controller上没有Linq方法(Count,Where,toList等)。添加命名空间:

using System.Linq;

为我解决了这个问题。也许将来会有人帮助......

答案 4 :(得分:1)

我通过将System.Linq命名空间添加到Views\Shared\Web.config文件中的命名空间来解决了这个问题,例如,如下所示,位于WebApplication1命名空间上方的底部第二位。

请注意,这位于Web.config文件夹中的Views,而不是网站的主要&#39; Web.config`。 < / p>

<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>

答案 5 :(得分:0)

问题是你没有添加

debug="true|false" targetFramework="4.0"
编译标签中的

答案 6 :(得分:0)

我遇到了同样的错误,但我的网络应用程序在框架v2.0上运行。将我的应用程序池从v2.0更改为v4.0。所有工作...快乐的日子

答案 7 :(得分:0)

要检查的另一件事是你的.csproj文件,特别是这些项:

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

如果您没有指定配置文件的文件夹,则可能需要手动将其更改为您拥有的文件夹。您也可以从https://www.microsoft.com/net/download/visual-studio-sdks下载目标。

不幸的是,我的同事用旧式PCL项目(​​profile-based PCL)发生了这种情况,所以他无法下载.NET Portable目标,但我不得不向他提供DLL。我的功能文件夹(C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETPortable \ v4.0 \ Profile \ Profile47)。

答案 8 :(得分:0)

对我来说,解决方案是:

  1. 转到:工具> Nuget程序包管理器>管理解决方案的NuGet程序包

  2. 安装 System.Linq 软件包。

答案 9 :(得分:0)

删除隐藏的 .vs 文件夹并重新启动Visual Studio,为我修复了该问题。