Linq to sql 命名空间“System.Data”等中不存在类型或命名空间名称“Linq”

Linq to sql 命名空间“System.Data”等中不存在类型或命名空间名称“Linq”,linq-to-sql,visual-studio-2010,Linq To Sql,Visual Studio 2010,我刚刚在VisualStudio2010中创建了一个Linq to SQL.dbml文件 我得到以下两个错误,总共60次,大部分是第一次 类型或命名空间名称“Linq” 命名空间“System.Data”中不存在 类型或命名空间 找不到名称“EntitySet” 我在这里和其他网站上发现了各种类似的问题,所有这些似乎都表明需要添加一些额外的组件 我已经添加了所有建议,但问题仍然存在。另一件奇怪的事情是VS2010本身没有在编辑器屏幕中为错误加下划线,但它在错误日志中显示了错误 无论如何,我已经看

我刚刚在VisualStudio2010中创建了一个Linq to SQL.dbml文件

我得到以下两个错误,总共60次,大部分是第一次

类型或命名空间名称“Linq” 命名空间“System.Data”中不存在 类型或命名空间 找不到名称“EntitySet” 我在这里和其他网站上发现了各种类似的问题,所有这些似乎都表明需要添加一些额外的组件

我已经添加了所有建议,但问题仍然存在。另一件奇怪的事情是VS2010本身没有在编辑器屏幕中为错误加下划线,但它在错误日志中显示了错误

无论如何,我已经看到了所有现有的主题并应用了它们的解决方案,但问题仍然存在

一些技术细节:

我正在运行32位Windows 7。 我还有VisualStudio2008SP1 安装。我刚刚安装了VS2010 当它出来时,并没有移除 老的那个。 我正在运行MSSQL server 2008 R2。 下面是我的web.config文件中列出的程序集:

<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.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data, 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="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System, 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.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.SqlXml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

除了我的Windows7是64位之外,我在完全相同的配置上也遇到了同样的问题。通过执行[project name]->References->Add reference->System.Data.Linq解决了这个问题。为什么要手动添加引用?

您可以尝试以下操作:

添加对System.Data.Linq的引用右键单击引用文件夹|选择添加引用|选择.Net选项卡默认选中|选择System.Data.Linq引用|单击确定


我希望这将对您或其他人有所帮助。

重要的是,您必须在webconfig中设置

    <system.web>
    <compilation debug="true" targetFramework="4.0"/>
</system.web>
我找到了解决问题的方法。需要注意的是,必须将以下内容添加到web.config:

<configuration>
  <system.web>
     <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      </assemblies>
    </compilation>
   </system.web>
</configuration>
请注意,configuration/system.web/compilation标记已经存在,需要添加assemblies/add assembly标记。即使在构建时VS很容易找到System.Data.Linq,也会出现这种情况

失败出现在App_Code.LinqToObservations.designer.cs中,该代码由Linq从我的LinqToObservations.dbml文件生成


其他背景:我可能会遇到这种情况,因为我使用找到的过程在事实发生后启用了Linq。

目标框架是3.5吗?如果这些是C项目,您将在属性/应用程序中看到它。请在回复中这样做,我将为您提供解决方案。确实是这样。。。该死的。我只是不明白为什么。NET 4默认情况下不包括3.5中的内容吗?我正要提出接受steinar的回答,但我不理解解决方案…:那么,您在VS2010中创建了一个新项目,添加了一个新的dbml并看到了错误?如果是这样,那就很奇怪了。我刚刚用3.5和4.0测试了一下,所有需要的参考都自动添加了。嗯……是的,事情就是这样发生的。我所有的网站、解决方案、项目。。。它们都是从目标框架4.0开始的。当我将此网站切换到3.5时,所有错误都消失了。引用已经存在,我仍然有这个问题。这有助于使用SqlMethods.DateDiffDay,谢谢。@HotLicks我也有同样的问题,在web.config中添加并确认了引用。有什么好主意吗?@HotLicks很抱歉,我在我的Web.Config中也提到了。此外,我使用VS 2015和MVC 5thnx,它解决了很多问题。但是,我需要确认版本4.0.0.0是Linq assembly还是与do net有关?@Rusty-我没有环境可检查,但我相信有一种方法可以检查System.Data.Linq的安装版本。这对我也很有效。我不明白为什么会这样。我添加了一个引用,它编译得很好,但当在浏览器中查看时,它就像我没有添加引用一样,不确定这是否会发生在每个人身上!但是今天,当我将一个旧网站从2.0迁移到4.0时,我注意到targetFramework=4.0条目是在web.config中创建的,但是汇编部分没有更新!然后,我用几年前在2.0中构建的一个旧web应用程序尝试了一个,它得到了完美的转换。不知道为什么,但这就是我所看到的。虽然Hot Lick的解决方案对我来说很有效,但我很想知道为什么在本地IIS中设置的网站会出现这种情况,而在.net端口下运行的web应用程序却不会出现这种情况。任何帮助都将不胜感激。你的回答有局限性。这种语法只适用于web应用程序。我认为您应该显示GUI。