【问题标题】:Visual Studio version and .NET target versionVisual Studio 版本和 .NET 目标版本
【发布时间】:2011-06-22 15:13:31
【问题描述】:

我使用 VS 2005 和 .NET 2.0 SP 2。

如果我在同一台机器上安装 VS 2008 和 .NET 4,而不卸载 VS 2005,并且我继续使用 VS 2005 来构建一些应用程序,这些应用程序会继续以 .NET 2.0 为目标,还是需要 .net 4.0?

我已经读过,使用 VS 2008 可以选择要定位的 .NET 版本,但是 VS 2005 呢?

提前致谢。

【问题讨论】:

  • Visual Studio 2008 不能以 .NET Framework 4.0 为目标。 VS2008 要求您安装 .NET Framework 3.5。 Visual Studio 2005 不支持针对特定的 .NET Framework。当它发布时,没有理由引入该功能。如果您没有 VS2010,则没有理由作为开发人员安装 .NET Framework,因为您将无法针对该版本。
  • @Ramhound 显然您可以在 Visual Studio 2005 中“定位”更高版本的 .net 框架:geekswithblogs.net/cyoung/archive/2007/12/01/117279.aspx
  • @BDN - 我不同意这种说法。虽然 VS05 可以针对 .NET 3.5SP1 进行编译,但 IDE 无法使其针对特定框架。如果他安装 VS08,则没有理由使用 VS05,因为您可以将 VS08 项目定位到 .NET Framework 2.0/3.0

标签: .net visual-studio version


【解决方案1】:

您可以安装多个主要版本的 .NET Framework,并且可以在 Visual Studio 2008 或 2010 中定位其中的任何一个,只需转到项目的 Property Pages > Build > Target FrameworkProperties > Application > Target Framework(取决于项目类型)选择一个。

编辑:上述功能在 VS2005 中不可用,默认情况下它将针对 .NET 2.0。要将它与其他版本的框架一起使用,您需要稍微修改一下引用(即用其他版本的 dll 替换 .net 2.0 dll)。

【讨论】:

  • 错了,VS2005没有这个选项
  • 我有 VS2005 和 2008(以及很快 2010)没有任何问题。只需确保在创建新项目时使用正确的框架即可。
  • 该选项在 VS2005 上不可用。所以我想知道它会针对哪个版本:2.0 还是我机器上安装的最新版本?
  • Visual Studio 2005 只能构建 .NET Framework 2.0 应用程序。 VS2005 安装程序会强制您安装 .NET Framework 2.0。
  • 抱歉,编辑了我的答案。 @Martín VS2005 默认使用 .NET 2.0。
【解决方案2】:

Bad Display Name 实际上并没有帮助作者。

他在对我的评论中引用的那篇文章中没有提到以下内容。

是的,恐怕这是可以预料的。 安装 .NET 3.5 不会升级 您使用 Visual 获得的编译器 Studio 2005。你必须得到 VS 2008 如果您想使用新的 C# 或 VB.NET 语法。我提到了这个 没有编译器支持 文章。

当然是有区别的 可以理解的语法之间 编译器和底层库 以及语法所使用的类型。 您仍然可以完全访问 Linq 技术,但你必须写 使用“标准”语法的代码。

这是上面的代码(加上一些 打印出的附加代码 结果)写成“长手”。这 在 VS 2005 中编译。你需要给 您的项目参考 System.Core v3.5 并导入 System.Linq 命名空间。

int[] 数字 = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

//var numsPlusOne = from n in numbers 选择 n + 1; IEnumerable numsPlusOne = Enumerable.Select(numbers, delegate(int n) { return n + 1; });

foreach (int nNew in numsPlusOne) { Console.WriteLine(nNew); }

好的,我的博客显然是导致 误解,我需要 仔细确定正在发生的事情 这里。人们需要说得很清楚 他们心目中的区别 不同的东西:

a) .NET 框架 该框架是 主要由图书馆组成 预先编写的面向对象代码 - 即,一个类库,或者更准确地说,是一组库。

b) C# 和 VB.NET 编译器 这些 被编写为.Net 程序集。这 新的编译器与 框架。

c) C# 和 VB.NET 编辑和 Visual 中提供的编译支持 工作室。从 Visual Studio 开始 2008 年,微软增强了这些 工具,以便您可以轻松定位 不同版本的框架。 这包括针对不同的 C# 和 VB.NET 的版本 编译器。

注意以下几点:

• 所有 .NET 3.5 代码均符合 版本的标准化定义 公共语言运行时 2.0。这包括所有代码 类库,包括 Linq,以及 甚至编译器中的代码 组件。因此,Visual Studio 2005 可以访问任何公共成员 任何地方的公开课 图书馆,甚至可以达到受保护的 和私有成员通过反射。 这就是为什么你可以愉快地利用 Visual Studio 2005 中的 WCF 3.5。

• Visual Studio 2005 早于 .NET 3.5 因此它的代码编辑和 编译功能不针对或 支持编译器的版本 随 .NET 3.5 提供。因此,有 不支持新语法 由最新的编译器,这就是为什么 Chris 的代码无法编译(它使用 新的对象初始化语法)。

编译器支持的语法是一种 事物。基础类和 由专业人士利用的其他类型 诸如 Linq 之类的语法是什么 不同的。你没有这个能力 在旧版本中使用新的 Linq 语法 Visual Studio 版本。你做, 但是,有能力访问 底层类库 直接使用“传统”语法。

说了这么多,我可以 不负责任并指出 微软确实发布了一些 Linq CTP Visual Studio 2005 的工具。这 仍可在:

http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en.

也许可以在 结合仔细的改变 中引用的 Microsoft.CSharp.targets 包含在您的 MSBuild 脚本 项目文件以说服 Visual Studio 2005 支持 最新的语法和编译器。一世 不推荐这个,因为这个 取决于 CTP 代码,这可能不是 提供对语法的完整支持 在发行版中支持 Visual Studio 2008 和一定程度 黑带操纵 Visual Studio 的机制。我不接受 对任何问题负责的人 如果他们试图得到,可能会遇到 这工作!

换句话说,这篇文章的作者建议什么是 hack,ide 不会检查您的语法,并且您将无法在 VS05 中实现任何 C# 3.5 语法更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2013-09-30
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多