从Visual Studio 2008升级到Visual Studio 2013时,二进制大小增长30%

讨厌

我必须维护包含多个项目的大型旧代码库(不是我自己编写的),其中大多数都是C ++。我的第一步是将代码库从VS 2008升级到VS 2013。

两种解决方案都针对大小进行了优化(在发行版本中)。但是,二进制文件的大小现在几乎在所有二进制文件中都增加了约30%-我很难解释。

这些项目大量使用了ATL,而且我知道ATL 9已移至静态库,但是我怀疑这能否解释所有的大小差异。

任何想法:

  1. 尺寸差异的解释是什么。VS12是否由于此尺寸更改而更安全或更具有更好的性能(寻找“关键点”以出售此交换机)?

  2. 寻找方法来减小二进制文件的大小,从低挂的水果开始,到更复杂的工作。

温特穆特

在假定您静态链接MFC的情况下:

#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS

在的顶部stdafx.h,或_AFX_NO_MFC_CONTROLS_IN_DIALOGS在项目设置中添加到预处理器定义。

说明

MSVC 2010包含大量新的扩展控件(大多数控件与功能区相关,但也与a CMFCButton,其他功能相关。MSVC2008还具有一个功能部件包)。可以像以前的Windows控件一样,通过资源编辑器将这些新控件添加到对话框中。

为了使此工作,解析RC文件1的代码需要知道所有新的MFC控件类。如果动态链接MFC,这不是问题,但是如果静态链接它们,则意味着无论是否使用它们,MFC的所有闪亮的新部分都已链接到您的应用程序中因此,我的二进制大小为三倍。

很快,这变成了比Microsoft员工想象的更大的问题。静态链接MFC显然比他们预期的要普遍。解决MSVC 2010中的问题仍然很痛苦,但是在下一个版本中,引入了一种禁用新功能的机制:_AFX_NO_MFC_CONTROLS_IN_DIALOGS预处理器宏。如果在任何包含MFC头之前定义了它,则RC解析器代码将不处理新控件,并且不会引入对它们的依赖关系。请注意,这意味着无法通过资源编辑器将新控件添加到对话框中。

可以在此MSDN博客文章中找到有关问题和解决方案的更详细的技术说明

1是的,我在这里详细介绍一些细节。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Visual Studio 2008升级到2013和将.NET 3.5升级到4.5.1

从Visual Studio 2008升级到2015-我应该担心什么?

将CRM 4插件项目从Visual Studio 2005升级到Visual Studio 2010

如何防止Visual Studio提示将项目.NET 4升级到.NET 4.5

如何将Visual Studio 2015 Update 1升级到Update 2?

从Visual Studio 2015升级到2017RC的ASP.NET Core项目在每次启动时都会引发错误。

从Visual Studio 2013专业版升级到Visual Studio 2015社区

将Visual Studio 2013解决方案升级到Visual Studio 2015

Visual Studio代码二进制兼容性

Visual Studio 2013升级3没有Windows Phone项目选项?

如何将所有解决方案项目.Net Framework 4.5.1升级到4.8 Visual Studio 2019

有没有一种方法可以将Visual Studio Community 2015升级到Professional?

如何使用Visual Studio Express 2012升级nuget

如何使用Visual Studio 2017升级NuGet?

将SQL Management Studio 2008 R2升级到2012

Visual Studio代码与Visual Studio 2013共存

升级到Visual Studio 2013后无法启动/调试ASP.NET网站

如何将2013 vspackage升级到Visual Studio 2015

从ubuntu 14.04升级到Ubuntu Studio

在不升级的情况下在Visual Studio 2013中打开Visual Studio 2008解决方案

在当前的Visual Studio 2013中运行Visual Studio 2008

将项目升级到Visual Studio 2019的问题

升级到Visual Studio 2015会出现错误

Visual Studio 2017从社区升级到企业

从Visual Studio 2017社区升级到Pro

将Visual Studio安装程序升级到WiX

Git与Visual Studio 2013

从 Visual Studio 2015 切换/升级到 Visual Studio 2017

当我将Android Studio从3.1.4升级到3.2.0时会出现此问题