アイテムプロパティの[ビルドアクション]フィールドに埋め込みリソースとしてマークされた実行可能ファイルがクラスライブラリにあります。ファイルをディスクに書き込むときに、何の例外は発生しませんが、実行可能ファイルを実行しようとすると、このエラーが生成されます。ディスクへの書き込み後に実行ファイルが破損しています
「サポートされていない16ビットアプリケーションを
プログラムや機能」\ ?? \パス\へ\ exeファイル64ビット版のWindowsとの互換性がないため起動できないか、または実行できません。私はアイテムが前に破壊されていないことを確認した
:
同じエラー、(Google画像検索/ MSDNから)別のexeファイルを(非互換性が間違って綴られている、それはエラーボックスに間違って綴られている意図的なものです) DLLに埋め込まれ、多くの答えがhereとhereでディスクに書き込まれましたが、そのうちのどれも動作していませんでした。それらはすべて同じエラーを生成します。ディスクへの実行ファイルを作成するための
コード:
public static bool RunExe(string path, string arguments)
{
try
{
var psi = new ProcessStartInfo(path, arguments);
psi.CreateNoWindow = true;
psi.UseShellExecute = true;
psi.RedirectStandardOutput = false;
var process = Process.Start(psi);
process.WaitForExit();
process.Close();
}
catch
{
return false;
}
return true;
}
その他の情報重要であるかもしれない:
- 実行ファイルがクラスにある実行可能ファイルを実行するための
public static void WriteEmbeddedToDisk(string embeddedFilename, System.Type assemblyType, string diskFilepath) { using (var input = Assembly.GetAssembly(assemblyType).GetManifestResourceStream(embeddedFilename)) using (var output = File.Create(diskFilepath)) { input.CopyTo(output); } }
コード図書館A
WriteEmbeddedToDisk()
とRunExe()
はクラスライブラリBの同じクラスにあります。- 同じプロセスで別の実行可能ファイルをディスクに書き込むときに同じエラーが発生しました。この実行可能ファイルは、クラスライブラリAにもあります。
試しましたか?プラットフォームターゲットをビルド設定またはアセンブリの任意のCPUに設定しましたか? –
@TobiasTheelはい、現在あります。 – user6710080