Průvodce přenosem: MFC Scribble
Toto téma je první z několika témat, která vás seznámí s postupem upgradu projektů visual Studio C++, které byly vytvořeny ve starších verzích sady Visual Studio na Visual Studio 2017. Tato témata představují proces upgradu příkladem, počínaje velmi jednoduchým projektem a přechodem na o něco složitější. V tomto tématu probereme proces upgradu pro konkrétní projekt MFC Scribble. Je vhodný jako základní úvod do procesu upgradu pro projekty C++.
Každá verze sady Visual Studio představuje možné nekompatibility, které můžou komplikovat přesun kódu ze starší verze sady Visual Studio na novější verzi. Někdy jsou požadované změny v kódu, takže je nutné znovu zkompilovat a aktualizovat kód a někdy jsou požadované změny v souborech projektu. Když otevřete projekt vytvořený v předchozí verzi sady Visual Studio, sada Visual Studio vás automaticky vyzve, jestli chcete aktualizovat projekt nebo řešení na nejnovější verzi. Tyto nástroje obvykle upgradují pouze soubory projektu; neupravují váš zdrojový kód.
MFC Scribble
MFC Scribble je dobře známá ukázka, která je součástí mnoha různých verzí visual C++. Jedná se o jednoduchou aplikaci kreslení, která ilustruje některé základní funkce MFC. K dispozici jsou různé verze, včetně spravovaných i nativních verzí kódu. V tomto příkladu jsme našli starou verzi Scribble v nativním kódu ze sady Visual Studio 2005 a otevřeli ji v sadě Visual Studio 2017.
Před pokusem o upgrade se ujistěte, že máte nainstalovanou úlohu Windows Desktop. Otevřete instalační program sady Visual Studio (vs_installer.exe). Jedním ze způsobů, jak otevřít instalační program, je zvolit Soubor>nový projekt a posunout se do dolní části seznamu nainstalovaných šablon, dokud neuvidíte Otevřít Instalační program pro Visual Studio. Po otevření instalačního programu se zobrazí všechny dostupné úlohy. Pokud není zaškrtnuté políčko pro desktopovou úlohu Windows, vyberte ho a klikněte na tlačítko Změnit v dolní části okna.
Dále zálohujte celé řešení a veškerý jeho obsah.
Nakonec otevřete řešení v nejnovější verzi sady Visual Studio a povolte průvodci převod projektu.
Všimněte si, že příkaz devenv můžete spustit také na příkazovém řádku, a ne /Upgrade
pomocí průvodce k upgradu projektů. Viz /Upgrade (devenv.exe). To může být užitečné při automatizaci procesu upgradu pro velký počet projektů.
Krok 1. Převod souboru projektu
Když otevřete starý soubor projektu v sadě Visual Studio, sada Visual Studio nabídne převod souboru projektu na nejnovější verzi, kterou jsme přijali. Zobrazí se následující dialogové okno:
Došlo k chybě s oznámením, že cíl Itanium není k dispozici a nebude převeden.
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?
V době vytvoření předchozího projektu Scribble byla Itanium důležitou cílovou platformou. Platforma Windows už itanium nepodporuje, takže jsme se rozhodli pokračovat bez podpory platformy Itanium.
Sada Visual Studio pak zobrazila sestavu migrace se seznamem všech problémů se starým souborem projektu.
V tomto případě byly všechny problémy všechna upozornění a Visual Studio provedlo příslušné změny v souboru projektu. Velký rozdíl, pokud jde o projekt, spočívá v tom, že nástroj sestavení se změnil z vcbuild na msbuild. Tato změna byla poprvé představena v sadě Visual Studio 2010. Mezi další změny patří některé změny uspořádání posloupnosti prvků v samotném souboru projektu. Žádný z problémů nepožaduje další pozornost pro tento jednoduchý projekt.
Krok 2. Získání sestavení
Před sestavením zkontrolujeme sadu nástrojů platformy, abychom věděli, jakou verzi kompilátoru používá projektový systém. V dialogovém okně vlastností projektu v části Vlastnosti konfigurace v kategorii Obecné se podívejte na vlastnost Sady nástrojů platformy. Obsahuje verzi sady Visual Studio a číslo verze nástroje platformy, což je v tomto případě verze sady Visual Studio 2017 pro verzi nástrojů v141. Když převedete projekt, který byl původně zkompilován pomocí sady Visual Studio 2010, 2012, 2013 nebo 2015, sada nástrojů se automaticky neaktualizuje na nejnovější sadu nástrojů.
Pokud chcete přepnout na Unicode, otevřete vlastnosti projektu v části Vlastnosti konfigurace, zvolte oddíl Obecné a vyhledejte vlastnost Znaková sada . Změňte tuto možnost z použití znakové sady s více bajty tak, aby používala znakovou sadu Unicode. Účinek této změny spočívá v tom, že teď jsou definována makra _UNICODE a UNICODE a _MBCS není, což můžete ověřit v dialogovém okně vlastností v kategorii C/C++ ve vlastnosti příkazového řádku .
/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
I když se projekt Scribble nenastavil tak, aby kompiloval znaky Unicode, byl už napsaný pomocí TCHAR místo znaku, takže není potřeba nic změnit. Projekt se úspěšně sestaví pomocí znakové sady Unicode.
Teď sestavte řešení. V okně výstupu nám kompilátor řekne, že _WINNT32_WINNT není definován:
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
Toto je upozornění, nikoli chyba, a je velmi běžné při upgradu projektu visual Studio C++. Toto je makro, které definuje nejnižší verzi Windows, na které bude naše aplikace běžet. Pokud upozornění ignorujeme, přijmeme výchozí hodnotu _WIN32_WINNT_MAXVER, což znamená aktuální verzi Windows. Tabulku možných hodnot naleznete v tématu Použití hlaviček systému Windows. Můžeme ho například nastavit tak, aby běžel na libovolné verzi z Vista dál.
#define _WIN32_WINNT _WIN32_WINNT_VISTA
Pokud kód používá části rozhraní API systému Windows, které nejsou k dispozici ve verzi Systému Windows, kterou zadáte pomocí tohoto makra, měli byste vidět, že se jedná o chybu kompilátoru. V případě kódu Scribble neexistuje žádná chyba.
Krok 3. Testování a ladění
Neexistuje žádná testovací sada, takže jsme aplikaci právě spustili a otestovali její funkce ručně prostřednictvím uživatelského rozhraní. Nebyly zjištěny žádné problémy.
Krok 4. Vylepšení kódu
Teď, když jste migrovali do sady Visual Studio 2017, možná budete chtít udělat nějaké změny, abyste mohli využívat nové funkce jazyka C++. Aktuální verze kompilátoru C++ je mnohem shodnější se standardem C++, než předchozí verze, takže pokud máte v úmyslu udělat nějaké změny kódu, aby byl kód bezpečnější a přenosnější do jiných kompilátorů a operačních systémů, měli byste zvážit některá vylepšení.
Další kroky
Scribble byl malá a jednoduchá desktopová aplikace windows, a to nebylo těžké převést. Mnoho malých jednoduchých aplikací se stejně snadno převádí na novou verzi. V případě složitějších aplikací s mnoha dalšími řádky kódu, starším starším kódem, který nemusí být až k moderním technickým standardům, více projektům a knihovnám, vlastním krokům sestavení nebo složitým skriptovaným automatizovaným sestavením, bude trvat více času upgradu. Pokračujte dalším příkladem aplikace ATL/COM s názvem COM Spy.
Viz také
Přenos a upgrade: Příklady a případové studie
Další příklad: COM Spy