Как использовать встроенный .NET EXE в библиотеке C #, не перестраивая файл из его байта []? - PullRequest
2 голосов
/ 14 октября 2010

У меня есть встроенный файл - xsd.exe - в моей библиотеке .NET.

Как я могу, не перестраивая встроенный файл из его byte[], использовать его?

exe запускается из командной строки, поэтому мне нужно иметь возможность делать вызовы, такие как: xsd /o:.. или что-то еще.

Я прочитал кое-что о ManifestResourceStream, но я не могу найти его в фреймворке и не знаю, как его использовать.

Есть идеи?

1 Ответ

3 голосов
/ 14 октября 2010

Если вы можете записать его во временный файл (File.WriteAllBytes), вы можете создать новый AppDomain и использовать yourAppDomain.ExecuteAssembly(...);однако, чтобы сделать это вручную из byte[], я ожидаю, что вам нужно будет загрузить его вручную с помощью Assembly.Load(byte[],...), посмотреть на loadedAssembly.EntryPoint и использовать отражение, чтобы вызвать его.Подход ExecuteAssembly гораздо проще ...

Конечно, если вы можете записать его в файл, вы также можете просто использовать Process.Start, что даже больше easy; p

Возможно, вы захотите еще раз проверить права на повторный доступ / развертывание для xsd.exe.

...