导入命名空间 System.Query

4

我正在尝试通过将以下内容添加到我的.aspx页面来在我的启用了.Net 3.5的Web服务器上加载Linq:

<%@ Import Namespace="System.Query" %>

然而,这个方法失败了,并告诉我它找不到命名空间。

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

我也尝试过,但没有成功:

  • System.Data.Linq
  • System.Linq
  • System.Xml.Linq

我认为 .Net 3.5 已经在工作,因为 var hello = "Hello World" 看起来是可以运行的。

请问有人能帮忙吗?

PS:我想澄清一下,我没有使用 Visual Studio,我只是使用 文本编辑器 直接编写我的代码到 .aspx 文件中。

6个回答

5

2

您的web.config文件的哪一部分是什么样子的?

下面是使用Visual Studio 2008创建的全新ASP.NET 3.5项目的示例:

<assemblies>
  <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.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"/>
</assemblies>

2
我找到了答案 :) 我需要在我的web.config中添加以下内容:
<assemblies>  
    <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.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"/>
</assemblies>

那么我可以在我的代码中添加以下内容:

然后我可以将以下内容添加到我的代码中:

<%@ Import Namespace="System.Linq" %>

@Will,

谢谢你的帮助。我已经接受了你的一个答案 :)


1

确保您的项目设置为目标3.5,而不是2.0。

正如其他人所说,您的“var”测试是C#3(即VS2008)的测试,而不是3.5框架的测试。

如果您正确设置了项目框架目标设置,则不应该期望此时需要手动添加dll引用。


嗨,威尔,我没有使用VS。还有其他方法可以确认3.5是否正确安装? - GateKiller
你在IIS的ASP.NET选项卡中选择了哪个版本的框架? - Will Dean
我在IIS中选择了版本2,我的web.config显示Version=2.0.0.0。求助 :( - GateKiller

0
csproj文件可能缺少System.Core引用。 在csproj文件中查找像这样的行:
<Reference Include="System" />

并在下面添加一行,就像这样:

<Reference Include="System.Core" />

0

var hello 的东西是编译器的魔法,不需要 Linq 也可以工作。

尝试添加对 System.Core 的引用。


抱歉,我的表述不够清晰。我是指将 System.Core 添加到 Web 项目的引用中,而不是添加到页面中。

页面上的 Import 基本上只是使用语句,允许您在页面上跳过命名空间。


嗨,Keith,添加:<%@ Import Namespace="System.Core" %> 无法正常工作,并显示相同的错误消息:(还有其他想法吗? - GateKiller
Keith在谈论添加DLL引用,而不是另一个导入。说实话,我建议您从Visual Studio(免费版本之一)开始,因为它会为您优化这种类型的内容,直到您对.NET开发更加熟悉。 - Will Dean
是的,我已经完成了这些步骤。就像我说的,我相信3.5版本是可以工作的,因为语法“var string =“hello”;”是.NET 3.5的新功能。现在我完全不知道该怎么办了。顺便说一句:谢谢你的帮助 :) - GateKiller
“var string =“ hello”;”之所以有效,是因为这是.Net 3.5的一个新功能。”正如至少有两个人在这里已经告诉过你的那样,“这不是.Net 3.5的一个功能”。这是C#3的一个功能,这是VS2008附带的编译器支持的语言版本。我很难相信你已经阅读并理解了Hanselman文章,它似乎涵盖了你正在尝试做的事情。” - Will Dean

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