我正在向现有的 Asp.net 2.0 应用程序添加功能。我想使用一些 .net 3.5 功能,所以我将一些 .net 3.5 程序集添加到我的 Web 配置中。我添加了 System.Core 和 System.Xml.Linq。
我想使用 IEnumerable 3.5 版,我需要将什么库添加到 Web 配置中?
您可以像这样添加参考程序集:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
</configuration>
因为,在您的评论中,您提到您正在尝试使用 SequenceEqual,所以您的问题是使用System.Linq.Eumerable
该类之一。此类将大部分(如果不是全部)Linq to Objects 定义为IEnumerable
andIEnumerable<T>
类型的大量扩展方法。
该类在 System.Core.dll 程序集中定义(参见http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx以供参考)。
您说您已经添加了 System.Core 引用,所以我想您可能没有using System.Linq;
在文件顶部添加。
此外,扩展方法在 2.0 版中还没有添加到 C# 中,因此如果您使用的是 2.0 编译器,则必须将该方法作为静态方法调用。代替
sequenceA.SequenceEqual(sequenceB)
你必须使用
Enumerable.SequenceEqual(sequenceA, sequenceB)
您需要在运行的机器上安装 .net 3.5 SP1,至少需要使用 Visual Studio 2008,并且需要进入项目属性并将目标框架设置为 3.5。
如果您仍在使用 Visual Studio 2005,可能有一些技巧可以从 .net 3.5 调用编译器,但它并不是很漂亮,也没有得到很好的支持。
using System.Linq;
此外,如果您使用内联脚本块,请确保您的 .cs 文件中有一条语句,或者 .aspx 文件中有一条等效语句。SequenceEquals
是IEnumerable 类的扩展方法。