2017-01-07 8 views
0

私はC#内でゲームエディタとゲームを作成しています。 2つのアプリケーションがあります。ゲームエディタはWinforms/SFMLハイブリッドであり、ゲーム自体はかなり標準のProgram.csでSFMLの単純なゲームループを実行するWindowsアプリケーションです。C#アプリケーションの起動/デバッグ

エディタ内から、ゲームの実行可能ファイルを起動して、変更をプレイテストできるようにしたいと考えています。この効果は、通常の複数起動プロジェクトメソッドを使用してVisual Studio内から両方のアプリケーションを起動した場合と似ています。

  • 起動Program.csのバックグラウンドスレッドのいくつかの並べ替えで:

    は今、私はここにいくつかのオプションがあります推測しています。私はプロセスの分離を好むので、これをやりたくありません。

  • Process.Start()でパスを介して実行可能ファイルを起動します。私はこれがいつものように同じレベルのデバッグサポートを提供するかどうかはわかりません。私はこれが私が探しているものかどうかを知るのに十分なほどプロセス上のデバッグモード呼び出しで遊んでいません。
  • 私が気付いていない他の簡単な方法はありますか?

このようなことを行うための標準的な手順は何ですか?

編集:私はこれが重複していないことを説明するように要求されましたAttach debugger in C# to another process私はこの質問を以前に見てきましたが、一般的にアプリケーションのデバッグに集中していたためです。私は両方のアプリケーションを直接制御するので、ここではもっと専門的なものがあります。さらに、ここで選択されたアプローチは、そこでのいくつかの回答としてinteropに依存していません。

+0

それは、これがより異なっているか私にははっきりしていない「バックグラウンドスレッドのいくつかの並べ替えでのProgram.csを起動します。」あなたは明確にすることができますか? –

+0

解決策では、2つのプロジェクト(game_editorとgame_itself)を配置します。 game_editorリファレンスで、game_itself実行可能ファイルを追加します。 Game_Iselfelfに、ゲームを実行してGame_Editorのバックグラウンドスレッドから呼び出すことができる公開エントリポイントを作成します。あなたは「ほぼ」隔離されます。 – Graffito

+1

@Graffitoは書き込みますが、他のアセンブリ、この場合は別のappdomainのゲームを読み込みます。それからそれは同じプロセスで実行されていますが、デフォルトでは隔離されています。必要に応じて、appdomainに通信(関数呼び出し)を簡単に追加できます。 – thehennyy

答えて

0

@thehennyyは良い提案をしました。私は許容できる妥協策としてここでの分離のレベルとしてAppDomainを選択しています。ここで

は、ソリューションです:

 var playtestDomain = AppDomain.CreateDomain("playtest"); 
     var assemblyPath = typeof(actual_game.Program).Assembly.Location; 
     playtestDomain.ExecuteAssembly(assemblyPath); 
関連する問題