Şirketler neden hala Visual Studio'nun gerçekten eski sürümlerini kullanıyor?


9

Neden C ++ kullanıldığını anlıyorum. Bu sorunun konusu bu değil.

Oyun yüklediğimde, genellikle Steam (hemen hemen sadece Steam'i kullanıyorum) C ++ 2005 Runtime dağıtılabilir.

Sorum şu: Neden böyle? 8 yıl önce piyasaya sürülen bir çalışma zamanının hala yaygın olmasının nedeni nedir? Son zamanlarda yüklediğim oyunlardan bazıları biraz daha eski, bu yüzden birkaç yıl dev zaman varsayarsak o zaman denenmiş ve test edilmiş standart davayı yapabilirdiniz.

Oyun şirketleri neden VC ++ çalışma zamanının daha yeni bir sürümünü kullanmıyor?


1
Bu, cevap arayışında bir sorun gibi gelmiyor. Neden "tercih edildiğini" düşünüyorsunuz?
Tetrad

Sanırım sorunuz gerçekten "Şirketler neden hala Visual Studio'nun eski sürümlerini kullanıyor?" Yeniden dağıtılabilir paketin gerçekte ne olduğuna bakın .
bobobobo

Yanıtlar:


20

Ş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, _fooancak 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.


Birkaç neden daha: daha yeni derleyiciler eski platformlarla uyumluluğu bozuyor (örn. Ön güncelleme 1 VS2012 XP'yi desteklemedi ); Eski derleyiciler iyi anlaşılmış hatalara sahipken, yeni derleyiciler bilinmeyen hatalara sahipken (hala derleyicilerin
böceksiz

1

Bildiğim kadarıyla visual studio 2008, Windows Mobile ve Windows CE uygulamaları geliştirebilen son sürümdür.

CE cihazlarında çalışan uygulamaları desteklemem gerekiyor, bu yüzden VS2008 hala kullandığım şey.

Windows Masaüstü uygulamalarım için, lisansa sahip olduğumdan daha basit bir nedenden dolayı VS2010 Pro kullanıyorum. İşe yarıyor. Bunu sevdim. ve uygulamalarımı daha iyi hale getirmeyen yeni bir sürüm için neden daha fazla para ayırmam gerektiğini anlamıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.