2010-05-07 21 views
17

.NET Winforms uygulamasına veya Konsol Uygulamasına sahip olduğumuzu düşünün. WinForm veya Konsol Uygulaması başlatılana kadar adım adım ne olacağını bana söyleyebilir misiniz? Ben iç içe biliyorum - EXE nasıl Framework ile iletişim kuracak, nasıl CLR rolünü, ne zaman uygulama başlatılırken istisna durumunda olur.etc ...Kullanıcı .NET derlemesini (EXE) tıkladığında ne olur?

+6

Stakoverflow yanıtı olarak mı? Bunun hakkında yüzlerce sayfa uzunluğunda yazılmış kitaplar var;) – TomTom

+5

@TomTom - Bu çok adil değil! ... bunlar kısaltılmış versiyonlar. –

+2

1. Mono'yu indirin. 2. Derleyin. 3. Bir hata ayıklayıcı altında başlatın. 4. Tek adım. 5. 4. adımı tekrarlayın. –

cevap

13

zaman sizi çift Bir .net .exe montaj tıklayın:

  • Windows' PE yükleyici tekmeler
  • içinde bunu yürütülebilir yönetilen bir yürütülebilir olduğunu algılar Windows> = Windows XP üzerinde konum ve iletecek olursa .net mscoree.dll'de _CoreExeMain (yönetilen bir .dll dosyasını çift tıklattıysanız _CoreDllMain) 'ı arayarak. Kullanılacak çalışma zamanını bilmek için montaj yapılandırma dosyasını kullanabilir.
  • Windows < Windows XP kullanıyorsanız, .exe dosyası, mscoree.dll dosyasının _CoreExeMain veya _CoreDllMain dosyasına atlayacak küçük bir yerel parça kodu içeriyor.
  • Daha sonra, mscoree.dll, genel yapılandırmaya, derleme yapılandırma dosyasına ve neyin yapılmadığına bağlı olarak .net çalışma zamanını başlatır.
  • Sonra bir .exe ise, JIT giriş noktası yöntemini derler ve yürütmeye başlar.
+0

Bu harika. Cevabınız için teşekkürler Jb Evain! – Sathish

1

.NET montaj/tıklanan çift ya da başlatılan .exe örneğin MSCoreEE.dll (mscore Yürütme Engine.Dll yalnızca bir örnek için bir makine) ki, işletim sistemi olan, Windows yükleyici yükleyecektir inturn yükleme PE header (Portable çalıştırılabilir) [win32 çalıştırılabilir olması durumunda, PE header, bootstrap'in (statik Main()) adresini içerecektir ve burada ana metodu yükleyecek ve çalıştıracaktır. bootstrap, çalıştırılacak olan C: \ Windows \ System32 \ mscoree.dll dosyasında bulunacak MSCoreEE.Dll adresini içerecek ve .net derlemesi için hedeflenen .Net çalışma zamanını yükleyecektir. Makinede yüklü birden çok .NET sürümü olabilir, ancak belirli çalışma zamanlarını yüklemek için yalnızca bir mscoreee.dll örneği olacaktır.

(derleme kodundaki ek uygulama alanları yaratmadı ise) montaj ilk APP domain kendisi oluşturup yükleyecektir CLR

CLR 3 Uygulama Domains oluşturur içten 1. Sistem Uygulama Alan bir . Shared Paylaşılan ve Varsayılan uygulama etki alanlarını yüklemekle yükümlüdür, ayrıca paylaşılan uygulama etki alanı b'ye mscorelib.dll yükler. Ex İstisnaların 3 ayrı örneğini oluşturun i. Önemli motor istisnası ii. Yığın taşması istisnası iii. Bellek yetersizliği dışında (çok önemli olan CLR, bellek yetersizliği istisnasını önler) geliştiricinin uygulamanın bellekten çıkabileceğini düşündüğü ve istisnayı bir günlük dosyasına yazmak istediğinde, bellek yetersizliği yaratıldığından Bu istisnanın yeni bir örneğini oluşturmak için bellek kalmadı, bu nedenle CLR bu istisnayı uygulamada ileride kullanmak üzere bu istisna önler 2. Paylaşılan Uygulama Alanı a. mscorlib.dll b içerir.Diğer uygulama alanları tarafından kullanılan diğer Yaygın kitaplıklar c. Bununla birlikte, geliştirici, özel Dll'yi CLR'nin dışından kontrol edilemediği için paylaşılan uygulama etki alanına itemez, CLR bu dll'leri barındırır ve CLR'nin kendisi bir geliştirici tarafından nasıl barındırıldığını kontrol edemez, ancak bazı COM arayüzlerini kullanarak mümkün olur geliştiricinin CLR geleneksel 3'ü barındırabileceği yer. Varsayılan Uygulama Alanı a. Tüm kullanıcı ikili dosyaları .exe’nin Dlls'i buraya yüklüyor.

İlgili konular