【发布时间】:2021-01-09 02:09:38
【问题描述】:
好吧,所以我对内存执行中的任何事情都很陌生。我通常只是将嵌入资源中的字节写入硬盘驱动器上的文件,但对于我为工作项目制作的程序,它无法将 exe 写入磁盘。
所以我从Load a .NET assembly from the application's resources and run It from memory, but without terminating the main/host application 获取了代码 我稍微修改了代码,我认为可以使用参数运行它,它除了崩溃之外什么都不做,除了 Windows 错误报告之外,并没有真正列出任何崩溃细节。 这是代码:
Dim ass As Assembly = Assembly.Load(My.Resources.bbinst)
Dim method As MethodInfo = ass.EntryPoint
Dim parametersArray As Object() = New Object() {"/q /SERIAL=xxx-xxx"}
If (method IsNot Nothing) Then
Dim instance As Object = ass.CreateInstance(method.Name)
method.Invoke(instance, parametersArray)
If (instance IsNot Nothing) AndAlso (instance.GetType().GetInterfaces.Contains(GetType(IDisposable))) Then
DirectCast(instance, IDisposable).Dispose()
End If
instance = Nothing
method = Nothing
ass = Nothing
Else
Throw New EntryPointNotFoundException("Entrypoint not found in the specified resource. Are you sure it is a .NET assembly?")
End If
bbinst 是嵌入为 bbinst.exe 的 exe 名称 parametersArray 是我想要运行的参数,它是从我在其他地方找到的 C# 示例转换而来的。
谁能帮我解释一下为什么程序会崩溃,然后第二次弹出错误报告,我不擅长调试。我也尝试在没有参数的情况下运行它,它也以同样的方式崩溃。
任何帮助都很棒,有时我在工作中有这些随机项目我不知道他们为什么给我哈哈
【问题讨论】:
-
哪个程序崩溃了?主机还是嵌入式?如果是前者,请从 Visual Studio 启动您的应用程序,以便附加其调试器。
-
我不确定,它不会只给出 Windows 错误报告的 .net 运行时错误。当我关闭错误窗口时,它会关闭整个程序。我不知道这是否有帮助,但在进程资源管理器/进程黑客中,它没有显示第二个 exe 正在加载/启动。我将不得不在几个小时内重做程序上的代码以将其附加到 Visual Studio 调试器。
-
为什么你必须重做代码才能通过VS运行它?如果你在那里编码,你应该只需要打开项目并按 F5。 -- 此外,即使错误对话框提供的信息不是很丰富,您仍然可以检查 Windows 事件查看器 (
eventvwr.msc) 以了解更具体的错误。查找包含Application Error或.NET Runtime Error的项目。 -
因为它在底部是一个大的代码列表,它在执行此步骤之前执行。我只是将它注释掉并在 VS 中运行它,我知道为什么我什至忘记了查看器,我明天会检查它。
-
先创建一个新项目并在那里尝试如何?这样您就可以查看代码是否有效,或者它是否与您的特定项目相关。
标签: vb.net memory resources arguments