Visual Studio 版本和 .NET 目标版本

3

我使用的是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呢?

提前致谢。


1
Visual Studio 2008无法针对.NET Framework 4.0进行目标设置。VS2008需要您安装.NET Framework 3.5。Visual Studio 2005不支持针对特定.NET Framework的目标设置。当它发布时,没有引入该功能的原因。如果您没有VS2010,则作为开发人员没有理由安装.NET Framework,因为您将无法针对该版本进行目标设置。 - Security Hound
@Ramhound 显然你可以在 Visual Studio 2005 中“针对”更高版本的 .net framework 进行开发:http://geekswithblogs.net/cyoung/archive/2007/12/01/117279.aspx - Ruslan
@BDN - 我不同意那个说法。虽然VS05可以编译.NET 3.5SP1,但IDE没有提供任何方法使其针对特定框架。如果他安装了VS08,那么没有理由使用VS05,因为您可以将VS08项目针对.NET Framework 2.0/3.0。 - Security Hound
2个回答

3
您可以安装多个主要版本的.NET Framework,并且您可以在Visual Studio 2008或2010中针对其中任何一个进行目标设置,只需进入项目的属性页面>构建>目标框架属性>应用程序>目标框架(根据项目类型不同而异)来选择其中一个。
编辑:以上功能在VS2005中不可用,它默认使用.NET 2.0。要将其与其他版本的框架一起使用,您需要稍微调整引用(即将.NET 2.0 dll替换为其他版本的dll)。

错误,VS2005没有这个选项。 - Snowbear
我使用VS2005和2008(很快还会用2010),没有任何问题。只需确保在创建新项目时针对正确的框架进行目标设置即可。 - Widor
那个选项在VS2005上不可用。所以我想知道它会针对哪个版本:2.0还是我机器上最新的版本? - Martín
Visual Studio 2005 只能构建 .NET Framework 2.0 应用程序。VS2005 安装程序强制要求您安装 .NET Framework 2.0。 - Security Hound
抱歉,我修改了我的答案。@Martín VS2005 默认使用 .NET 2.0。 - Ruslan

2
“Bad Display Name”并没有真正帮助作者。
他未提及他在评论中引用的文章中以下内容。
是的,恐怕这是可以预料的。 安装.NET 3.5不会升级您使用Visual Studio 2005获得的编译器。如果您想使用新的C#或VB.NET语法,则需要获取VS 2008。我在文章中提到了缺少编译器支持的问题。 当然,语法被编译器理解与所利用的底层库和类型之间存在区别。您仍然可以完全访问Linq技术,但必须使用“标准”语法编写代码。 以下是上述代码(加上一些附加代码以打印结果)的“长格式”。这可以在VS 2005中编译。您需要为项目引用System.Core v3.5并导入System.Linq命名空间。 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; //var numsPlusOne = from n in numbers select n + 1; IEnumerable numsPlusOne = Enumerable.Select(numbers, delegate(int n) { return n + 1; }); foreach (int nNew in numsPlusOne) { Console.WriteLine(nNew); } 好吧,我的博客显然导致了误解,我需要仔细澄清这里发生的事情。人们需要在心中非常清楚地区分不同的事物: a).NET Framework 框架主要由预先编写的面向对象代码库组成,即类库,或者更准确地说,一组库。 b)C#和VB.NET编译器 这些编写为.Net程序集。新的编译器与框架捆绑在一起。 c)Visual Studio提供的C#和VB.NET编辑和编译支持。从Visual Studio 2008开始,Microsoft增强了这些工具,以便您可以轻松地针对不同版本的框架进行目标定位。这包括针对不同版本的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的代码无法编译的原因(它使用了新的对象初始化语法)。 编译器支持的语法是一回事。专门语法所利用的底层类和其他类型是另一回事。您无法在旧版本的Visual Studio中使用新的Linq语法。但是,您可以使用“传统”语法直接访问底层类库。 话虽如此,我可以不负责任地指出,微软发布了适用于Visual Studio 2005的一些Linq CTP工具。这仍然可用于: http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en。 可能可以将其与项目文件中包含的MSBuild脚本中引用的Microsoft.CSharp.targets进行小心更改相结合,以使Visual Studio 2005支持最新的语法和编译器。
换句话说,文章的作者建议使用一种方法,即 IDE 不会检查您的语法,您将无法在 VS05 中实现任何 C# 3.5 语法变化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接