.net 迁移到VS10时的体验是什么?

.net 迁移到VS10时的体验是什么?,.net,c++,visual-studio-2010,migration,upgrade,.net,C++,Visual Studio 2010,Migration,Upgrade,我们正在考虑将一个非常大的产品升级到VS10 我听过很多关于VS10的好消息,并且对新的C++0x特性感到非常兴奋。然而,当我使用VS10时,我遇到了一个示例玩具应用程序崩溃(在VS8中没有)的情况,还有一个示例玩具应用程序似乎出现了故障 在另一个例子中,我看到,unorderd\u map抛出了一个bad\u alloc异常 我们的产品是由原生C++和.NET组成的,有几百万行代码。有人有将类似项目迁移到VS10的经验吗?这个过程痛苦吗?此举是否造成了任何倒退 我想寻找更多的轶闻证据,因为我在

我们正在考虑将一个非常大的产品升级到VS10

我听过很多关于VS10的好消息,并且对新的C++0x特性感到非常兴奋。然而,当我使用VS10时,我遇到了一个示例玩具应用程序崩溃(在VS8中没有)的情况,还有一个示例玩具应用程序似乎出现了故障

在另一个例子中,我看到,
unorderd\u map
抛出了一个
bad\u alloc
异常

我们的产品是由原生C++和.NET组成的,有几百万行代码。有人有将类似项目迁移到VS10的经验吗?这个过程痛苦吗?此举是否造成了任何倒退


<>我想寻找更多的轶闻证据,因为我在网上找到的所有评论都是好的,而且不符合我的经验。

< P>除了VC++之外,C++的VS2010最好的特点是你可以更容易地禁用智能感知。它现在是一个内置选项


您甚至可以告诉intellisense只解析和索引出现在解决方案中的文件。这样,如果你包含一个Boost头,或者只是一个非常大的代码库,它就不会尝试在VS2008和2005中索引它,并崩溃。

< P>。虽然我只迁移了一个本地的C++应用程序(100000行)到Visual Studio 2010,但是我还没有遇到任何编译器错误。p>
根据我的经验(使用此应用程序和其他更大的应用程序),升级到最新版本的VisualStudio是值得花费时间和精力的。VisualC++在每个版本中都会变得更好,因此新编译器错误的风险通常会被编译器、标准遵从性和开发环境的改进所抵消。

< P> >这两个令我恼怒的事情:

>P>托管C++项目被强制引用.NET 4框架,如果使用VS2010工具(可以在幕后操纵并保存VS2008工具,这样就可以针对.NET 3.5等)

< >我的托管C++ DLL中的输出路径有些有趣,导致它们在项目文件中有路径\\DATE而不是路径\PATH。这导致VS2010无法将DLL用作其他项目的引用


这两个项目对我来说都不是“止步秀”,但在我升级项目时却出乎意料。

我们还有一个类似的大型项目。我还没有运行一行代码计数器,但我猜很容易有一百万行。大约有200个项目——大约140个C++项目,所有使用COM/DCOM和60个奇数.NET的WiFrs/WPF等各种组合。我们有很多COM互操作和PInvoke < /P>

以前我们在VS2008上使用C++ +C++,并针对.NETFramework 3.5SP1,已经迁移到VS2010,用于C++和Test.NET 4。 总体印象:

  • 总体而言,升级并不太痛苦。它花了大约一天的时间安装和运行,然后又有一对夫妇(分散在不同的开发人员中)解决了其他遗留问题

  • 就个人而言,我觉得VS2010比2008更好,但它并不是一个主要的升级。这些好处来自语言的改进(C++0x和.NET/C#4)

  • 项目不向后兼容。你的整个团队都必须立刻跳起来

  • 它确实解决了一些恼人的问题,比如添加引用对话框,以及它用来显示项目上下文菜单的时间太长

  • IDE的崩溃比2008年少得多,但它仍然每隔几天就会崩溃一次

  • 新的VS2010附加组件非常整洁

  • “多监视器”支持不是很多“支持”。您可以在IDE外浮动许多单代码窗口,但不能将它们固定在一起。基本上,你在主屏幕上有标签,在次屏幕上有很多浮动窗口,这是相当无用的

  • ClickOnce仍然很糟糕

  • 您不必升级生成计算机。只需在其上安装VS2010并调整TFSBuildService配置,使其了解.NET4

C++
  • 请勿安装“电源命令”加载项。在使用C++项目时,它会使IDE变得不正常。(基本上,它使IDE每秒失去并获得大约100倍的焦点,这意味着您无法正确选择文本或使用键盘快捷键)

  • < > > C++项目格式从.vcProj.to vcxProj.VisualStudio项目升级向导负责大部分工作,但它确实丢失了一些构建前/构建后的步骤,我们必须手动将这些步骤放回原位

    >p>可以使用VS2010,仍然以VS2008 C++编译器为目标。我们最初是在迁移项目之后这样做的,因为我们非常谨慎。切换到VS2010编译器并不是什么大不了的事,所以一两天后我们就开始了——我们让它从STL中抛出一些断言,但这些东西在技术上是不正确的,所以我们只是修复了它们

    <> L> > P>我们在升级C++项目时所遇到的主要问题是,项目依赖项现在存储在.vcxProjm文件中,而不是存储在解决方案中。您知道如何右键单击项目,选择“依赖项”并勾选依赖项的框吗?这仍然会影响VS2010中的构建,但MSBuild不注意它。这意味着您的构建机器构建几乎肯定会中断,因为构建顺序将是错误的。您必须打开项目的属性页面,选择“框架和引用”,并将依赖项放在其中

  • 这也意味着,如果您需要在.NET DLL之前构建一个纯本机DLL(比如说因为您PInvoke它),那么您不能依赖于构建顺序!我们必须手动编辑.NET项目的.csproj文件,并在中粘贴对本机项目的“引用”。这会导致VS抛出编译器警告,但这是使其按正确顺序构建内容的唯一方法

  • C++0x中的
    auto