【发布时间】:2017-08-24 15:15:53
【问题描述】:
我收到了这个FileNotFoundException 并且很好奇原因是什么。
.Net Runtime
---------------------------------------------------------------------
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name=".NET Runtime" />
<EventID Qualifiers="0">1026</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2017-08-24T14:45:09.382117400Z" />
<EventRecordID>820</EventRecordID>
<Channel>Application</Channel>
<Computer>Sarah-VPC</Computer>
<Security />
</System>
- <EventData>
<Data>Application: Jobfish.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.FileLoadException at Jobfish.Program..cctor() Exception Info: System.TypeInitializationException at Jobfish.Program.Main(System.String[])</Data>
</EventData>
</Event>
这里是事件查看器常规视图的片段。
Exception Info: System.IO.FileLoadException
at Jobfish.Program..cctor()
Exception Info: System.TypeInitializationException
at Jobfish.Program.Main(System.String[])
以下是详细信息:
在我的开发桌面上一切正常。我在我的 Windows 10 64 位 VirtualBox PC 上收到此错误消息。
我最后一次在 VirtualBox 环境中检查应用程序是使用 Windows 8.1 和 Visual Studio 2015。一切都很好。我更新到 VS2017 和 Windows 10(最新),我得到了上面的异常。
我从未在Program.Main() 入口点收到我的MessageBox.Show() 调试语句。
我查看了参考资料,它们看起来不错,但话又说回来,我们正在谈论 WinForm 应用程序的入口点,所以一开始就是这样。此外,错误在于 .NetRuntime。
目标是 4.5.1,Windows 10 附带 4.7。
我尝试在Programs and Features 控制面板小程序中从Add Windows Features 添加.Net Framework v2/3.5,不行。我还尝试为 VS2012、VS2015 和 VS2017 添加 VS C++ Runtime 64 和 X86,也没有成功。我在谷歌搜索中看到了推荐。
很明显,问题是 Windows 在 main() 和 Program.Main() 之间的空间中找不到东西,这是在启动代码中。
我确实“升级”了我的应用程序,所以可能是升级问题。我刚刚尝试了一个干净的新创建的 X64 WinForm 项目并且出现了,所以有些不同。
明显的前进方式是开始一次向干净的项目添加一些东西,然后看看什么时候出现问题。在两个项目文件之间也做同样的事情。
我希望有人可能知道一些事情,因为这个问题与 VS2015/Win81 到 VS2017Win10 相关。
有没有获取更多信息的好方法?事件查看器很好,但不是很有帮助。
我尝试复制 RemoteDebuger 文件并在 Virtual Box 上启动 Remote Debugger,但 VS2017 找不到远程系统,因此出现了一些 IP/VBx 问题。我尝试安装 .Net Framework 4.5,但被告知我已经拥有它。
Google 和 SO 的帖子似乎没有太大帮助,即使在查找 ..cctor() 时,虽然具体错误是 TypeInitializationException on 'System.String[]`,这是一个非常基本的 .Net 东西,所以几乎是问题在我看来,.Net 的适用版本没有安装,我有 4.7。哎呀,正如我所说,我尝试使用离线安装程序安装 4.5.1,但显然失败了,因为 4.7 包含早期版本的 4.X。
我对 4.5.1、4.5、4.0 和 2.0 运行了步骤 outlined,结果一切都很好。我对新安装的 Windows 也有同样的期望。
想法?
【问题讨论】:
-
运行 fuslogvw.exe,如果它是
TypeInitializationException,我会怀疑由于某种原因没有加载程序集依赖项。 -
你在主构造函数中加载了什么文件?它是否仍然存在于您的新虚拟盒子环境中?
-
@GhostTW 嗯。你说的对。主要的构造函数是什么抛出的东西,必须是。这是行:
[STAThread]public static void Main(String[] args)。我的TypeInitializationException在 String[] 上,我的构造函数有String[]。这可能就是新创建的项目很好的原因。谢谢你,另一个线索。 -
@code4life 我将文件复制到虚拟 PC 中,无论是从管理员命令提示符还是通过右键单击 run-as-admin 运行都没有任何反应。我什至尝试使用 /?和命令提示符下的 /help 选项,什么都没有。任务管理器和系统托盘也没有显示任何内容,因此可能存在对文件的依赖或
fuglogvw.exe运行的东西。
标签: c# .net winforms exception filenotfoundexception