Şirketler VS willy-nilly yükseltmez. 2010SP1'i örneğin birkaç yıldır sevkiyatı yapmayan bir projede kullanıyoruz. Daha yeni bir sürüm kullanmak, IDE'ye yeni lisanslar satın almak, kullandığımız eklentilere yeni lisanslar satın almak ve elbette işlenmemiş bazı gösteri durdurma hatalarını riske atmak anlamına gelir. Biz zaten 2010 için ödenen ve 2010 olsa bizim ihtiyaçlarımız için çalışacağını biliyorum.
Kabul ediyorum bazen beni kızdırıyor; Gerçekten en yeni C ++ 11/14 desteğini, AMP desteğini ve iyileştirilmiş optimizasyonları istiyorum, ancak bu tür "yeni parlaklığa yükseltme" zihniyeti daha büyük, daha ciddi projelere iyi uymuyor.
Çoğu kurumsal varlık, Visual Studio, Office, Windows, Perforce gibi herhangi bir yazılım parçasını güncelleme konusunda çok, çok tutucu. Visual Studio 2005 kullanımı bugün oyunlar için oldukça nadir olmakla birlikte, 2008 hala oldukça yaygındır. Çok azı 2012'yi kullanıyor. 2012'nin alımının hiçbir zaman toplu olarak gerçekleşmemesi ve Visual Studio'nun bir sonraki popüler versiyonunun 2013 veya 2014 olması oldukça olası.
Örneğin, ortak meraklılara yönelik Linux dağıtımının sürümleri Redhat Enterprise veya Ubuntu LTS'nin yayın kadansıyla ne kadar hızlı güncellediğini görün. Ev kullanıcıları ve en hobbiest, yükseltmeleri ve meraklıları genellikle onlar için cazip hale getirebilir, ancak işletmeler genellikle mümkün olduğunca az değişiklik ister.
Bugün bir diğer faktör XBox 360 uyumluluğudur. Özellikle XBox uyumluluğu için bir tane gerekiyorsa, IDE / derleyicinin iki sürümünü satın almak ve yüklemek aptalca. Oyunlar için bir sonraki VS sürümünün popüler hale gelmesi, büyük ölçüde XBox One'ın devititelerinin yayın sürümleri için hangi derleyiciyi önerdiğine bağlı olacaktır (2012, lansman oyunları için kullanılan beta devitits için kullanılır, ancak 2013 post- lansman başlıkları).
Derleyiciler tarafından kullanılan çalışma zamanları açısından, bunlar kullanılan derleyici ile tam olarak eşleşmelidir. Bunun bir kısmı, C ve C ++ 'nın nasıl çalıştığından kaynaklanmaktadır. Arayüzler, cut-n-paste yapmanın sadece süslü bir yolu olan başlık dosyaları tarafından tanımlanır. A serisini düşünün:
void foo(char* name, int length);
Ve şimdi B sergisini düşünün:
void foo(int length, char* name);
Bu C işlevleri çalışma zamanlarının iki farklı sürümüne dahil edilmiş olsaydı, ikisi de sembol olmuştur, _foo
ancak birini kullanmak için derlenen kod açıkça diğeri için işe yaramaz. Uyumluluk sorunları genellikle biraz daha karmaşık ve ince olsa da, sonuç hala aynıdır: VS2005 ile derlenen kod, VS2005'ten yalnızca VS2005 çalışma zamanının nasıl çalıştığını açıklayan başlığa sahip olacaktır. VS2012, tamamen farklı bir çalışma zamanını hedefleyen tamamen farklı başlıklarla birlikte gönderilir.
Microsoft, eski sürümlerin hedeflenmesini desteklemez, çünkü bu sadece bir acı olacaktır. Çalışma zamanlarına ek olarak eski başlıkları da göndermeye devam edeceklerdi. Windows'daki iyi DLL kullanım uygulamaları, geliştiricilerin farklı çalışma zamanlarını kullanarak kütüphaneleri karıştırmasına izin verdiği için nispeten az nedeni var. VS2012'niz varsa, siz ve kütüphane birkaç kolay kurala uyduğunuz sürece VS2005 ile yapılan kütüphanelere hala bağlantı verebilirsiniz.
GNU / Linux gibi platformlar bu sorunlardan kaçınmak için biraz çaba sarf ediyor, ancak bazen çok daha derin bir düzeyde bunlardan geçiyorlar. Hala libc5'ten glibc'ye geçişi veya zamanın sık sık libstdc ++ molalarını hatırlıyorum (Linux / UNIX geliştiricilerinin yıllar boyunca C ++ konusunda nispeten soğuk kalmasının bir nedeni budur).
Windows MSVCR.DLL
, derleyicinin her sürümü kendi yerine dahil olmakla birlikte, düşük düzeyli "genel" C çalışma zamanı ile birlikte gelir MSVCRR110.DLL
. Yalnızca genel sürümü kullanmak için çaba gösterebilirsiniz, ancak Visual Studio'nun her sürümü (ve onun sürekli gelişen C ++ desteği) ile değişen C ++ destek yordamlarının çoğu dahil olmak üzere çok fazla işlevsellik eksiktir. Gerçekten sıfır bağımlılık yapan bir uygulama (kurtarma araçları, işletim sistemi araçları, güvenlik araçları vb.) Bazen bu sınıfa girmediğiniz sürece genellikle çabaya ve kayıp işlevselliğe değmez.
Kısacası, her Visual Studio'nun kendi çalışma zamanı kitaplığı vardır ve bu sürümle derlenen uygulamanın kullanması gerekir. Oyunlar genellikle en son derleyiciden daha az kullanılarak yazılır ve bu nedenle daha eski bir çalışma zamanı gerekir.