【问题标题】:How to add System.Collections.Generic 3.5 to Asp.net 2.0?如何将 System.Collections.Generic 3.5 添加到 Asp.net 2.0?
【发布时间】:2012-11-02 16:55:33
【问题描述】:

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

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

【问题讨论】:

  • IEnumerable 没有 3.5 版(就此而言,IEnumerable<T> 也没有)。你想写什么代码,你面临什么障碍?
  • 我基本上是在做这个“msdn.microsoft.com/en-us/library/bb546137(v=vs.90).aspx”。 .net 2.0 缺少 SequenceEqual 函数。

标签: c# .net


【解决方案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>

【讨论】:

  • 谢谢,工作正常!在我添加了针对 v3.5 的 之后!
  • 谢谢。我不确定那部分是否需要。本来是加的,后来拿出来了,估计还是需要的。
【解决方案2】:

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

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

此外,请确保您的 .cs 文件中有 using System.Linq; 语句,或者如果您使用内联脚本块,则在您的 .aspx 文件中有等效语句。 SequenceEquals 是 IEnumerable 类的 extension method

【讨论】:

  • 我没有运行解决方案。我只是编辑文件,因为它不是我不需要编译的应用程序。
【解决方案3】:

由于您在评论中提到您正在尝试使用 SequenceEqual,因此您的问题是使用 System.Linq.Eumerable 类之一。此类将大部分(如果不是全部)Linq to Objects 定义为IEnumerableIEnumerable&lt;T&gt; 类型上的大量扩展方法。

该类在 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)

【讨论】:

  • 我收到此错误:无法加载文件或程序集 'System.Linq.Eumerable, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 或其依赖项之一。系统找不到指定的文件。
  • @HardCode 没有 System.Linq.Enumerable 文件; System.Linq.Enumerable 是在 System.Core.dll 中定义的类。
  • 我在我的网络配置中添加了这个:。我还需要添加 dll 吗?
  • 在 Enumerable 上给我错误:CS0411:方法 'System.Linq.Enumerable.SequenceEqual(System.Collections.Generic.IEnumerable, System.Collections.Generic. IEnumerable)' 无法从用法中推断出来。尝试明确指定类型参数。
  • @HardCode 不,程序集引用对dll的引用; dll 程序集。 “dll”部分是隐含的。至于类型参数,它取决于两个序列的类型。在您给出的示例中,类型相同,因此错误没有意义。
猜你喜欢
  • 2010-12-17
  • 2019-02-26
  • 2011-06-03
  • 2010-09-25
  • 2010-11-28
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多