【问题标题】:What will and will not run on .NET 2?什么将在 .NET 2 上运行和不运行?
【发布时间】:2013-11-29 10:19:23
【问题描述】:

我有 Visual Studio 2012 并将我的目标框架设置为 .NET 2.0。

但我有:

ThreadPool.QueueUserWorkItem(example => Threadedmethod(intval,classVal) );

void Threadedmethod(int id, MyClass val)
{ ....  }

然后编译。

如何判断这是否适用于 VS2012?我被告知 => 运算符与 .NET 2.0 不兼容。

【问题讨论】:

  • 为什么要关心编译器版本?您仍然可以使用最新的编译器和旧的 .NET 版本。
  • 因为我被告知仅对这个项目使用 c# 2.0 功能。我想知道。
  • 不,你误解了你的要求,或者给你要求的人不理解 .NET 2.0 和 C# 2.0 之间的区别。它们是完全不同的问题。
  • 和上面的一样吗? ThreadPool.QueueUserWorkItem(delegate { Threadedmethod(intvalclassVal);} );
  • 你真的应该停止害怕告诉你的客户真相。如有必要,请将他们发送到此帖子并告诉他们“John Saunders 是这么说的”。编译器版本不限制代码可以在哪个 .NET Framework 版本上运行。没有理由不能在面向 .NET 2.0 的应用程序中使用 C# 3.0 到 C# 5.0。

标签: c# .net visual-studio-2012 compatibility backwards-compatibility


【解决方案1】:

我认为您对.net 版本和c# 版本感到困惑。当您以 .Net 2.0 为目标时,您仍然可以使用 c#(语言功能),如 lambda、扩展方法、集合初始化程序、对象初始化程序等。

这与 .Net 版本无关。问题是您不能使用 .Net 版本 > 您的目标版本中新添加的类。

请记住,当它被编译时,您的代码是完全有效的,它会在只有 .Net framework 2.0 的机器上正常运行。

我被告知 => 在 .net 2.0 中无效

这是错误的,正确的说法是 c# 2.0 中无效,但您没有在 VS2012 中使用 c# 2.0。这是您在那里使用的 c# 5.0 编译器。

如需了解更多信息,请阅读Jon's article,尤其是在 .NET 2.0 和 3.0 中使用 C# 3 部分。

我的结论:毫无疑问,您的应用程序将在 .Net 2.0 中完美运行

【讨论】:

    【解决方案2】:

    据我所知 => 在 .net 2.0 中无效

    这不是真的。您可以在 VS2012 上运行 .Net 2.0 框架。

    查看wiki,它列出了 VS2012 中允许的所有框架。

    Visual Studio 2012 Dev11 11.0 2.0、3.0、3.5、4.0、4.5 02012-09-122012年9月12日

    来自MSDN

    框架定位不保证您的应用程序会运行 正确。您必须测试您的应用程序以确保它运行 目标版本。您不能针对以下框架版本 早于 .NET Framework 2.0。

    【讨论】:

    • 所以这是说在 vs2012 中我不能保证它会在 .net 2.0 下运行?
    • 不,这是说您可以使用 C# 3.0 编译器中的功能,同时针对 .NET 2.0,它会毫无问题地运行。
    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2020-05-16
    • 2021-03-13
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多