Aracılığıyla paylaş


Taşıma Kılavuzu: MFC Scribble

Bu konu, Visual Studio'nun eski sürümlerinde oluşturulan Visual Studio C++ projeleri için Visual Studio 2017'ye yükseltme yordamını tanıtır. Bu konular, çok basit bir projeden başlayıp biraz daha karmaşık olanlara geçerek yükseltme işlemini örnek olarak tanıtır. Bu konu başlığında, belirli bir proje (MFC Karalama) için yükseltme işlemi boyunca çalışacağız. C++ projeleri için yükseltme işlemine temel bir giriş olarak uygundur.

Visual Studio'nun her sürümü, kodu Visual Studio'nun eski bir sürümünden daha yeni bir sürüme taşımayı karmaşık hale getiren olası uyumsuzluklar sağlar. Bazen gerekli değişiklikler kodunuzda yer alır, bu nedenle kodunuzu yeniden derleyip güncelleştirmeniz gerekir ve bazen de gerekli değişiklikler proje dosyalarında yapılır. Visual Studio'nun önceki bir sürümüyle oluşturulmuş bir projeyi açtığınızda, Visual Studio otomatik olarak bir projeyi veya çözümü en son sürüme güncelleştirmeniz gerekip gerekmediğini sorar. Bu araçlar genellikle yalnızca proje dosyalarını yükselter; kaynak kodunuzu değiştirmezler.

MFC Scribble

MFC Karalama, Visual C++'ın birçok farklı sürümünde yer alan iyi bilinen bir örnektir. MFC'nin bazı temel özelliklerini gösteren basit bir çizim uygulamasıdır. Hem yönetilen hem de yerel kod sürümleri dahil olmak üzere çeşitli sürümleri mevcuttur. Bu örnekte, Visual Studio 2005'teki yerel kodda Karalama'nın eski bir sürümünü bulduk ve Visual Studio 2017'de açtık.

Yükseltmeyi denemeden önce Windows Masaüstü iş yükünün yüklü olduğundan emin olun. Visual Studio yükleyicisini (vs_installer.exe) açın. Yükleyiciyi açmanın bir yolu, Dosya>Yeni Proje'yi seçmek ve Visual Studio Yükleyicisi Aç'ı görene kadar yüklü şablonlar listesinin en altına kaydırmaktır. Yükleyiciyi açtıktan sonra tüm kullanılabilir iş yüklerini görürsünüz. Windows Masaüstü iş yükü kutusu seçili değilse seçin ve pencerenin en altındaki Değiştir düğmesine tıklayın.

Ardından çözümün tamamını ve tüm içeriğini yedekleyin.

Son olarak, çözümü Visual Studio'nun en son sürümünde açın ve sihirbazın projeyi dönüştürmesine izin verin.

Projelerinizi yükseltmek için sihirbazı kullanmak /Upgrade yerine komut satırında devenv komutunu da çalıştırabileceğinizi unutmayın. Bkz. /Upgrade (devenv.exe). Bu, çok sayıda proje için yükseltme işlemini otomatikleştirmede yararlı olabilir.

1. Adım. Proje Dosyasını Dönüştürme

Visual Studio'da eski bir proje dosyasını açtığınızda, Visual Studio proje dosyasını kabul ettiğimiz en son sürüme dönüştürmeyi sunar. Aşağıdaki iletişim kutusu görüntülenir:

Review Project and Solution Changes dialog.

Itanium hedefinin kullanılabilir olmadığını ve dönüştürülmeyeceğini bildiren bir hata oluştu.

Platform 'Itanium' is missing from this project. All the configurations and their file configuration settings specific to this platform will be ignored. If you want this platform converted, please make sure you have the corresponding platform installed under '%vctargetpath%\platforms\Itanium'. Continue to convert this project without this platform?

Önceki Karalama projesi oluşturulduğu sırada Itanium önemli bir hedef platformdu. Windows platformu artık Itanium'u desteklemiyor, bu nedenle Itanium platformunu desteklemeden devam etmek için seçtik.

Visual Studio daha sonra eski proje dosyasıyla ilgili tüm sorunları listeleyen bir geçiş raporu görüntüledi.

Screenshot of the Upgrade Report.

Bu durumda, tüm sorunlar uyarılardı ve Visual Studio proje dosyasında uygun değişiklikleri yaptı. Proje açısından en büyük fark, derleme aracının vcbuild'den msbuild'e değiştirilmesidir. Bu değişiklik ilk olarak Visual Studio 2010'da kullanıma sunulmuştur. Diğer değişiklikler, proje dosyasındaki öğelerin dizisinin bazı yeniden düzenlenmesini içerir. Bu basit proje için sorunlardan hiçbiri daha fazla dikkate gerek duyulmadı.

