Я пытаюсь понять, как профилировщик кода (в данном случае Drone Profiler) запускает. NET иначе, чем просто запустить его напрямую. Причина, по которой мне нужно это знать, заключается в том, что у меня очень странная проблема / повреждение с установкой .NET на моем компьютере разработчика, которая проявляется вне профилировщика, но очень странно не внутри, и если я могу понять, почему я, вероятно, могу исправить проблему с моим компьютером.
Проблема ТОЛЬКО, похоже, влияет на вызовы методов System.Net.NetworkInformation (и только в .NET 3.5–2.0, если я построю что-то против 4, все в порядке). Я создал небольшое тестовое приложение, которое делает только одно - вызывает System.Net.NetworkInformation.IsNetworkAvailable (). Вне профилировщика я получаю «Неустранимая ошибка механизма выполнения» в System.dll, и это вся информация, которую он дает. Насколько я понимаю, эта ошибка обычно возникает из-за вызовов собственных методов, которые предположительно возникают, когда System.dll позволяет некоторой собственной DLL выполнять логику IsNetworkAvailable ().
- Я попытался выяснить внутреннюю и внешнюю разницу профилировщика с помощью Process Monitor , записывая события из обеих ситуаций и сравнивая их. Оба журнала были одинаковыми до тех пор, пока не были вызваны iphlpapi.dll и winnsi.dll, и непосредственно перед тем, как запускаемый профилировщиком код под названием dnsapi.dll и код, не являющийся профилировщиком, начали загружать материалы, связанные с отчетами о сбоях. В тот момент, когда казалось, что что-то пошло не так, код запуска профилировщика создал 4-6 новых потоков, а код непрофилировщика (сбой) создал только 1 или 2. Я не знаю, что это означает, во всяком случае.
Возможно ненужный фон
Моя Windows 7 включала установку .NET (от 3.5 до 2.0), работала нормально, пока мой жесткий диск не испортился, и checkdisk не начал находить плохие кластеры. Я скопировал диск на новый, и все работает нормально, кроме одной проблемы с .NET.
Мне нужно решить эту проблему, переустановив Windows или вернувшись к резервному копированию образов.
Вот некоторые вещи, которые я изучил:
- Я сравнил файлы / каталоги, которые казались наиболее важными (файлы .NET под Windows и Program Files) до и после проблем с диском, и не обнаружил никаких изменений там, где я не ожидал (отсутствие очевидного повреждения файла).
- Я различал программное обеспечение и кусты системного реестра до и после проблем с диском и не обнаружил никаких изменений, которые казались бы важными.
- Я создал новую учетную запись пользователя и очистил все переменные среды на случай, если среда была связана. Без изменений.
- Я сделал "sfc / scannow" и не обнаружил проблем с целостностью.
- Я попробовал "ngen update" восстановить предварительно скомпилированный код на случай, если я пропустил что-то, что могло быть повреждено, и ничего не изменилось.
- Я удалил свой антивирусный сканер, чтобы посмотреть, не мешает ли он, без разницы.
- Я попытался запустить тестовый код в безопасном режиме, та же проблема сбоя.
Я предполагаю, что мне нужно восстановить мою установку .NET, но поскольку Windows 7 включала .NET 3.5–2.0, вы не можете просто повторно запустить установщик .NET, чтобы повторить его. У меня нет доступа к дискам Windows, чтобы попытаться переустановить Windows поверх себя (на компьютере есть раздел восстановления, но он непригоден для использования); Кроме того, в диске используется решение для шифрования всего диска, и повторная установка будет затруднена.
Я абсолютно не хочу начинать здесь с нуля и устанавливать новую Windows, переустанавливать десятки программных пакетов, пытаться запомнить десятки настроек, связанных с разработкой, и т. Д.
Учитывая все это ... есть ли у кого-нибудь полезный совет? Мне нужна .NET 3.5–2.0, поскольку я разработчик, и мне нужно построить и протестировать ее.
Спасибо!
Quinxy