2010-05-07 11 views
17

Należy wziąć pod uwagę, że mamy aplikację .NET Winforms lub aplikację konsolową. Czy ktoś może mi powiedzieć, co stanie się krok po kroku, dopóki nie zostanie uruchomiona aplikacja WinForm lub konsola. Chciałbym znać wewnętrzne - jak EXE będzie komunikować się z Framework, jaka jest rola CLR, co dzieje się w przypadku wyjątku podczas uruchamiania samego appletit.etc ...Co stanie się, gdy użytkownik kliknie zbiór .NET (EXE)?

+6

Jako odpowiedź napowietrznych? Są na niej napisane książki o setkach stron;) – TomTom

+5

@TomTom - To nie jest sprawiedliwe! ... to są skrócone wersje. –

+2

1. Pobierz Mono. 2. Skompiluj to. 3. Uruchom go pod debuggerem. 4. Pojedynczy krok. 5. Powtórz krok 4. –

Odpowiedz

13

po dwukrotnym kliknij na .net .exe montażu:

  • kopnięć załadunku PE Windows' w
  • Jeśli jesteś na Windows> = Windows XP wykryje, że wykonywalny jest zarządzany wykonywalny i przekazuje go do .net, wywołując _CoreExeMain w mscoree.dll (_CoreDllMain, jeśli dwukrotnie klikniesz na zarządzany plik .dll). Może użyć pliku konfiguracyjnego zespołu, aby określić, którego środowiska wykonawczego należy użyć.
  • Jeśli używasz Windows < Windows XP, plik .exe zawiera mały kod źródłowy, który przejdzie do _CoreExeMain lub _CoreDllMain mscoree.dll.
  • Następnie mscoree.dll inicjuje środowisko wykonawcze .net, w zależności od konfiguracji globalnej, pliku konfiguracji zespołu, a co nie.
  • Następnie, jeśli jest to .exe, JIT skompiluje swoją metodę punktu wejścia i zacznie ją wykonywać.
+0

To jest świetne. Dziękuję za odpowiedź Jb Evain! – Sathish

1

MSCoreEE.dll (mscore Wykonanie Engine.Dll tylko jedno wystąpienie na jedno urządzenie) powiedzieć na przykład, gdy zespół .Net/exe jest podwójnym kliknięciu lub uruchomieniu OS będzie ładować ładowarka okna, które będzie inturn ładuje nagłówek PE (przenośny plik wykonywalny) [w przypadku pliku wykonywalnego win32, nagłówek PE będzie zawierał adres bootstrap (statyczny Main()), z którego będzie ładowany i wykonywał główną metodę, gdzie jak w .Net, bootstrap będzie zawierał adres MSCoreEE.Dll, który będzie obecny w C: \ Windows \ System32 \ mscoree.dll, który zostanie wykonany i załaduje środowisko wykonawcze .Net, dla którego przeznaczony był zestaw .net. Na komputerze może być zainstalowanych wiele wersji środowiska .Net, ale będzie tylko jedno wystąpienie pliku mscoreee.dll w celu załadowania określonych środowisk wykonawczych.

CLR stworzy pierwszą domenę samą aplikację i załadować montaż (jeśli zespół nie tworzyć dodatkowych domen App w kodzie)

CLR tworzy 3 Zastosowanie Domeny wewnętrznie 1. Układ App Domain .  odpowiada za ładowanie współdzielonych i domyślnych domen aplikacji, ładuje również plik mscorelib.dll do udostępnionej domeny aplikacji b.  Utwórz 3 oddzielne instancje wyjątków . Fatalny wyjątek silnika ii. Niepowodzenie przepełnienia stosu iii. Wyjątek braku pamięci (bardzo ważne, że CLR przeciwstawia wyjątek "out of memory" bcose, gdy programista myśli, że aplikacja może wyjść z pamięci i chce zapisać wyjątek do pliku logu, utworzenie wyjątku z pamięci nastąpi, ponieważ wystąpił błąd żadna pamięć nie została pozostawiona do utworzenia nowej instancji tego wyjątku, tak więc CLR uprzedza ten wyjątek do przyszłego użytku w aplikacji 2. Wspólna domena aplikacji a. Zawiera mscorlib.dll b.Inne biblioteki wspólne używane w innych domenach aplikacji c. Jednak programista nie może przesłać niestandardowych bibliotek Dll do udostępnianej domeny aplikacji, ponieważ nie można tego kontrolować poza środowiskiem CLR, w tym środowisku CLR nie można kontrolować tego, w jaki sposób jest on hostowany przez programistę, jednak możliwe jest korzystanie z niektórych interfejsów COM gdzie programista może obsługiwać standard CLR 3. Domyślna domena aplikacji a. Wszystkie pliki binarne użytkownika. EXE, Dlls ładowane tutaj

Powiązane problemy