从资源调用ffprobe:错误的IL格式

时间:2016-06-18 12:57:14

标签: c# .net visual-studio .net-assembly ffprobe

我正在尝试从Visual Studio中的资源调用ffprobe.exe文件。我在SO上找到this回答并尝试将其应用于ffprobe。但我无法将字节加载到程序集。但是我的代码抛出System.BadImageFormatException: Bad IL Format

我用Google搜索错误消息,发现它通常表明二进制文件已损坏。我确保加载的字节与我的资源中的ffprobe.exe文件的字节相同,如this回答所示。我将字节写入文件,然后使用comp命令将其与原始文件进行比较。 通过命令行调用ffprobe.exe文件时,它可以正常工作。所以我确信它没有腐败。

以下是我的尝试:

object ob = Properties.Resources.ffprobe;
var ffprobeBytes = (byte[])ob;      // ffprobeBytes is identical to ffprobe.exe in resources
var ffprobeAssembly = Assembly.Load(ffprobeBytes);     // this line throws the Exception

var ffprobeEntry = ffprobeAssembly.EntryPoint;
var ffProbeObject = ffprobeAssembly.CreateInstance(ffprobeEntry.Name);
string[] parameters = { filePath, "=show_streams", "-print_format xml", "-loglevel fatal" };
var result = ffprobeEntry.Invoke(ffProbeObject, parameters)

资源文件的BuildActionEmbedded ResourceCopy to output directory设置为Copy always

有没有人知道这个例外的原因是什么?

0 个答案:

没有答案