.NET 4.x Ошибки при запуске EXE из ресурса - C#
Формулировка задачи:
Имеется WinForms приложение (Test.exe) у которого в ресурсах "WindowsFormsApplication1.exe". Ресурс помечен как "Внедренный". Программа в ресурсах - пустой проект Winforms (только форма и кнопка без обработчика). Используется распространенный код:
При попытке запустить EXE из ресурса вываливается с ошибкой:
"TargetInvocationException" на строчке
Подскажите пожалуйста, где ошибка и как её исправить?
private void button1_Click(object sender, EventArgs e) { this.Hide(); RunInternalExe("WindowsFormsApplication1.exe"); } private static void RunInternalExe(string exeName) { //Get the current assembly Assembly assembly = Assembly.GetExecutingAssembly(); //Get the assembly's root name string rootName = assembly.GetName().Name; //Get the resource stream Stream resourceStream = assembly.GetManifestResourceStream(rootName + "." + exeName); //Verify the internal exe exists if (resourceStream == null) return; //Read the raw bytes of the resource byte[] resourcesBuffer = new byte[resourceStream.Length]; resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length); resourceStream.Close(); //Load the bytes as an assembly Assembly exeAssembly = Assembly.Load(resourcesBuffer); //Execute the assembly exeAssembly.EntryPoint.Invoke(null, null); //no parameters }
exeAssembly.EntryPoint.Invoke(null, null);
Решение задачи: «.NET 4.x Ошибки при запуске EXE из ресурса»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e) { this.Hide(); Thread t = new Thread(new ParameterizedThreadStart(RunInternalExe)); t.Start("RunCodeFromDll.exe"); //RunInternalExe("RunCodeFromDll.exe"); } static void RunInternalExe(object tempName) { string exeName = tempName.ToString(); //Get the current assembly Assembly assembly = Assembly.GetExecutingAssembly(); //Get the assembly's root name string rootName = assembly.GetName().Name; //Get the resource stream Stream resourceStream = assembly.GetManifestResourceStream(rootName + "." + exeName); //Verify the internal exe exists if (resourceStream == null) return; //Read the raw bytes of the resource byte[] resourcesBuffer = new byte[resourceStream.Length]; resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length); resourceStream.Close(); //Load the bytes as an assembly Assembly exeAssembly = Assembly.Load(resourcesBuffer); //Execute the assembly exeAssembly.EntryPoint.Invoke(null, null); //.EntryPoint.Invoke(null, null); //no parameters }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д