安装 VS2015 更新 3 VC++ 可再发行组件是否会破坏其他软件

Will installing VS2015 update 3 VC++ redistributables break other software

this post 中所建议,如果我为 VS2015 更新 3 安装 VC++ 可再发行组件,我可能会破坏使用先前更新构建的同一台 PC 上的其他软件 运行 VS2015?同样,如果我在发布时坚持使用更新 2,当有人为更新 3 安装 redists 时,这是否会在将来某个时候被破坏?

根据 New VC Runtime 14.0.24210.0 breaks MFC app built with VS 2015 Update 2 中报告的错误描述,U3 可再发行组件确实会破坏 MFC 使用 U2 或更早版本编译的应用程序,其中:

  • 在 DLL 中使用 MFC,即非静态链接,并且
  • 创建 CMFCToolBarButton 或派生类型的对象。

来自链接页面:

The problem is caused by the new BOOL member m_bIsDragged in class CMFCToolBarButton.
So memory layout differs between Update 2 and 3.
When initializing m_bIsDragged in the constructor, the (stack) memory behind the ToolBarButton is overwritten.

The problem should arise also on all classes which are derived from CMFCToolBarButton:

CMFCColorMenuButton
CMFCCustomizeMenuButton
CMFCDropDownToolbarButton
CMFCOutlookBarPaneButton
CMFCRibbonGalleryMenuButton
CMFCToolBarComboBoxButton
CMFCToolBarDateTimeCtrl
CMFCToolBarEditBoxButton
CMFCToolBarFontComboBox
CMFCToolBarFontSizeComboBox
CMFCToolBarMenuButton
CMFCToolBarMenuButtonsButton
CMFCToolBarSpinEditBoxButton
CMFCToolBarSystemMenuButton


[ EDIT ] 为了完整起见,应该指出使用 AppLocal 部署 MFC/CRT DLL 的应用程序不受影响,因为它们 not 使用其在系统范围内安装的副本。

AppLocal 部署在“使用通用 CRT 的分发软件”中的第 6 条“2015 年 9 月 11 日更新”中进行了描述,网址为Introducing the Universal CRT.