Ниже приведен пример кода, который будет примерно выполнить это минус проверка ошибок любого рода. Кроме того, убедитесь, что лицензия на встроенную программу позволяет использовать этот вид.
// extracts [resource] into the the file specified by [path]
void ExtractResource(string resource, string path)
{
Stream stream = GetType().Assembly.GetManifestResourceStream(resource);
byte[] bytes = new byte[(int)stream.Length];
stream.Read(bytes, 0, bytes.Length);
File.WriteAllBytes(path, bytes);
}
string exePath = "c:\temp\embedded.exe";
ExtractResource("myProj.embedded.exe", exePath);
// run the exe...
File.Delete(exePath);
Единственная сложная часть получает правильное значение первого аргумента ExtractResource
. Он должен иметь форму «namespace.name», где пространство имен является пространством имен по умолчанию для вашего проекта (найти это в Project | Properties | Application | Default namespace). Вторая часть - это имя файла, который вам нужно будет включить в свой проект (обязательно установите для опции сборки значение «Встроенный ресурс»). Если вы поместите файл в каталог, например. Ресурсы, то это имя становится частью имени ресурса (например, «myProj.Resources.Embedded.exe»). Если у вас возникли проблемы, попробуйте открыть скомпилированный двоичный файл в Reflector и посмотреть в папке «Ресурсы». Названия, перечисленные здесь, - это имена, которые вы перешли бы на GetManifestResourceStream
.
вопрос: что вы хотите с этим "внешним исполняемым"? если просто внедрить и получить его, когда «Embedded Resource» – tofi9
И если он просто «запускает его и получает его выход», то разворачивайте его рядом. Нет необходимости в его встраивании. Кроме того, файл Flash, ваш _could_ просто развернуть его с вашей программой, если это все, что вам действительно нужно. Я подозреваю, что у вас есть еще несколько ** потребностей **, которые вы не удосужились перечислить. :) –