2017-02-14 9 views
1

.NETコアを使用してWindowsで画像を開こうとするコンソールアプリケーションを構築しました。エラーが発生しても保持します。中.NET Coreのデフォルトビューアーで画像を開く

Process.Start(new ProcessStartInfo(tempFile)); 

結果:

Win32Exception:指定された実行可能ファイルは、このOSプラットフォーム用の有効なアプリケーション ではありません。

Windowsのデフォルトビューア(私の場合はWindowsフォトビューアー)で開くには何が必要ですか?今のところ、コピー・ペーストするための完全なイメージ・パスを表示することにしました。

.NET 4.6.2では使用できますが、.NetCoreApp 1.1では動作しません。私はそれをクロスプラットフォームフレンドリーな(?)にすることとは何かを知っていますが、何が...

ありがとう!

答えて

1

この動作を妨げる相違点は、.NET CoreではProcessStartInfo.UseShellExecuteがデフォルトでfalseになり、Windowsでは制御できないということです。そのため、プログラムはイメージファイルを実行可能ファイルとして起動しようとしていますが、これは不可能です。その代わりに、基本的にProcess.Startを使用して、シェルコマンドをエミュレートして、システムのデフォルトビューアでファイルを開くことができます。

Process.Start("cmd", $"/c {pathToFile}"); 

同様に、xdg-openは、(一般的に)は、Linux上で使用することができ、そしてopenはOSX上で使用することができます。

+0

これは機能します!私は "/ c"スイッチが基本的に "文字列で指定されたコマンドを実行して終了する"ことを見ています。 –

関連する問題