2010-03-10 3 views
1

Здесь много сообщений об этом, я использую this code from another SO post и помещаю назначение делегата в мой метод Main(). Ни одна из других должностей напрямую не ответила на мой вопрос.как я могу встроить сборку в консольное приложение без ILMerge?

У меня есть моя третья сторона сборки вложена в качестве ресурса, но когда я запустить приложение:

  • Я получаю TypeInitializationException с внутренним из FileNotFoundException. Он пытается найти сборку в файловой системе и не работает.
  • он никогда не добраться до главного метода, где обработчик события для AssemblyResolve назначена

У меня есть две сборки рефов, которые встроены в моем Resources.resx, один инструмент третьей стороны (командная строка синтаксический анализатор) а другой - файл библиотеки, в котором находится мясо приложения.

Возможно, это невозможно с помощью консольного приложения? Кажется маловероятным, но я не вижу пути вокруг него.

Re: ILMerge и т. Д .: Я хотел бы сделать это полностью в коде без привлечения каких-либо инструментов. Причина. Я не хочу иметь исходный код в репозитории, который требует от других членов команды установки инструмента, которого они, вероятно, уже нет. Если это невозможно, ILMerge выглядит следующим лучшим вариантом.

+0

Как ILMerge меньше использует инструмент первой партии, чем C# и сама визуальная студия? –

+0

@ Крис: хорошая точка. Редактирование сейчас. Тем не менее, если я смогу это сделать без участия ILMerge, я бы предпочел сделать это именно так. Это кажется разумным. – jcollum

ответ

2

Рассмотрите возможность использования ILMerge для объединения сборок в один, а не вложения в качестве ресурса. Это сайт для загрузки для ILMerge.

Вы объединили свои сторонние сборки в консольное приложение.

+0

Ой, избили меня. Я просто добавил: «Я бы предпочел не использовать стороннего участника ...» – jcollum

+0

Предполагаю, что я должен был прочитать ссылку на другой вопрос SO :) – btlog

+0

Да, похоже, что это должно быть возможно только с несколькими строками кода , Я просто не могу понять, как запустить событие в нужное время в жизненном цикле приложения. – jcollum

1

Вы также можете ознакомиться с инструментами виртуализации приложений, такими как XenoCode. Они могут упаковывать несколько сборок (включая сам .net framework) в автономный исполняемый файл.

1

Если он установлен в смешанном режиме, он должен находиться на диске. Некоторое ограничение или еще что-то.

Смежные вопросы