我已经将我的.exe文件上传到我的带有Entity Framework的SQL服务器,但是当我尝试执行我的.exe文件时,我得到以下异常:
其他信息:调用目标引发了异常。
这就是我尝试这样做的方式
mBuilder.setSubText(mSubText);
当我尝试调用异常时抛出异常,我的Main方法没有private void LoadBin_OnClick(object sender, RoutedEventArgs e)
{
byte[] bin = Database.GetByte(BinList.SelectedItem.ToString());
Assembly assembly = Assembly.Load(bin);
MethodInfo method = assembly.EntryPoint;
method.Invoke(null, null);
}
。
已激活事件持续时间持续时间线程System.Reflection.TargetInvocationException:已发生异常 由调用目标抛出。 ---> System.IO.IOException:The 句柄无效。
at System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)at System.IO .__ Error.WinIOError()at System.Console.set_Title(String value)at SimpleExternal.Program.Main()---内部异常堆栈的结束 trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object []参数,Signature sig,Boolean构造函数)at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object []参数,Object []参数)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化)
在System.Reflection.MethodBase.Invoke(Object obj,Object [] 参数)在Loader.MainWindow.LoadCheat_OnClick(对象发送者, RoutedEventArgs e)in C:\用户\布罗德\源\回购\装载机\装载机\装载机\ MainWindow.xaml.cs:线 40 9.00s
当通过string[] args
加载文件并在另一个文件中托管该过程时,它工作得很好,但是当我尝试使用程序集运行它时,我得到了错误。
答案 0 :(得分:1)
Console.set_Title可能来自Main周围的一些运行时包装器,也可能来自DLL / EXE中的代码。我真的不知道,但那并不重要。重要的是它在作为独立应用程序运行时运行。这意味着当你以另一种方式运行它时,某些东西没有准备好。
我想,只需确保加载并运行此dll / exe的当前应用程序也分配了控制台窗口。如果你不想要它,那么分配并隐藏它。否则,任何尝试使用触控控制台窗口的控制台类功能的尝试都将失败,因为,将没有控制台。您在该消息中看到的“句柄”指的是HWND,即句柄到窗口。
当然,您也可以尝试修改构建dll / exe的代码,以便不使用控制台窗口,或者之前检查是否存在控制台,或者至少尝试一下/捕获试图触摸控制台窗口的所有代码块。
例如,如果Console.WriteLine用于记录或状态报告,则可以将其更改为System.Diagnostics.Trace.WriteLine