Встраивать и ссылаться на EXE-файл в c#

#c# #embed #exe

#c# #Внедрить #exe

Вопрос:

Я хочу создать и вызвать ссылку на скомпилированный exe-файл .net в программе на c # и создать его из моего C # при выводе одного .exe.

Возможно ли это или я зря трачу свое время?

Комментарии:

1. Ваш вопрос неясен. Можете ли вы разбить это на разные этапы?

2. Вы пытаетесь вызвать / сослаться на *.exe из вашей программы на C #, а затем получить выходные данные в виде одного *.exe. Это то, что вы пытаетесь сказать?

3. Да, Паван, пытаюсь обернуть его, а затем создать лицензионный код вокруг него.

4. редко вы видите такие четкие, сжатые и по существу вопросы на SO

Ответ №1:

Я не уверен, что это то, что вам нужно, но вы можете ссылаться на любой exe-файл dotnet так же, как вы ссылались бы на dll. Целевая платформа (x86, x64) должна быть такой же, если она установлена в указанном exe-файле.

Комментарии:

1. Вот что я делаю, затем вызываю object.initiateComponent() и run(), но я не вижу, чтобы он отображался. Просто моя форма окна c #.

2. @Michael: Вероятно, «запускать» ваш компонент не очень хорошая идея, поскольку это может запустить второй цикл обмена сообщениями (в зависимости от того, как работает этот компонент). Вместо этого вы должны напрямую открыть его основную форму: var frm = new component.MainForm(); frm.Show();

3. У меня есть такая большая сборка, как MSSYS = Assembly. Загрузить из («demo.exe «); Введите t = asmSys. Введите («Скомпилирован системно. Приложение»); скомпилировано системно. Система приложения = активатор. CreateInstance(t) создается как скомпилированный системой. Приложение; Но когда я вызываю sys. Инициализировать компонент (); он сообщает, что файл не найден или зависимость. Demo.exe представляет собой автономную сборку .net exe. Не уверен, чего не хватает.

4. Я успешно загрузил EXE-файл байтом как встроенный ресурс. Но когда я собираю. Точка входа. При вызове он запускается, но не запускает приложение, я полагаю, что его путают с фактической точкой входа из-за запутывания и шифрования smart assembly. И все же, если я использую AppDomain. ExecuteAssembly(«filename») это работает, я попытался заменить это на AppDomain. Выполнить сборку (assembly. Полное имя), но он не может его найти. Я чувствую, что я очень близок к этому, но я не могу заставить его работать, поскольку эта сборка зашифрована.

5. Если у вас есть ссылка на exe-файл, вам не придется загружать сборку явно. Он уже загружен, и вы можете использовать классы, определенные в exe-файле. Со ссылкой нет смысла запускать exe-файл! Если вы действительно хотите его запустить, то используйте подход, описанный Lirik.

Ответ №2:

Возможно, вы ищете Process.Start :

 Process myProc;

// Start the process.
myProc = Process.Start("C:pathtoyourexecutable.exe");

//The process does something.
//...

// Stop the process.
myProc.CloseMainWindow();
  

Однако я не следую части «встраивания». Что вы пытаетесь внедрить? Что означает «вывод одного exe-файла»?

Ответ №3: