4

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

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

但是,这失败并告诉我它找不到命名空间。

命名空间“系统”中不存在类型或命名空间名称“查询”

我也试过没有运气:

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

我相信 .Net 3.5 之所以有效,是因为它var hello = "Hello World"似乎有效。

有人可以帮忙吗?

PS:我只是想澄清一下,我不使用 Visual Studio,我只是有一个文本编辑器并将我的代码直接写入 .aspx 文件。

4

6 回答 6

5

我在 IIS 中选择了版本 2,我

嗯,这肯定是你的问题吗?选择 3.5。

实际上,这是真实的信息:

http://www.hanselman.com/blog/HowToSetAnIISApplicationOrAppPoolToUseASPNET35RatherThan20.aspx

于 2008-08-12T11:15:29.797 回答
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>
于 2008-08-12T13:13:54.860 回答
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" %>

@将要,

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

于 2008-08-12T13:15:14.297 回答
1

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

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

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

于 2008-08-12T10:49:50.503 回答
0

这些var hello东西是编译器的魔法,可以在没有 Linq 的情况下工作。

尝试添加对System.Core


抱歉,我没说清楚。我的意思是添加System.Core到 web 项目的引用,而不是页面。

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

于 2008-08-12T10:44:41.323 回答
0

csproj 文件可能缺少 System.Core 引用。在 csproj 文件中查找一行,如下所示:

<Reference Include="System" />

并在它下面添加一行,如下所示:

<Reference Include="System.Core" />
于 2010-05-11T03:05:40.807 回答