除了早期的 .NET 框架版本之外,Visual Studio 还可以定位早期的 C# 语法吗?

发布于 2024-10-17 08:22:07 字数 193 浏览 3 评论 0原文

简单的部分:

使用下拉菜单在 Visual Studio 2010 项目中定位 .NET 2.0 框架。

困难的部分:

是否可以针对特定的语法版本 - 例如 var s = "hello world" 在 VS2008 及更高版本中是有效的语法糖,但在 VS2005 中无法编译。 VS2010可以配置为在编译时标记这个吗?

The easy part:

Targeting the .NET 2.0 framework in a Visual Studio 2010 project using the dropdown.

The hard part:

Is it possible to target a specific syntax version - for example var s = "hello world" is valid syntactic sugar in VS2008 and above, but would not compile in VS2005. Can VS2010 be configured to flag this at compile time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

反话 2024-10-24 08:22:07

这可以通过在项目设置中指定语言版本来完成。要将语言版本设置为 C# 2.0,请执行以下

  • 操作 右键单击​​项目并选择“属性”
  • 转到“构建”选项卡
  • 单击“高级”按钮
  • 将“语言版本”下拉列表更改为“ISO-2”

在此处输入图像描述

以下是 Visual Studio 2010 中的其他选择及其含义。

  • ISO-1:C# 1.0 / Visual Studio RTM 和2003
  • ISO-2:C# 2.0 / Visual Studio 2005
  • C# 3.0:C# 3.0 / Visual Studio 2008
  • 默认:C# 4.0 / Visual Studio 2010

This can be done by specifying the language version in the project settings. To set the language version to C# 2.0 do the following

  • Right Click on the project and select "Properties"
  • Go to the "Build" Tab
  • Click the "Advanced" Button
  • Change the "Language Version" drop down to "ISO-2"

enter image description here

Here are the other selections and their meanings in Visual Studio 2010.

  • ISO-1: C# 1.0 / Visual Studio RTM and 2003
  • ISO-2: C# 2.0 / Visual Studio 2005
  • C# 3.0: C# 3.0 / Visual Studio 2008
  • default: C# 4.0 / Visual Studio 2010
花开柳相依 2024-10-24 08:22:07

是的。从 IDE 中设置:

Project Properties -> Build -> Advanced -> Language Version : ISO-2

Yes. From the IDE, set:

Project Properties -> Build -> Advanced -> Language Version : ISO-2
晨曦÷微暖 2024-10-24 08:22:07

是的,正如其他人所说,您可以做到这一点 - 但这并不是 C# 1 编译器的完美模拟,正如我在演讲时发现的那样。它会发现语法中的“大”变化,但不会发现行为上的一些细微变化。例如,在 C# 1 中没有方法组转换,因此您无法执行以下操作:

delegate void Foo(string x);
void Bar(string y) {}
...
Foo foo = Bar;

...但仅将 C# 4 编译器设置为目标 C# 1 并不会解决此问题。

Yes, you can do this, as others have said - but it's not a perfect simulation of the C# 1 compiler, as I discovered while I was giving a presentation. It will spot "big" changes in syntax, but not some subtle changes in behaviour. For example, in C# 1 there's no method group conversion, so you couldn't do this:

delegate void Foo(string x);
void Bar(string y) {}
...
Foo foo = Bar;

... but simply setting the C# 4 compiler to target C# 1 doesn't pick this up.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文