ベアボーンに壊れたシーン: 私はcmd内の.exe(process.startを使用)を呼び出すいくつかの必須引数を渡すプログラムをC#に用意しています。.exeファイルをビジュアルスタジオプロジェクトに統合
私は何をしようとしています:私はcmdを呼び出す必要がないようにプロジェクトにexeを含めます。
ベアボーンに壊れたシーン: 私はcmd内の.exe(process.startを使用)を呼び出すいくつかの必須引数を渡すプログラムをC#に用意しています。.exeファイルをビジュアルスタジオプロジェクトに統合
私は何をしようとしています:私はcmdを呼び出す必要がないようにプロジェクトにexeを含めます。
2つのファイルを出荷する必要がない場合は、「埋め込みリソース」(プロジェクトアイテムオプションを参照)としてプロジェクトに含めるだけで、ResourceManager.GetStreamを呼び出して書き込むことができますファイルを開き、Process.startを呼び出します。
あなたがexeファイルはもはや必要ないように(何のProcess.Start)そのexeファイルの機能を統合しない場合、あなたは、ソースコードが必要...
EDIT: 「ファイルに書き込め」でありますexeが.NETの場合は不要 - Assembly/AppDominとしてリソースストリームから直接ロードして実行できます。
exeを埋め込みリソースとして追加できます(ソリューションエクスプローラでフォルダを右クリックし、既存のアイテムを追加してプロパティを取得し、埋め込みリソースに設定するだけです)。ただし、その場所で簡単に実行できない場合があります。ディスクに保存してから実行する必要があります(これは.exeファイルをShellExecuteする必要があるという問題を解決しませんが、問題は解決します)。エンドユーザに複数のファイルを出荷する必要があるということです)。
ソースコードをお持ちの場合は、exeファイルをdllとして再パッケージ化するか、プログラムコードに直接組み込むことができます。
exeが.NETアセンブリの場合、ILMergeを使用してexeをメインアセンブリにマージすることができます。 exeファイルのコードを直接呼び出すことができます。
はい、「ファイルに書き込む」という音はとても簡単です。そうではありません。プログラムのコンテキスト*が*常に*読み書き権限を持っているどこかでファイルを書いていることを確認する必要があります。実際には、それを保証することは困難です。つまり、 "Temp"フォルダにEXEを書き込んだり、あなたのアプリケーションが壊れてしまったりします。 EXEをスタンドアロンの依存関係として配布するほうがはるかに優れています。あなたはまだそれを抽出したら "cmd"を呼ぶ必要がありますので、これは全く無意味です。 –
あなたは正しいです - ネイティブexeのために。しかし、.NETのexeファイルがあれば、ファイルに書き込む必要はありません。ストリームからAppDomain/Assemblyを介してロードするだけです。 – Yahia
AppDomain/Assemblyを使用してどのようにしますか?その '.NETで?私は初心者です。 – TarunG