Adım 2. Derlemeye alma

Derlemeden önce platform araç takımını denetleyeceğiz ve böylece proje sisteminin hangi derleyici sürümünü kullandığını biliyoruz. Proje özellikleri iletişim kutusundaki Yapılandırma Özellikleri'nin altındaki Genel kategorisinde Platform Araç Takımı özelliğine bakın. Visual Studio sürümünü ve platform aracı sürüm numarasını içerir; bu örnekte araçların Visual Studio 2017 sürümü için v141'dir. Başlangıçta Visual Studio 2010, 2012, 2013 veya 2015 ile derlenmiş bir projeyi dönüştürdüğünüzde, araç takımı otomatik olarak en son araç kümesine güncelleştirilmez.

Unicode'a geçiş yapmak için projenin özelliklerini açın, Yapılandırma Özellikleri'nin altında Genel bölümünü seçin ve Karakter Kümesi özelliğini bulun. Bunu Çoklu Bayt Karakter Kümesi Kullan'dan Unicode Karakter Kümesi Kullan olarak değiştirin. Bu değişikliğin etkisi, artık _UNICODE ve UNICODE makrolarının tanımlanıp _MBCS olmamasıdır; bunu Komut Satırı özelliğindeki C/C++ kategorisinin altındaki özellikler iletişim kutusunda doğrulayabilirsiniz.

/GS /analyze- /W4 /Zc:wchar_t /Zi /Gm- /Od /Fd".\Debug\vc141.pdb" /Zc:inline /fp:precise /D "_AFXDLL" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX /Zc:forScope /Gd /Oy- /MDd /Fa".\Debug\" /EHsc /nologo /Fo".\Debug\" /Fp".\Debug\Scribble.pch" /diagnostics:classic

Karalama projesi Unicode karakterlerle derlenecek şekilde ayarlanmadı, ancak char yerine TCHAR ile yazılmıştı, bu nedenle hiçbir şeyin değiştirilmesi gerekmez. Proje Unicode karakter kümesiyle başarıyla derlensin.

Şimdi çözümü derleyin. Çıktı penceresinde, derleyici bize _WINNT32_WINNT tanımlanmadığını söyler:

_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)

Bu bir uyarıdır, hata değildir ve Visual Studio C++ projesi yükseltilirken çok yaygındır. Bu, uygulamamızın çalıştırılacağı en düşük Windows sürümünü tanımlayan makrodur. Uyarıyı yoksayarsak, _WIN32_WINNT_MAXVER varsayılan değerini kabul ederiz ve bu da geçerli Windows sürümü anlamına gelir. Olası değerlerden oluşan bir tablo için bkz . Windows Üst Bilgilerini Kullanma. Örneğin, Vista'dan sonraki herhangi bir sürümde çalışacak şekilde ayarlayabiliriz.

#define _WIN32_WINNT _WIN32_WINNT_VISTA

Kod, Windows API'sinin bu makroyla belirttiğiniz Windows sürümünde bulunmayan bölümlerini kullanıyorsa, bunu derleyici hatası olarak görmeniz gerekir. Karalama kodu söz konusu olduğunda hata yoktur.

Adım 3. Test etme ve hata ayıklama

Test paketi olmadığından uygulamayı yeni başlattık, kullanıcı arabirimi aracılığıyla özelliklerini el ile test ettik. Hiçbir sorun gözlemlenmedi.

Adım 4. Kodu geliştirme

Visual Studio 2017'ye geçiş yaptığınıza göre, yeni C++ özelliklerinden yararlanmak için bazı değişiklikler yapmak isteyebilirsiniz. C++ derleyicisinin geçerli sürümü C++ standardına ve önceki sürümlere çok daha uygundur, bu nedenle kodunuzu daha güvenli ve diğer derleyicilere ve işletim sistemlerine daha taşınabilir hale getirmek için bazı kod değişiklikleri yapmayı düşünüyorsanız, bazı geliştirmeleri göz önünde bulundurmanız gerekir.

Sonraki adımlar

Karalama küçük ve basit bir Windows masaüstü uygulamasıydı ve dönüştürmek zor değildi. Birçok küçük, basit uygulama da aynı şekilde yeni sürüme dönüştürülür. Daha karmaşık uygulamalar için, daha fazla kod satırı, modern mühendislik standartlarına uygun olmayabilecek eski kodlar, birden çok proje ve kitaplık, özel derleme adımları veya karmaşık betikli otomatik derlemeler için yükseltme daha fazla zaman alır. Sonraki örnek olan COM Spy adlı ATL/COM uygulamasıyla devam edin.

Ayrıca bkz.

Taşıma ve Yükseltme: Örnekler ve Örnek Olay İncelemeleri
Sonraki Örnek: COM Spy