我们有使用Visual Studio 2013内置的产品,没有更新。我想将我们的构建机器更新为Visual Studio 2013 Update 3。

我们发布了包含产品二进制文件子集的产品补丁和热修复程序。我担心如果我更新构建机器并使用它们生成补丁,会发生什么。我们产品的修补安装将包含dll和exe的混合,这些dll和exe是使用不同版本的编译器构建的,并且是针对不同版本的Visual Studio C++可再发行组件构建的。

2013年更新3版本的可再发行版本是否需要使用补丁进行重新发行?

Redistrubutables的不同更新版本是否兼容,是否支持这种情况?

最佳答案

肥皂盒



在那里,您已经遇到了一个问题:我们的政策是始终将所有内容修补在一起。分发的每组(我们的)C++二进制文件都是完全独立的,我们不对任何一组C++二进制文件进行部分更新-独立于VC运行时问题,发生问题的可能性太大。

(当然,如果您的模块在C DLL API之后被“防火墙”了,那就有些不同了。)

关于问题

从我理解2010年以后的Microsoft C(++)运行时库的方式来看,它们都已安装到“System32”中,并且按主要版本进行了版本控制,因此通常一个Windows系统仅安装了一套VS2013 Redist,并且适用于所有使用默认设置的应用程序(即不会混淆 list 和WinSxS)。

这意味着所有VS2013可再发行库必须与ABI完全向前和向后兼容,因此,构建服务器是否具有与客户计算机不同的“次要”再发行版本,通常并不重要。只要所有模块都使用DLL VCruntime版本,那么任何时候任何时候都只能将一个模块加载到任何进程中,因此所有模块都应该具有相同的兼容性。

不过,我认为您应该帮自己一个忙,将(最新的)VCRedist包含在您的补丁中,以排除由仅在客户计算机上显示的旧版本所引起的任何潜在错误。

VCRedist的共享方式,无论如何,您(或其他任何人)都不能保证它的次要版本有很多保证,因此您最好确保客户端计算机至少运行最小的版本。

10-08 09:47