如何使用VS2005定位旧版本的框架?

时间:2010-01-21 19:17:09

标签: .net configuration visual-studio-2005

我的电脑上安装了VS2005和VS2008。

我有.NET Framework 2.0 SP2,3.0,3.0 SP2和3.5 SP1

我可以从下拉窗口中选择在VS 2008中使用哪个Framework,但我很好奇我如何在VS 2005中设置我想要针对项目的框架。我显然不想卸载框架,因为我仍然希望将VS 2008用于各种目标框架。

我想要完成的是使用VS2005但仅使用2.0中的可用程序集。但同时使用VS2008和我想要的任何框架。

我尝试在SO上寻找答案,所以如果它是一个复制品,只需指向我的链接即可。 感谢

编辑:好的,基于其他人提到的内容以及我更深入地挖掘,看起来它可能是2.0框架的特定版本。我正在看WaitHandle WaitOne功能,这导致我们的应用程序崩溃了客户PC,他们声称他们安装了2.0。我们调用handle.WaitOne(0),如果你查看2.0规范,它不会显示带有一个int参数的WaitOne函数。但是,如果我导航到定义,它显示为v2.0.50727并且编译正常。所以我想我需要针对特定​​的框架(或确保客户安装了更新的.NET Framework)?

另外,他们是否为某些新版本更新了在线msdn文档?

5 个答案:

答案 0 :(得分:4)

  

使用Visual Studio的过去几个版本,每个Visual Studio版本仅支持特定版本的.NET Framework。例如,VS 2002仅适用于.NET 1.0,VS 2003仅适用于.NET 1.1,VS 2005仅适用于.NET 2.0。

(来自here

所以我认为Visual Studio 2005 只会做你想做的事。使用2008,您可以选择要定位的框架:

Unfortunately the VS 2008 multi-targeting support only 
works with .NET 2.0, .NET 3.0 and .NET 3.5    

(来自同一篇文章)

最后:

  

VS 2008确实并排运行,但是,   VS 2005,VS 2003和VS 2002。   所以绝对有可能   继续针对.NET 1.1项目   在同一台机器上使用VS 2003   VS 2008.

(来自同一篇文章)

更新

WaitHandle..::.WaitOne Method (Int32)说:

  

版本信息.NET Framework   受以下版本支持:3.5 SP1,3.0 SP2, 2.0 SP2

那么你们两个都有相同级别的服务包吗?

答案 1 :(得分:2)

微软在发布.NET 3.5时犯了一个相当大的罪,他们更改了WaitHandle类的公共接口,但没有更改mscorlib.dll的[AssemblyVersion],它保留在版本2.0.0.0。添加的WaitHandle方法当然很重要,很少有程序员猜到“exitContext”参数的正确值(false)。但是不改变版本让你头疼不及。

除了避免使用新的重载之外,没有好的解决方法。或强烈建议您的客户重新启用Windows Update。针对特定的.NET框架版本无法正常工作,因为它们都具有相同版本的mscorlib.dll。

答案 2 :(得分:1)

答案 3 :(得分:1)

我不认为VS2005会让你使用任何 FX2。

并且无需卸载任何内容。

重新编辑:

在这种特定情况下,您可以使用WaitOne(int, bool)版本(第2个版本为false)。

可以从文档中获取,请参阅this MSDN page并注意右上角。

但是这个方法被Fx3.5 添加到Fx2 ,所以它确实验证了你的问题和BinkDev的答案。您需要从客户那里找出具体的(最低)版本,并确保至少运行/测试。

但是,作为最佳做法,请至少让您的客户更新到Fx2SP2。我不确定这是否能解决这个问题。

答案 4 :(得分:0)

VS2005,您可以更改项目文件,并在以下部分中包含以下内容。

<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>