Встроить и ссылаться на EXE в С#

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

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


person Michael    schedule 09.11.2011    source источник
comment
Ваш вопрос не ясен. Можете ли вы разбить его на разные этапы?   -  person Oded    schedule 09.11.2011
comment
Вы пытаетесь вызвать/ссылаться на *.exe из своей программы на С#, а затем получить вывод как один *.exe. Это то, что вы пытаетесь сказать?   -  person Pawan Mishra    schedule 09.11.2011
comment
Да, Паван, пытаясь обернуть его, а затем создать вокруг него лицензионный код.   -  person Michael    schedule 09.11.2011
comment
редко вы видите такие четкие, краткие и конкретные вопросы на SO   -  person nawfal    schedule 14.05.2012


Ответы (3)


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

person Olivier Jacot-Descombes    schedule 09.11.2011
comment
Это то, что я делаю, затем вызываю object.initiateComponent() и run(), но я не вижу, чтобы он отображался. Просто моя форма окна С#. - person Michael; 09.11.2011
comment
@Michael: Вероятно, запускать ваш компонент не рекомендуется, так как это может запустить второй цикл сообщений (в зависимости от того, как работает этот компонент). Вместо этого вы должны открыть его основную форму напрямую: var frm = new component.MainForm(); фрм.Показать(); - person Olivier Jacot-Descombes; 10.11.2011
comment
У меня такая сборка asmSys = Assembly.LoadFrom(demo.exe); Тип t = asmSys.GetType(SysCompiled.Application); SysCompiled.Application sys = Activator.CreateInstance(t) as SysCompiled.Application; Но когда я вызываю sys.InitializeComponent(); пишет, что файл не найден или зависимость. Demo.exe — это автономная сборка .net exe. Не уверен, чего не хватает. - person Michael; 11.11.2011
comment
Я успешно загрузил исполняемый файл как встроенный ресурс. Но когда я использую Assembly.EntryPoint.Invoke, он запускается, но не запускает приложение, я считаю, что его путают с фактической точкой входа из-за обфускации и шифрования смарт-сборки. Тем не менее, если я использую AppDomain.ExecuteAssembly(filename), он работает, я попытался заменить его на AppDomain.ExecuteAssembly(assembly.FullName), но не смог его найти. Я чувствую, что я очень близок, но я не могу заставить его работать, так как эта сборка зашифрована. - person Michael; 11.11.2011
comment
Если у вас есть ссылка на exe, вам не придется явно загружать сборку. Он уже загружен, и вы можете использовать классы, определенные в exe. С референсом нет смысла запускать ехе! Если вы действительно хотите его запустить, то используйте подход, описанный Лириком. - person Olivier Jacot-Descombes; 13.11.2011

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

Process myProc;

// Start the process.
myProc = Process.Start("C:\path\to\yourexecutable.exe");

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

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

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

person Kiril    schedule 09.11.2011