Почему существует так много различных распространяемых файлов Visual C ++?

23029
Tomalak

Каждый раз, когда я устанавливаю игру или даже OpenOffice, часть процедуры установки устанавливает еще один распространяемый Visual C ++ 2005/2008, прямо рядом с 10 другими, которые у меня уже есть в моей системе.

Почему так много разных версий (того, что кажется одним и тем же) необходимы?

19
В последнее время я не устанавливал OpenOffice на Windows, но AFAIK OO.org - чистая Java. Это тревожит! lajuette 14 лет назад 0
OO.org - это в основном C ++ с некоторыми компонентами Java ([source] (http://about.openoffice.org/index.html#history)). heavyd 14 лет назад 2
это не редкость. Хотелось бы, чтобы был способ визуально свернуть их в программах добавления / удаления, чтобы вам не приходилось видеть их все. Keltari 11 лет назад 0

3 ответа на вопрос

22
Sheng Jiang 蒋晟

Visual C++ redistributables are components shipped by app developers who use Visual C++ to write their software. By using Microsoft's well-tested and widely used code inside their apps, developers save their development cost by avoid writing commonly-used code (e.g. sin and cos math functions and handling of common user interface elements like textbox or button). Due to fragmentation in the runtime versions used by the app developers, you would see a long list of Visual C++ redistributables if you install a lot of apps. Uninstalling one Visual C++ redistributable could save you a few megabytes of disk space, but you risk breaking some apps in doing so.

Because programmers rely on Microsoft to keep the Visual C++ runtime up to date, Microsoft releases security update for the redistributables, but due to programmer demands, Visual C++ redistributables do not supersede each other and old versions are kept for compatibility. Some apps are very specific about the version of the Visual C++ dlls they require to make sure the app runs exactly as published. Their authors hold on updating to the latest runtime until they tested their app's compatibility with the new runtime. It is one way to prevent a few thousands calls from angry customers after Microsoft releases an update to the redistributable. Most apps, however, bind to the latest edition of the same major version, as it is the default behavior and the benefit from immediate and effortless security updates outweighs risks in breaking changes delivered by redistributable updates.

Microsoft also has to support a lot of Visual C++ runtimes because it has no idea which one the app developer would choose. Multiple versions of Visual C++ redistributables can be required even within the same app, for example, if an app depending on Visual C++ 2008 redistributable uses a component depending on Visual C++ 2005 redistributable, the app's developer must ship both versions of Visual C++ redistributables. On a 64 bit computer, the system could have both x86 and x64 editions of Visual C++ Redistributables installed, since Visual C++ redistributable is a commonly used component, and it is normal to have both 32bit apps and 64 bit apps (or even apps that contains both 32 bit code and 64 bit code) installed on a 64 bit system.

You can probably find the app installing a redistributable by looking for an app with the same install date as the redistributable, but there is no telling how many other apps with a later install date are depending on the same redistributable. The amount of time you spend on finding the exact dependency would most likely not worth the few megabytes you may save by uninstalling the redistributables.

Это очень хороший ответ. Разработчики также ориентированы на конкретные версии. Функция в Выпуске A не гарантируется, что она будет работать так же, как и в Выпуске B. Конечно, в действительности, базовая версия останется неизменной между выпусками, новыми функциями Feature C, которые существуют в Выпуске B и более поздних версиях, и Feature C, которые существуют только в Релиз C - это настоящая проблема, с которой сталкиваются разработчики. Поэтому они не доверяют используемой версии и компилируют свое программное обеспечение, чтобы использовать только эту версию. В этом конкретном случае возможны несколько выпусков распространяемых файлов C ++ одной и той же версии (например, февраль, март, апрель 2005 г.). Ramhound 11 лет назад 0
3
AndrejaKo

Причина в том, что они не одно и то же. Во-первых, вы должны понимать, что каждая версия MSVC ++ поставляется со своей версией библиотек времени выполнения. Есть также 32- и 64-битные версии. Также есть сервисные пакеты с обновленными версиями библиотек времени выполнения.

Если у вас есть 10 установок, можете ли вы перечислить их имена? Я не думаю, что у вас должно быть больше 4 (32 и 64 бит в 2005 году и то же самое в 2008 году). Пакеты обновлений должны заменять не обновленные версии.

Я считаю, что это правильно - есть только 4, о которых я знаю, и улучшение здесь в том, что теперь их можно устанавливать бок о бок. Требуемая сборка зависит от того, было ли приложение выполнено для статической или динамической ссылки на среду выполнения, используемую при компиляции приложения. Они могут мирно сосуществовать и относительно невелики. jtreser 14 лет назад 1
+2 больше за VS2010! Но все же, если у ОП 10, это слишком много. AndrejaKo 14 лет назад 0
Ну, по общему признанию, я не посчитал их. На моей машине на работе у меня два (2008 32bit и 64bit, оба 9.0.something). Я тоже буду считать их дома. Tomalak 14 лет назад 0
Ну на работе машины все вроде нормально. AndrejaKo 14 лет назад 0
У меня есть 12 в списке. 2005 (2) (без спецификации или версии в списке) 2008 (8) x32 / x64 9.0.21022, 9.0.30729.17, 9.0.30729.4148, 9.0.30729.6161 2010 (2) x32 / x64 10.0.40219 Darren Hall 12 лет назад 3
@DarrenHall - это нормально, когда их так много. Каждая версия отличается, и у вас есть приложения, предназначенные для этих конкретных версий. Ramhound 11 лет назад 1
1
Kamiko

There are many versions of the C++ redistributable files, unless you know precisely which program will use the file, remove even one a and every program that used it will disable permanently unless re-installed.

Those who have many programs installed will have many versions of them. Microsoft allows it to be redistributed, so rather than invent new code each time, a developer can just pop one of those in for you.

They are tiny and not big enough to worry about. Many of them are only KB, a few are MB, and better than programs that are a GB.

I know it is aggrivating to see many of them there (I have 21 of them), but leave them alone, your programs will shut down if you remove them. It would also be nice if program developers also labeled them for the individual program, but if they did you would have hundreds more. Right now programs piggyback off them, which enables programs to use coding from both old and new.

I have a degree in computer networking. I wouldn't tell you anything to do to your computer that I wouldn't do to my own