Tôi đang cố gắng hiểu cách trình biên dịch mã (trong trường hợp này là Drone Profiler) chạy một ứng dụng .NET khác với cách chạy trực tiếp. Lý do tôi cần biết điều này là bởi vì tôi có một vấn đề/tham nhũng rất lạ với bản cài đặt .NET của máy tính của tôi. Nó tự biểu hiện bên ngoài profiler nhưng rất lạ bên trong và nếu tôi có thể hiểu tại sao tôi có thể khắc phục vấn đề của máy tính.Làm thế nào để chạy ứng dụng C# bên trong một trình biên dịch mã khác với chạy một trình biên dịch mã bên ngoài?
Vấn đề CHỈ dường như ảnh hưởng đến các cuộc gọi đến các phương pháp System.Net.NetworkInformation (và chỉ trong phạm vi .NET 3.5 đến 2.0, nếu tôi xây dựng một cái gì đó chống lại 4 tất cả là tốt). Tôi xây dựng một ứng dụng thử nghiệm nhỏ mà chỉ làm một điều, nó gọi System.Net.NetworkInformation.IsNetworkAvailable(). Bên ngoài profiler tôi nhận được "Fatal Execution Engine Error" xuất hiện trong System.dll, và đó là tất cả thông tin mà nó cung cấp. Từ những gì tôi hiểu rằng lỗi thường là kết quả từ các cuộc gọi phương thức bản địa, có lẽ xảy ra khi System.dll cho phép một số DLL gốc thực hiện logic IsNetworkAvailable().
- Tôi đã cố gắng tìm ra sự khác biệt trong và ngoài hồ sơ bằng cách sử dụng Process Monitor, ghi lại các sự kiện từ cả hai tình huống và so sánh chúng. Cả hai bản ghi đều giống nhau cho đến một thời điểm sau khi iphlpapi.dll và winnsi.dll được gọi và ngay trước khi mã trình chạy hồ sơ gọi là dnsapi.dll và mã không phải là profiler đã bắt đầu tải các báo cáo liên quan đến sự cố. Tại thời điểm đó khi nó dường như đi sai mã profiler-chạy tạo ra 4-6 chủ đề mới và mã không profiler (crashing) chỉ tạo ra 1 hoặc 2. Tôi không biết điều đó có nghĩa là, nếu bất cứ điều gì.
Có thể cho rằng không cần thiết nền
My Windows 7 bao gồm cài đặt .NET (3,5-2,0) đã làm việc tốt cho đến khi ổ cứng của tôi bị một số tham nhũng và Checkdisk bắt đầu việc tìm kiếm cụm xấu. Tôi chụp ảnh ổ đĩa mới và mọi thứ hoạt động tốt ngoại trừ vấn đề này với .NET.
Tôi cần giải quyết sự cố này khi cài đặt lại Windows hoặc hoàn nguyên về hình ảnh dự phòng.
Dưới đây là một số trong những điều tôi đã nhìn vào:
- Tôi đã diffed các tập tin/thư mục mà dường như phù hợp nhất (những thứ NET trong môi trường Windows và Program Files) trước và đĩa hậu rắc rối và thấy không có thay đổi mà tôi không mong đợi bất kỳ (không có tham nhũng tập tin rõ ràng).
- Tôi đã phân biệt phần mềm và đăng ký hệ thống phát sinh trước và sau sự cố đĩa và không thấy thay đổi nào có vẻ liên quan.
- Tôi đã tạo tài khoản người dùng mới và xóa mọi biến môi trường trong trường hợp có liên quan đến môi trường. Không thay đổi.
- Tôi đã làm "sfc/scannow" và không tìm thấy vấn đề về tính toàn vẹn.
- Tôi đã thử "ngen update" để tạo lại mã được biên dịch trước trong trường hợp tôi đã bỏ sót một thứ có thể bị hỏng và không có gì thay đổi.
- Tôi đã xóa trình quét vi-rút của mình để xem nó có bị can thiệp hay không, không có sự khác biệt.
- Tôi đã thử chạy mã thử nghiệm trong Chế độ an toàn, cùng một sự cố.
Tôi cho rằng tôi cần phải sửa chữa cài đặt .NET của mình nhưng vì Windows 7 có .NET 3.5 - 2.0 bạn không thể chỉ chạy lại trình cài đặt .NET để làm lại.Tôi không có quyền truy cập vào các đĩa Windows để thử cài đặt lại Windows trên chính nó (máy tính có một phân vùng phục hồi nhưng nó không sử dụng được); ổ đĩa cũng sử dụng giải pháp mã hóa toàn bộ đĩa và cài đặt lại sẽ rất khó.
Tôi hoàn toàn không muốn bắt đầu từ đầu và cài đặt Windows mới, cài đặt lại hàng tá gói phần mềm, thử và ghi nhớ hàng chục tùy chỉnh liên quan đến phát triển/v.v.
Cho tất cả những điều đó ... có ai có lời khuyên hữu ích nào không? Tôi cần. NET 3.5 - 2.0 làm việc như tôi là một nhà phát triển và cần phải xây dựng và thử nghiệm chống lại nó.
Cảm ơn!
Quinxy
Tôi thực sự đánh giá cao ý nghĩ và nhận xét. Đó là một giả thuyết rất thú vị. Tôi tin rằng một phần của những gì bạn nói không thể áp dụng trong trường hợp này, cho rằng chương trình demo của tôi biểu hiện vấn đề này là một dòng (với một dạng dự án Windows Forms mặc định) gọi hàm Ping(), và mọi thứ hoạt động hoàn hảo trước vấn đề đĩa tôi có. Nhưng phần bạn đề cập về thiết bị có thể rất quan trọng, đặc biệt vì khi tôi so sánh sổ đăng ký giữa trạng thái làm việc và không hoạt động, tôi nhận thấy một số thay đổi liên quan đến màn hình hiệu suất/v.v. –
Vì vậy, tôi nghĩ rằng tôi nên xem xét kỹ hơn các thay đổi về đăng ký liên quan đến các bộ đếm hiệu năng và xem liệu những thay đổi đó có làm gì không. –