2016-02-06 4 views
1

Я много часов пытался найти динамическую сборку (у меня есть доступ к сборке - это тип «Сборка»). Кроме того, у меня нет доступа к массиву байтов сборки. Я также рассмотрел StackOverflow, но этот поиск не дал успешных результатов.Сохраните динамическую сборку в файл

Для уточнения:

// the assembly (this is an example) 
Assembly asm = SomeMethod(); // returns a valid result 
// now how would I go about saving to disk? 

Можно ли сохранить сборку типа Ассамблеи?
Если да, то как я могу это сделать?

Заранее спасибо.

Для людей, комментирующих «возможный дубликат»: Это дубликат, но по уважительной причине: ответы на другие темы не работают - это попытка оживить тему с низкими качественными ответами.

This не будет работать, потому что ответ не создает «результаты», и поэтому я не могу воспроизвести решение.

AssemblyBuilder.Save() не будет работать, потому что предположительно C# «не может использовать тип AssemblyBuilder для сборки Assembly», хотя некоторые из других ответов здесь включают это как решение.

+0

Если вы считаете, что это правильный способ попросить новых ответов, предлагайте щедрость. Если вы считаете, что это новый вариант - обязательно укажите ссылку на свой вопрос и объясните, почему это не сработало для вас. –

+0

Хорошо, я добавлю награду после ее получения. – Scott

+0

На основании вопроса, с которым вы связались («сохранить динамически сгенерированную сборку»), он не похож на дубликат, поскольку вы пытаетесь сохранить сборку, сгенерированную кем-то другим (или просто загруженным кем-то другим) - которая напрямую не поддерживается (очевидно, что вы можете собирать всю информацию через отражение и воссоздавать подобную сборку, но она будет иметь разную идентичность/не совсем то же содержимое). –

ответ

2

Вы попробовали использовать Mono.Cecil project? Он предлагает множество API для инъекции IL и/или редактирования кода, а также вы можете сохранить свою сборку с ним. Я сам использовал его в проекте и AFAIK с вашего вопроса, это тоже могло помочь вам в вашей проблеме.

+0

Я пытаюсь использовать Mono.Cecil - я вижу, что AssemblyDefinition содержит метод Write (string), но мне нужно либо преобразовать Assembly в AssemblyDefinition, либо получить байты из сборки. Вы знаете какой-либо способ конвертировать Assembly в AssemblyDefinition? – Scott

+0

Действительно, я выбрал трудный путь и восстановил свою сборку, используя IL. –

+0

Вот что я делаю прямо сейчас - прокомментирую еще раз, когда проведу результаты. – Scott

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