LINQ不在命名空间中。

3

我正在使用Visual Studio 2012通过FTP连接处理一个Web项目。我遇到了一个错误,提示System.Data命名空间中不存在Linq,而System命名空间中也不存在Linq。Visual Studio显示了一个错误,并且不提供代码建议,但是在IIS服务器上代码可以正常运行。

我的web.config内容如下:

我已经阅读了许多关于这个问题的问题和文章,但仍然无法找到可行的解决方案。

<system.web>
<compilation debug="true" strict="false" explicit="true" urlLinePragmas="true">
  <assemblies>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Data.Services.Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.Services.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>
<pages>
  <namespaces>
    <clear/>
    <add namespace="System"/>
    <add namespace="System.Data.Linq"/>
    <add namespace="System.Linq"/>
    <add namespace="System.Xml.Linq"/>
  </namespaces>
</pages>


你为什么在那里放了一些2.0.0.0版本的东西?你是否在某个时候更改了目标框架? - Tony Hopkinson
这些似乎是那些程序集的最新版本。 - mike9182
4个回答

6

尝试在您的项目中手动添加对System.Data.Linq的引用。这样可以希望解决您的问题。

项目 -> 引用 -> 添加引用 -> System.Data.Linq


我尝试过这个,但是当引用被添加时,web.config文件没有被改变。我还尝试过从web.config中删除引用,然后再次添加它。 - mike9182

2

虽然有点晚,但出于“回馈”的目的...... 当我遇到这个问题(在IIS上运行网站时使用VS 2010),我不得不将目标框架更改为其他内容,保存更改,然后将其改回v4.0(我的项目最初构建的版本)。(右键单击项目 -> 属性页面 -> 构建 ->“目标框架”)。 这解决了问题。 不确定如何或为什么。 =)


0
这发生在我从VisualStudio 2013升级到2015时。在项目构建过程中遇到了这些错误,并在一些警告后停止。我解决了这些警告,当我解决了最后一个警告:无法加载文件或程序集'Microsoft.ReportViewer.WebForms,Version=11.0.0.0 ......

错误:Linq不存在于命名空间System中

问题得到了解决。


0
在Visual Studio中,检查项目是否针对包含Linq的.NET框架版本进行了设置。右键单击项目,然后查找目标框架选项。如果设置为v2,则VS告诉您的其他所有内容都将基于v2 - 可用的程序集、基类库程序集的版本等。

该项目的目标是 .NET 3.5,所有必需的 LINQ 组件都在 GAC 中。 - mike9182
我认为这是有效的 - .NET 3和3.5版本添加了额外的库,但保留了.NET 2运行时,因此一些基本DLL将是v2。 - Stephen Hewlett
配置文件中是否有 SupportedRuntime 元素? - Stephen Hewlett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接