Hãy xem xét chúng tôi có ứng dụng .NET Winforms hoặc Ứng dụng Giao diện điều khiển. Bất cứ ai có thể cho tôi biết điều gì sẽ xảy ra từng bước cho đến khi ứng dụng WinForm hoặc Console được khởi chạy. Tôi muốn biết nội bộ - như thế nào EXE sẽ giao tiếp với Framework, vai trò của CLR, những gì xảy ra trong trường hợp ngoại lệ trong khi tung ra applicaiton chính nó.etc ...Điều gì xảy ra khi người dùng nhấp vào .NET assembly (EXE)?
Trả lời
Khi bạn kích đúp bấm vào một hội đồng .exe .net:
- Windows đá PE loader trong
- Nếu bạn đang ở trên một Windows> = Windows XP nó sẽ phát hiện rằng thực thi là một quản lý thực thi và sẽ chuyển tiếp nó tới .net bằng cách gọi _CoreExeMain trong mscoree.dll (_CoreDllMain nếu bạn nhấp đúp vào một .dll được quản lý). Nó có thể sử dụng tập tin cấu hình lắp ráp để biết thời gian chạy để sử dụng.
- Nếu bạn đang sử dụng Windows < Windows XP, tệp .exe chứa một đoạn mã gốc nhỏ sẽ chuyển đến _CoreExeMain hoặc _CoreDllMain của mscoree.dll.
- Sau đó, mscoree.dll khởi tạo thời gian chạy .net, tùy thuộc vào cấu hình chung, tệp cấu hình lắp ráp và những gì không.
- Sau đó, nếu nó là một .exe, nó sẽ JIT biên dịch phương pháp điểm nhập của nó, và bắt đầu thực hiện nó.
Điều này thật tuyệt. Cảm ơn câu trả lời của bạn Jb Evain! – Sathish
Bạn có thể muốn một cái gì đó như: Microsoft .NET internals
Hoặc vì đó không phát hành được nêu ra: Essential NET, Tập I: Các Common Language Runtime
http://www.amazon.co.uk/Essential-NET-Microsoft-Development-Paperback/dp/0201734117
Cảm ơn bạn ho. Tôi sẽ kiểm tra qua các cuốn sách – Sathish
MSCoreEE.dll (Công cụ thực thi MSCore.Dll chỉ một phiên bản cho một máy) Ví dụ: khi lắp ráp .Net/.exe được nhấp đúp hoặc khởi chạy, Hệ điều hành sẽ tải trình tải cửa sổ inturn tải tiêu đề PE (Portable executable) [trong trường hợp win32 thực thi được, tiêu đề PE sẽ chứa địa chỉ của bootstrap (static Main()) từ nơi nó sẽ tải và thực thi phương thức main, ở đâu trong .Net, bootstrap sẽ chứa địa chỉ của MSCoreEE.Dll sẽ có trong C: \ Windows \ System32 \ mscoree.dll sẽ được thực hiện và tải thời gian chạy .Net mà assembly .net được nhắm tới. Có thể có nhiều phiên bản .Net runtime được cài đặt trên máy, tuy nhiên, sẽ chỉ có một phiên bản của mscoreee.dll để tải các runtimes cụ thể.
Các CLR sẽ tạo ra miền APP đầu tiên bản thân và tải lắp ráp (nếu lắp ráp đã không tạo ra lĩnh vực ứng dụng bổ sung trong code)
Các CLR tạo 3 Application Domains nội 1. Hệ thống App miền một . chịu trách nhiệm tải các miền ứng dụng được chia sẻ và mặc định, cũng tải mscorelib.dll vào miền ứng dụng được chia sẻ b. Tạo 3 trường hợp ngoại lệ cho các trường hợp ngoại lệ i. Ngoại lệ động cơ gây tử vong ii. Ngoại lệ tràn ngăn xếp iii. Hết bộ nhớ ngoại lệ (rất quan trọng, CLR đặt trước bcose “hết bộ nhớ” khi nhà phát triển cho rằng ứng dụng có thể hết bộ nhớ và muốn ghi ngoại lệ vào một tệp nhật ký, việc tạo ra ngoại lệ bộ nhớ sẽ xảy ra vì có không còn bộ nhớ để tạo một trường hợp ngoại lệ mới, vì vậy, CLR xử lý trước ngoại lệ này để sử dụng trong tương lai trong ứng dụng 2. Tên miền ứng dụng được chia sẻ a. Có chứa mscorlib.dll b.Các thư viện phổ biến khác được sử dụng bởi các miền ứng dụng khác c. Tuy nhiên, nhà phát triển không thể đẩy Dll tùy chỉnh vào miền ứng dụng được chia sẻ vì không thể điều khiển từ bên ngoài CLR, CLR lưu trữ các dll và CLR này không thể kiểm soát cách nó được lưu trữ bởi nhà phát triển. nơi nhà phát triển có thể lưu trữ thông lệ CLR 3. Miền ứng dụng mặc định a. Tất cả các tệp nhị phân của người dùng .exe, Dll được tải tại đây
- 1. Điều gì sẽ xảy ra khi người dùng nhấn dừng trong trình duyệt web của họ?
- 2. Mọi sự kiện javascript xảy ra khi người dùng nhấp vào nút Dừng tải?
- 3. Điều gì đã xảy ra với regtlibv12?
- 4. Touchstart và Nhấp. Điều gì xảy ra dưới mui xe?
- 5. Trong Windows, điều gì sẽ xảy ra rõ ràng khi tôi nhấp đúp vào một tệp trong Windows Explorer?
- 6. Điều gì sẽ xảy ra khi .NET 4.0 tham chiếu đến một phiên bản .NET 2.0?
- 7. C# Siêu liên kết trong TextBlock: không có gì xảy ra khi tôi nhấp vào nó
- 8. Điều gì sẽ xảy ra sau khi gói bị bắt?
- 9. Điều gì sẽ xảy ra khi va chạm băm xảy ra trong khóa Từ điển?
- 10. Android - Điều gì xảy ra khi khóa ký hết hạn?
- 11. Điều gì xảy ra với lớp System.Linq.Expressions.LogicalBinaryExpression?
- 12. Điều gì sẽ xảy ra khi một luồng .NET ném một ngoại lệ?
- 13. Điều gì xảy ra khi cột tăng tự động hết?
- 14. Điều gì sẽ xảy ra khi tôi biên dịch?
- 15. Điều gì xảy ra nếu lỗi mới?
- 16. Điều gì cần ghi lại khi ngoại lệ xảy ra?
- 17. Điều gì xảy ra khi chương trình java bắt đầu?
- 18. Điều gì xảy ra khi ứng dụng .net được khởi động?
- 19. Khi xảy ra gián đoạn, điều gì xảy ra với hướng dẫn trong đường ống?
- 20. Điều gì xảy ra khi Varnish Cache đầy?
- 21. Điều gì sẽ xảy ra khi Stack và Heap Collide
- 22. Điều gì thực sự xảy ra khi gọi setCancelsTouchesInView?
- 23. Điều gì sẽ xảy ra khi mongodb hết bộ nhớ?
- 24. Điều gì sẽ xảy ra khi ném ngoại lệ C++?
- 25. Điều gì đang xảy ra khi sử dụng DISTINCT?
- 26. Điều gì đang xảy ra trong __libc_start_main?
- 27. Nâng cấp từ .NET 1.1 lên .NET 2.0, điều gì sẽ xảy ra?
- 28. Điều gì sẽ xảy ra khi bạn đóng ứng dụng bảng điều khiển C++
- 29. điều gì đã xảy ra với syscalls.h?
- 30. Điều gì đã xảy ra với NVD3?
Là câu trả lời chính xác? Có những cuốn sách viết về điều đó dài hàng trăm trang;) – TomTom
@TomTom - Đó không phải là rất công bằng! ... đó là những phiên bản rút gọn. –
1. Tải xuống Mono. 2. Biên dịch nó. 3. Bắt đầu nó dưới một trình gỡ lỗi. 4. Bước đơn. 5. Lặp lại bước 4. –