【问题标题】:The type or namespace name 'Linq' does not exist in the namespace 'System.Data' , etc命名空间 'System.Data' 中不存在类型或命名空间名称 'Linq' 等
【发布时间】:2010-10-25 23:11:27
【问题描述】:

我刚刚在 Visual Studio 2010 中创建了一个 Linq-to-SQL .dbml 文件。

我收到以下 2 个错误,总共 60 次,大部分是第一次。

  1. 类型或命名空间名称“Linq” 命名空间“System.Data”中不存在
  2. 类型或命名空间 找不到名称“EntitySet”

我在这里和其他网站上发现了各种类似的问题,所有这些似乎都说需要添加一些额外的程序集。

我已添加所有建议的内容,但问题仍然存在。另一个奇怪的地方是 VS2010 本身并没有在编辑器屏幕中给错误加下划线,但它会在错误日志中显示它们。

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

一些技术细节:

  • 我正在运行 Windows 7 32 位。
  • 我还有 Visual Studio 2008 SP1 安装。我刚刚安装了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"/>

【问题讨论】:

  • 目标框架是3.5吗? (如果这些是 C# 项目,您将在属性/应用程序中看到它。)
  • 把它写成回复,我会给你解决方案。确实是这样……该死的。我只是不明白为什么。 .NET 4 默认不包含 3.5 中的内容吗?
  • 我正要“提供”代表 steinar 的“答案”,但我不明白解决方案... :) 所以,您在 VS2010 中创建了一个新项目,添加一个新的 dbml 并看到错误?如果是这样,那奇怪的。我刚刚用 3.5 和 4.0 进行了测试,所有必需的引用都是自动添加的。嗯……
  • 是的,事情就是这样发生的。我所有的网站、解决方案、项目……它们都从目标框架 4.0 开始,当我将此网站切换到 3.5 时,所有错误都消失了。

标签: linq-to-sql visual-studio-2010


【解决方案1】:

我找到了this link,它为我解决了这个问题。净是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标签已经存在,需要添加assembly/add assembly标签。即使在构建时,VS 很容易找到 System.Data.Linq。

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

(附加背景:我可能遇到这种情况是因为我在使用here找到的过程之后启用了Linq。)

【讨论】:

  • 非常感谢它解决了这个问题。但是我需要确认版本 4.0.0.0 是 Linq 程序集还是与 do net 相关?
  • @Rusty - 我没有要检查的环境,但我相信有办法检查 System.Data.Linq 的安装版本。
  • 这对我也有用。我不明白为什么会这样。我添加了一个引用,它编译得很好,但是在浏览器中查看时就像我没有添加一个引用一样,
  • 不确定是否每个人都会遇到这种情况!但是今天当我将旧网站从 2.0 迁移到 4.0 时,我注意到在 web.config 中创建了 targetFramework=4.0 条目,但组装部分没有更新!然后,我尝试使用几年前在 2.0 中构建的旧 Web 应用程序,它得到了完美的转换。不知道为什么,但这就是我所看到的。尽管 Hot Lick 的解决方法对我有用,但我肯定想知道为什么在本地 IIS 中设置的网站会发生这种情况,但在 .net 端口下运行的 Web 应用程序却没有。任何帮助将不胜感激。
  • 您的回答有局限性。该语法仅适用于 Web 应用程序。我认为您应该改为显示 GUI。
【解决方案2】:

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

【讨论】:

  • 参考已经存在,我仍然有这个问题。
  • 这有助于使用 SqlMethods.DateDiffDay,谢谢。
  • @HotLicks 我也遇到了同样的问题,在 web.config 中添加并确认了参考。请问有什么想法吗?
  • @HotLicks 抱歉,我确实提到我的 Web.Config 中也有这个。我也在使用 VS 2015 和 MVC 5
【解决方案3】:

重要,必须在webconfig中设置

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

【讨论】:

    【解决方案4】:

    您可以尝试以下操作:

    添加对System.Data.Linq的引用(右键单击References文件夹|选择添加引用|选择.Net选项卡(默认选择)|选择System.Data.Linq 参考 | 点击确定。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-18
      • 2012-04-15
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多