| Termin | Definicja |
|---|---|
| Brak wsparcia dla aplikacji 32-bitowych w nowym .NET | Brak wsparcia dla aplikacji 32-bitowych w nowym .NET dotyczy .NET 5+ skompilowanego wyłącznie jako 64-bitowy — aplikacja wymaga wersji frameworka oznaczonej jako x86 lub przebudowania pod architekturę AnyCPU. Czym jest brak wsparcia dla aplikacji 32-bitowych w nowym .NETOkreślenie „brak wsparcia dla aplikacji 32-bitowych w nowym .NET” opisuje sytuację, w której program został przygotowany z założeniem uruchamiania w środowisku 32-bitowym, natomiast używana wersja platformy, sposób publikacji albo zainstalowane środowisko wykonawcze działa wyłącznie w trybie 64-bitowym. W praktyce nie zawsze oznacza to całkowity brak możliwości uruchomienia dowolnego programu 32-bitowego. Częściej problem wynika z niedopasowania architektury aplikacji, bibliotek, sterowników, środowiska uruchomieniowego lub ustawień projektu. W ekosystemie .NET znaczenie mają między innymi ustawienia docelowej platformy, wybrany runtime oraz sposób zbudowania aplikacji. Projekt oznaczony jako Konsekwencją błędnej konfiguracji może być komunikat o niezgodności architektury, brak możliwości załadowania biblioteki DLL albo zamknięcie programu tuż po uruchomieniu. Problem bywa mylony z awarią systemu, uszkodzeniem pliku wykonywalnego lub brakiem uprawnień, chociaż przyczyną jest wyłącznie różnica między wymaganym trybem 32-bitowym a dostępnym środowiskiem 64-bitowym. Kontekst techniczny i porównanie architektur - Brak wsparcia dla aplikacji 32-bitowych w nowym .NETAplikacja 32-bitowa korzysta z innego modelu procesu niż aplikacja 64-bitowa. Dotyczy to sposobu ładowania bibliotek, komunikacji z natywnymi komponentami oraz dostępnej przestrzeni adresowej. Program działający w trybie 32-bitowym może poprawnie korzystać z bibliotek przygotowanych dla tej samej architektury, ale nie załaduje bezpośrednio biblioteki natywnej skompilowanej wyłącznie dla środowiska 64-bitowego. Odwrotna sytuacja również może prowadzić do błędów, nawet gdy nazwy plików i wersje bibliotek wyglądają podobnie. W przypadku projektów .NET należy rozróżnić kod zarządzany od zależności natywnych. Sama aplikacja napisana w kodzie zarządzanym może być stosunkowo łatwa do uruchomienia na różnych architekturach, lecz użycie komponentu sprzętowego, starszej biblioteki, dodatku COM albo zewnętrznego sterownika może wymusić konkretny tryb pracy. Ustawienie W starszych projektach .NET Framework często spotyka się opcję Najbezpieczniejsze postępowanie polega na sprawdzeniu, czy aplikacja rzeczywiście wymaga trybu 32-bitowego, czy problem dotyczy konkretnej biblioteki oraz czy dostępna jest właściwa wersja środowiska .NET. Przebudowanie projektu na Typowe problemy i błędy - Brak wsparcia dla aplikacji 32-bitowych w nowym .NETJednym z częstszych objawów jest komunikat wskazujący, że nie można załadować pliku lub zestawu, ponieważ jego format jest nieprawidłowy. Taki błąd często oznacza próbę użycia biblioteki 32-bitowej w procesie 64-bitowym albo biblioteki 64-bitowej w procesie 32-bitowym. Sama ponowna instalacja aplikacji nie zawsze pomaga, jeśli instalator nadal dobiera niewłaściwy wariant komponentu. Innym problemem jest zainstalowanie wyłącznie 64-bitowego środowiska uruchomieniowego, gdy program wymaga wariantu 32-bitowego. W takiej sytuacji aplikacja może nie znaleźć wymaganego runtime mimo obecności nowszej wersji .NET w systemie. Numer wersji platformy nie jest jedynym kryterium zgodności, ponieważ znaczenie ma również architektura oraz rodzaj wdrożenia. Problemy mogą pojawić się także po aktualizacji systemu, zmianie komputera lub przeniesieniu programu z jednego stanowiska na inne. Wcześniej zainstalowana biblioteka, sterownik lub komponent dodatkowy mógł zapewniać zgodność bez widocznych działań użytkownika. Po aktualizacji taki składnik może zostać usunięty, zastąpiony innym wariantem albo przestać współpracować z aplikacją. Podobne objawy występują po zmianie zmiennych środowiskowych, ścieżek wyszukiwania bibliotek oraz ustawień zabezpieczeń. Do typowych symptomów należą:
Przed zmianą ustawień warto ustalić architekturę samego programu oraz każdej istotnej zależności. Pomocne może być sprawdzenie właściwości pliku wykonywalnego, konfiguracji projektu, logów uruchomieniowych i listy zainstalowanych składników .NET. Należy również unikać przypadkowego kopiowania bibliotek z innego komputera, ponieważ zgodność wersji i architektury nie wynika z samej nazwy pliku. Kiedy trzeba skorzystać z pomocy serwisu - Brak wsparcia dla aplikacji 32-bitowych w nowym .NETZgłoszenie do serwisu jest uzasadnione, gdy problem pojawił się po aktualizacji, aplikacja korzysta ze starszych bibliotek albo nie jest jasne, czy przyczyną jest architektura programu, brak runtime, uszkodzona instalacja czy zależność sprzętowa. Szczególnie pomocna może być analiza wtedy, gdy aplikacja uruchamia się tylko na jednym komputerze, działa w ograniczonym zakresie lub zgłasza błąd dotyczący biblioteki, której nie da się łatwo zidentyfikować. W serwisie można przeprowadzić sprawdzenie konfiguracji systemu, architektury procesu, obecności odpowiedniego środowiska .NET oraz zgodności używanych bibliotek. W razie potrzeby analizuje się także ustawienia publikowania, wpisy w dziennikach systemowych i zależności między aplikacją a urządzeniami podłączonymi do komputera. Pozwala to odróżnić rzeczywisty brak obsługi trybu 32-bitowego od błędnej konfiguracji, brakującego składnika lub uszkodzenia instalacji. Przed przekazaniem sprzętu warto przygotować nazwę aplikacji, dokładną treść komunikatu, moment wystąpienia problemu oraz informację o ostatniej aktualizacji systemu lub programu. Jeżeli błąd pojawia się na laptopie, w ramach zgłoszenia dostępna jest darmowa diagnoza LAPTOPA, co ułatwia ustalenie, czy konieczna jest zmiana konfiguracji .NET, ponowna instalacja właściwego środowiska, korekta ustawień aplikacji czy dalsza naprawa systemu. Nie zaleca się wymuszania trybu 64-bitowego bez sprawdzenia zależności. Taka zmiana może usunąć jeden komunikat, a jednocześnie spowodować problemy z inną biblioteką lub urządzeniem. Najpierw należy ustalić, który element wymaga architektury 32-bitowej, a dopiero później dobrać sposób wdrożenia: wariant |