Visual Studio 2012可以与Visual Studio 2010并存安装吗?

104

如果在同一个Windows实例上同时安装了Visual Studio 2012、.NET 4和Visual Studio 2010,它们之间会相互干扰或破坏吗?


1
是的,两者都可以,甚至同时进行。我已经尝试过了。 - Eric Yin
3
Visual Studio可以并行安装,但需要注意的是,VS2012自带.NET 4.5,会覆盖掉.NET 4.0。这不是问题,除非您仍需为.NET 4.0机器进行开发。 - Vaccano
4
你仍然可以为.NET 4.0机器开发应用程序。你只需要知道,在你的VS2012机器上测试你的.NET 4.0应用程序时,你将测试一个与从未安装.NET 4.5的客户端不同版本的.NET。因此,在类似于客户使用的机器上进行测试,就可以避免出现问题。 - John Saunders
啊啊啊,终于有个提供实用测试环境的客户了!祝你好运 :P - JumpingJezza
11
认为.NET 4.5完全兼容.NET 4.0是一个错误的想法,事实并非如此。在我们的情况下,它已经破坏了我们的一些解决方案。 - Stefan Z Camilleri
15个回答

32

36
它“可以”与其他软件一起安装,这意味着安装程序将成功运行。但是,除非您想花两天时间卸载Visual Studio、.NET 4.5、修复您的.NET 4.0框架(因为4.5 beta安装会直接修改它),并逐个卸载大量的SQL Server 2012工具,否则请不要这样做。此后,您之前正常运行的4.0代码开始出现“对象引用”错误,即使代码只包含注释也是如此。 - mclark1129
8
如果您计划继续开发 .net 4.0,那么这非常非常危险。 因为您的开发机将使用 .net 4.5 二进制文件(因为 .net 4.5 是原地升级)。 调试针对 .net 4.0 的代码时,这些二进制文件中的错误修复将被“隐藏”在您身后,但是当您部署到仅运行 .net 4.0 的机器(例如 Windows XP)上时,这些错误会影响到您的用户。 有关更多详细信息,请参见此帖子:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c05a8c02-de67-47a9-b4ed-fd8b622a7e4a/ - Vaccano
2
在虚拟机中尝试一下。我可以确认Mike C所描述的问题。我以为VS2012是安全的,结果遇到了很多烦人的问题,最终不得不重新安装Windows,因为我不再信任我的机器了。 - kenchilada
2
这些问题在VS 2012 RTM中是否仍然存在? - Tim Friesen
1
不需要。安装2012时需要安装.NET 4.5 beta版本,这是安装2012存在危险的部分,而不是VS本身。安装2010和2012并存应该没有问题,尽管我会质疑是否真的有必要(考虑到现在已经发布了2015版)。 - mclark1129
显示剩余4条评论

30

.Net 4.5发布是一种原地升级。

这意味着.net 4.0的二进制文件将被.net 4.5的二进制文件所替换

微软试图通过引入“目标 .net 4.0”功能来缓解这些问题。不过,这与以前版本的 .net 目标(自 .net 2.0 起一直是并排的)非常不同。

由于它是原地升级, "目标 .net 4.0" 实际上不能进行定位。他们最好能做的就是尝试手动删除一些“特性”。他们已经这样做了(Scott Hanselman 在他的博客文章中涵盖了这个问题)。

但是不要让这使你认为你真的在使用 .net 4.0。任何由 .net 4.5 修复的错误都会在你的开发机器上得到修复,而不是针对你的 .net 4.0 用户。

因此,如果你正在开发一个“面向 .net 4.0”的应用,并且你安装了 .net 4.5,那么你就有风险了。如果你意外地使用了一个修复的 bug,则在调试时它不会失败。

当你将应用部署到仅运行 .net 4.0 的计算机上(例如 Windows XP)时,那些错误就无法为你的用户修复了。

实际上,对于那些仍需要面向 .net 4.0 的开发人员来说,那些修复的 bug 现在是“隐藏的 bug”。

最好的部分是,无论你使用 VS 2010 还是 VS 2012,一旦安装了 .net 4.5,这些 bug 都会被隐藏起来。

更多详情请查看此帖子:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c05a8c02-de67-47a9-b4ed-fd8b622a7e4a/

该帖子包含更多关于it技术方面的细节,请点击链接查看。

