【问题标题】:System.Linq namespace missing even with reference to System.Core.DllSystem.Linq 命名空间缺失,即使参考 System.Core.Dll
【发布时间】:2010-09-30 10:38:08
【问题描述】:

当我在 Visual Studio 2010 中打开我的 Asp Net 网站时,属性显示为“Target Framework 3.5”,但是当我尝试使用 Linq 命名空间时,编译器会报错。

“找不到类型或命名空间名称'var'(您是否缺少 using 指令或程序集引用?)”

“命名空间‘System’中不存在类型或命名空间名称‘Linq’(您是否缺少程序集引用?)”

我手动引用了一些 dll 来解决我的问题,但仍然没有成功。

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

帮助? :-)

【问题讨论】:

    标签: linq assemblies aspnet-compiler


    【解决方案1】:

    如果您甚至不能使用var,这表明它甚至没有使用正确版本的 C# 编译器。 (只要您使用的是 C# 3 或 C# 4 编译器,即使面向 .NET 2.0,您也应该能够使用 var。)我会先专注于让它工作。

    您是否可能在 IIS 上运行但没有正确配置?可能值得围绕这方面查看您的网站配置,并可能重新运行 aspnet_regiis。

    【讨论】:

    • 感谢您为我指明了正确的方向 - 当我查看 YSOD 并扩展显示详细编译器输出时,我得到了:Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.4016 for Microsoft (R) Windows (R) 2005 Framework 版本 2.0.50727 --- 但我对运行 aspnet_regiis 犹豫不决,我怎么能确定我没有破坏东西?这是一个实时服务器。
    • ...在这里学习新东西...在站点的 IIS .Net 编译部分组件中有很多 2.0 参考。 (未在 web.config 中找到)。
    • 需要遵循 Scott Hanselman hanselman.com/blog/… 的智慧,在 部分添加一些行。现在可以使用了,太好了!
    【解决方案2】:

    我刚刚修复了一个类似的问题,将targetFramework="4.0" 属性添加到web.config 中的compilation 元素

    修改后的相关片段为:

    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2010-11-05
      • 2015-02-07
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多