0

我正在向现有的 Asp.net 2.0 应用程序添加功能。我想使用一些 .net 3.5 功能,所以我将一些 .net 3.5 程序集添加到我的 Web 配置中。我添加了 System.Core 和 System.Xml.Linq。

我想使用 IEnumerable 3.5 版,我需要将什么库添加到 Web 配置中?

4

3 回答 3

1

您可以像这样添加参考程序集:

<?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>
于 2012-11-02T17:38:00.490 回答
0

因为,在您的评论中,您提到您正在尝试使用 SequenceEqual,所以您的问题是使用System.Linq.Eumerable该类之一。此类将大部分(如果不是全部)Linq to Objects 定义为IEnumerableandIEnumerable<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)
于 2012-11-02T17:22:25.870 回答
0

您需要在运行的机器上安装 .net 3.5 SP1,至少需要使用 Visual Studio 2008,并且需要进入项目属性并将目标框架设置为 3.5。

如果您仍在使用 Visual Studio 2005,可能有一些技巧可以从 .net 3.5 调用编译器,但它并不是很漂亮,也没有得到很好的支持。

using System.Linq;此外,如果您使用内联脚本块,请确保您的 .cs 文件中有一条语句,或者 .aspx 文件中有一条等效语句。SequenceEquals是IEnumerable 类的扩展方法。

于 2012-11-02T17:25:54.570 回答