抱歉,但这样做掩盖了问题的关键点。只有在您依赖于开发机上的测试来告诉您应用程序何时工作时,才会出现问题。如果您可以在客户将使用的环境中进行测试(我认为大多数开发人员都处于这种情况),那么您就不会遇到这个问题。如果您有任何第二台机器可供测试,包括虚拟机器,则这不是问题。 - John Saunders
4
@JohnSaunders - 我们有一个完整的质量保证部门,他们会在我们的目标平台上进行测试。但是许多研究表明,不同类型的测试可以发现不同类型的 bug。当我调试时寻找的问题与我的 QA 团队将会发现的问题不同。此外,自动化测试无法发现我在调试时发现的所有问题。最后,编写依赖于无法修复的 bug 的功能会造成成本。当发现 bug 时,离开我的开发机器越远,成本就越高(尤其是如果我已经“完成”了该功能)。 - Vaccano
问题只存在于你依赖于在开发机器上运行的测试来告诉你应用程序何时工作的情况下。-- 你是在暗示你不在开发机器上测试你的代码吗?-- 这是一个真正的问题,特别是对于那些不知道这个问题的人来说。(而且由于微软不会公开宣布它,这包括很多开发人员。) - Vaccano
很抱歉,如果你有一个QA部门,那么我完全看不出你的问题在哪里。我无法想象有这么多.NET 4.0的错误被.NET 4.5修复,如果你恰好编写了依赖于这些错误的代码,那么它会花费你很多钱。如果你认为你会遇到这个问题,那么请在Windows XP和.NET 4.0上进行早期和经常性测试。那些永远看不到错误的开发人员才面临最大的风险。 - John Saunders
在开发机上运行“真实”的测试是一个坏主意。客户机器在许多方面都会有很大的不同。 - doug65536
显示剩余5条评论

10

我曾经被VS beta烧坏过,从来没有没有一个问题不好卸载。微软制作的软件很好,但安装程序似乎总是最后一件要处理的事情。我见过的问题是卸载不会移除组件而导致零售版本出现问题,安装程序也不能计算其他已安装的微软产品并摧毁其配置。

这个版本远在beta之前,请不要将其安装在需要完成工作的计算机上。这几乎排除了安装VS2008。当然,虚拟机是可以的。


2
我刚在论坛[http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/909b16ff-9740-4976-be06-982654588db5]上发布了一些内容,因为似乎安装程序替换了.NET Framework 4.0程序集(我以为自己疯了,但在Reflector中打开System.Core后发现System.Runtime.CompilerServices.ExtensionAttribute丢失了)。简而言之,请小心。 - Damian
@Damian:这与3.0和3.5时出现的问题相同:它们本质上都是基于2.0运行时的附加功能,但两者都随附了一个2.0服务包(可单独下载安装在2.0上),确实改变了底层的一些东西。看看4.0,情况更糟:微软只是静默地通过Windows Update 发布了一些新版本——原始的4.0.30319.1被 .225、.235和 .237替换--每个版本都修复并引入了错误或至少在特定领域中表现不同。 - springy76

7

我昨天安装了RC版本,并发现以下内容:

当运行单元测试时,它会导致VS2010冻结(可以通过使用2012或在命令行上使用mstest来运行您的单元测试来解决此问题)

它会导致VS2010无法编译C++项目,出现链接错误。即使卸载了VS2012 RC,这个问题仍然存在...因此,我强烈建议现在不要安装它。


1
我在安装了VS 2012 RC之后,在VS 2010中运行单元测试时遇到了同样的问题。为了解决这个问题,您需要从解决方案根目录中删除testimpactdata.sdf文件,并在测试设置中打开Test Impact。 - Sergey Sirotkin
2
我也遇到了你描述的测试问题。我找到的解决方案是升级到Visual Studio 2010 Service Pack 1。显然,这是2010年的问题,而不是2012年的问题,但它只是通过安装2012年版本的候选版来触发。即使在安装了VS 2012之后,您也应该能够安装服务包并解决问题。我现在不怎么使用C ++,所以无法评论是否也已经解决了这个问题。可以在此处找到VS 2010 SP1:http://www.microsoft.com/en-us/download/details.aspx?id=23691 - rbwhitaker

6

阅读所有答案,总结如下:

  • 安装VS2012后,.NET 4.5将覆盖.NET 4.0。
  • 您仍然可以使用VS2010,但它会编译为.NET 4.5(因为.NET 4.0被替换了)。
  • 危险:您不能再安全地在运行.NET 4.0的机器上部署您的项目。

5

是的,您可以这样做,但通常建议首先安装早期版本。如果您想在VS 11中打开Visual Studio 2010项目,然后再切换回去,请确保不使用VS 11的新功能。


2

32位机器上可以顺利地进行并行安装,但有时可能会出现错误。重新安装或卸载之前的安装程序后,可以进行安装。我在项目中间进行了此操作,不影响之前的工作。


2

这肯定会引起问题。

例如:

在.NET 4.0中,每当尝试在LINQ-2-Entities中保存枚举值时,你猜对了: 如果你使用的是4.0,则会出现错误; 如果你在安装了4.5的机器上工作(是的,即使程序集针对的是4.0客户端框架!),则非常成功。

因此,在使用这个没有任何逆向兼容性的新功能时,请注意。


2
它可以并排安装,但它甚至还没有测试版..!不要指望它真的能够工作!请查看我们正在遇到的this问题,以及在另一个评论中由Damian提到的this

2

我昨天做了这件事,今天卸载了它...

显然,出了些问题,因为我之前构建的一些应用程序开始出现关于“无法加载模块bla bla bla...”的奇怪错误,所以我卸载了所有东西,强制重新安装.NET Framework 4.0,现在一切都正常了!


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