Las empresas no actualizan VS willy-nilly. Estamos utilizando 2010SP1, por ejemplo, en un proyecto que no se planea enviar durante varios años. El uso de una versión más nueva significaría comprar nuevas licencias para el IDE, la posibilidad de comprar nuevas licencias para los complementos que utilizamos y, por supuesto, arriesgar algunos errores que no se han solucionado. Sin embargo, ya pagamos por 2010 y sabemos que 2010 funcionará para nuestras necesidades.
Admito que a veces me molesta; Realmente me gustaría el más nuevo soporte de C ++ 11/14, soporte de AMP y optimizaciones mejoradas, pero ese tipo de mentalidad de "actualización a la nueva brillante" no encaja bien con proyectos más grandes y más serios.
La mayoría de las entidades corporativas son muy conservadoras sobre la actualización de cualquier software, ya sea Visual Studio, Office, Windows, Perforce, lo que sea. Si bien el uso de Visual Studio 2005 es bastante raro en los juegos actuales, 2008 sigue siendo bastante común. Muy pocos están usando 2012. Es muy posible que la adopción de 2012 nunca suceda en masa y que la próxima versión popular de Visual Studio sea 2013 o 2014.
Vea, por ejemplo, cuán rápido la distribución común de Linux orientada a los entusiastas actualiza las versiones en comparación con la cadencia de lanzamiento de Redhat Enterprise o Ubuntu LTS. Los usuarios domésticos y los aficionados pueden justificar más fácilmente las actualizaciones y los entusiastas a menudo los reclaman, pero las empresas generalmente quieren el menor cambio posible.
Otro factor hoy es la compatibilidad con XBox 360. Es tonto comprar e instalar dos versiones del IDE / compilador si necesita una en particular para la compatibilidad con XBox. La próxima versión de VS que se vuelva popular para los juegos dependerá en gran medida del compilador que el XBox One recomiende para las versiones de lanzamiento de sus devkits (2012 se usa para los devkits beta que se usan para lanzar juegos, pero 2013 podría recomendarse más adelante para el post- lanzar títulos).
En términos de los tiempos de ejecución utilizados por los compiladores, estos deben coincidir exactamente con el compilador en uso. Parte de esto se debe a cómo funcionan C y C ++. Las interfaces se definen mediante archivos de encabezado, que en realidad son solo una forma elegante de cortar y pegar. Considere la exposición A:
void foo(char* name, int length);
Y ahora considere la exposición B:
void foo(int length, char* name);
Si estas funciones C se incluyeron en dos versiones diferentes de los tiempos de ejecución, ambas serían símbolos _foopero el código compilado para usar una claramente no funcionaría para la otra. Si bien los problemas de compatibilidad generalmente son un poco más complicados y sutiles, el resultado final sigue siendo el mismo: el código compilado con VS2005 tendrá un encabezado de VS2005 que solo describe cómo funciona el tiempo de ejecución de VS2005. VS2012 se envía con encabezados completamente diferentes destinados a un tiempo de ejecución completamente diferente.
Microsoft no admite la orientación de versiones anteriores, ya que eso realmente sería un dolor. Tendrían que enviar y luego continuar manteniendo viejos encabezados además de los tiempos de ejecución. Hay relativamente pocas razones para ello, ya que las buenas prácticas de uso de DLL en Windows permiten a los desarrolladores mezclar bibliotecas utilizando diferentes tiempos de ejecución. Si tiene VS2012, aún puede vincular las bibliotecas creadas con VS2005, siempre que usted y la biblioteca sigan algunas reglas fáciles.
Las plataformas como GNU / Linux se esfuerzan por evitar estos problemas, pero los han superado, a veces a un nivel mucho más profundo. Todavía recuerdo la transición de libc5 a glibc, o las frecuentes interrupciones de libstdc ++ de la época (esta es una de las razones por las que los desarrolladores de Linux / UNIX se han mantenido relativamente fríos sobre el tema de C ++ a lo largo de los años).
Windows se envía con un tiempo de ejecución C "genérico" de bajo nivel llamado MSVCR.DLL, aunque cada versión del compilador incluye su propio reemplazo, por ejemplo MSVCRR110.DLL. Puede esforzarse por usar solo la versión genérica, pero le falta una gran cantidad de funcionalidades, incluida la mayoría de las rutinas de soporte de C ++ que cambian con cada versión de Visual Studio (y su soporte en constante evolución de C ++). En general, no vale la pena el esfuerzo y la funcionalidad perdida a menos que realmente esté tratando de hacer una aplicación de dependencia cero (las herramientas de recuperación, las herramientas del sistema operativo, las herramientas de seguridad, etc., a veces entran en esta clase).
En resumen, cada Visual Studio tiene su propia biblioteca de tiempo de ejecución, y la aplicación compilada con esa versión debe usarse. Los juegos generalmente se escribirán utilizando menos que el compilador más avanzado y, por lo tanto, requerirán un tiempo de ejecución más antiguo.