我试图了解代码分析器(在本例中为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 或恢复到映像备份来解决此问题。
以下是我调查过的一些事情:
- 我对磁盘故障前后似乎最相关的文件/目录(Windows 和程序文件下的 .NET 内容)进行了比较,并且没有看到我没有预料到的任何变化(没有明显的文件损坏)。
- 我已经区分了软件和系统注册表配置单元前后的磁盘故障,并且没有看到任何似乎相关的变化。
- 我创建了一个新用户帐户并清理了所有环境变量,以防环境相关。没变。
- 我做了“sfc /scannow”,它没有发现完整性问题。
- 我尝试“ngen update”来重新生成预编译代码,以防我错过了可能被损坏的东西并且没有任何改变。
- 我删除了我的病毒扫描程序,看看它是否有干扰,没有区别。
- 我尝试在安全模式下运行测试代码,同样的崩溃问题。
我假设我需要修复我的 .NET 安装,但由于 Windows 7 包含 .NET 3.5 - 2.0,您不能只重新运行 .NET 安装程序来重做它。我无权访问 Windows 磁盘来尝试自行重新安装 Windows(计算机有恢复分区,但无法使用);该驱动器还使用全盘加密解决方案,重新安装会很困难。
我绝对不想在这里从头开始安装新的 Windows,重新安装数十个软件包,尝试记住数十个与开发相关的自定义/等等。
鉴于这一切......有人有任何有用的建议吗?作为一名开发人员,我需要 .NET 3.5 - 2.0 工作,并且需要针对它进行构建和测试。
谢谢!
昆西