Visual Studio 版本和.NET 目标版本

发布于 2024-11-16 19:25:17 字数 218 浏览 1 评论 0原文

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

提前致谢。

I use VS 2005 and .NET 2.0 SP 2.

If I install VS 2008 and .NET 4 on the same machine, without uninstalling VS 2005, and I keep using VS 2005 to build some applications, will these applications keep targeting .NET 2.0, or they will require .net 4.0?

I have read that with VS 2008 it is possible to choose which .NET version to target, but what about VS 2005?

Thanks in advance.

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

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

发布评论

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

评论(2

她如夕阳 2024-11-23 19:25:17

您可以安装 .NET Framework 的多个主要版本,并且可以在 Visual Studio 2008 或 2010 中以其中任何一个为目标,只需转到项目的 Property Pages > 即可。构建>目标框架属性>应用>>目标框架(取决于项目类型)选择一个。

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

You can have multiple major versions of .NET Framework installed and you can target any of them in Visual Studio 2008 or 2010, just go to Project's Property Pages > Build > Target Framework or Properties > Application > Target Framework (depending on project type) to pick one.

EDIT: The above function is not available in VS2005 and it will target .NET 2.0 by default. To use it with other versions of framework, you'd need to fiddle with references a bit (i.e. replacing .net 2.0 dlls with other version's dlls).

野の 2024-11-23 19:25:17

错误的显示名称实际上并没有帮助作者。

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

是的,这恐怕是意料之中的。
安装 .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 = 来自数字中的 n
选择n+1; IE可枚举
numsPlusOne = Enumerable.Select(numbers, delegate(int n) { return
n+1; });

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

好的,我的博客显然会导致
误会,我需要
仔细限定正在发生的事情
这里。人们需要非常明确
他们心中的区别
不同的事情:

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

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 一起提供。因此,有
不支持新语法
由最新的编译器,这就是为什么
克里斯的代码无法编译(它使用
新对象初始值设定项语法)。

编译器支持的语法是一种
事物。底层类和
专门开发的其他类型
像 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 语法更改。

Bad Display Name has not actually helped the author.

He fails to mention the following from the very article he quoted in his comment to me.

Yes, that's to be expected I'm afraid.
Installing .NET 3.5 doesn't upgrade
the compilers you get with Visual
Studio 2005. You have to get VS 2008
if you want to use the new C# or
VB.NET syntax. I mentioned this
absence of compiler support in the
article.

There is, of course, a distinction
between sytax that is understood by a
compiler, and the underlying libraries
and types that the syntax expolits.
You still have full access to Linq
technologies, but you have to write
code using 'standard' syntax.

Here is the above code (plus some
additional code to print out the
results) written 'long-hand'. This
compiles in VS 2005. You need to give
your project a reference to
System.Core v3.5 and import the
System.Linq namespace.

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); }

OK, my blog is clearly leading to
misunderstandings, and I need to
carefully qualify what is going on
here. People need to make a very clear
distinction in their minds between
different things:

a) The .NET Framework The framework is
chiefly composed of a library of
pre-written object orientated code
-i.e., a class library, or perhaps more accurately, a set of libraries.

b) The C# and VB.NET compilers These
are written as .Net assemblies. The
new compilers are bundled with the
framework.

c) The C# and VB.NET editing and
compilation support provided in Visual
Studio. Starting with Visual Studio
2008, Microsoft has enhanced these
tools so that you can easily target
different versions of the framework.
This includes targeting different
versions of the C# and VB.NET
compilers.

Note the following points:

• All .NET 3.5 code complies with the
standardised definitions for version
2.0 of the Common Language Runtime. This includes all the code in the
class libraries, including Linq, and
even the code in the compiler
assemblies. Hence, Visual Studio 2005
can access any public members of any
public classes anywhere in the
library, and can even reach protected
and private members via reflection.
This is why you can happily exploit
WCF 3.5 within Visual Studio 2005.

• Visual Studio 2005 predates .NET 3.5
and therefore its code editing and
compilation features do not target or
support the versions of the compilers
provided with .NET 3.5. Hence, there
is no support for new syntax supported
by the latest compilers, which is why
Chris' code won't compile (it uses the
new object initializer syntax).

Syntax supported in a compiler is one
thing. The underlying classes and
other types exploited by specialised
syntax such as Linq are something
different. You don't have the ability
to use the new Linq syntax in the old
version of Visual Studio. You do,
however, have the ability to access
the underlying class libraries
directly using 'traditional' syntax.

Having said all this, I could be
irresponsible and point out that
Microsoft did release some Linq CTP
tooling for Visual Studio 2005. This
is still available at:

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

It may be possible to use this in
conjunction with careful changes to
Microsoft.CSharp.targets referenced in
the MSBuild script contained in your
project files in order to convince
Visual Studio 2005 to support the
latest syntax and compilers. I
wouldn't recommend this, as this
depends on CTP code, which may not
offer complete support for the syntax
supported in the release version of
Visual Studio 2008, and a degree of
black-belt manipulation of the
mechanics of Visual Studio. I take no
responsibility for any problems people
might encounter if they try to get
this to work!

In other words the author of the article suggested what amounts to be a hack, the ide will not check your syntax, and you won't be able to implement any C# 3.5 syntax changes within VS05.

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