- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
818 :デフォルトの名無しさん[]:2015/03/15(日) 02:10:38.08 ID:/mwwDFis - 相談です。
Windowsフォームアプリ作るとMainメソッド内の Application.Run(new Form1()); によってForm1が起動しています。 これを、ある条件が満たされた時はForm1ではなくて、 CUIのプログラムを起動したいと思っています。 つまり、コンソールアプリとして作ったMainメソッドです。 ところが、以下のようにしてもうまくいきませんでした。 具体的には、コマンドプロンプトの画面が現れず、 うんともすんともいいません。 //Application.Run(new Form1()); Hoge.Main(null); どなたか解決策をご存じの方はよろしくお願いします。
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
822 :デフォルトの名無しさん[]:2015/03/15(日) 02:59:16.11 ID:/mwwDFis - >>819
レスありがとうございます。 質問書き込んでから自分でも色々と調べてみましたが、 どうやらそういう手段をとるしかないようですね。 つまり、コンソールアプリは別途exe化しておくと。。。 自分の状況を詳しく書くと、 HogeCui名前空間にコンソールアプリを作って、 HogeGui名前空間にフォームアプリを作ってます。 このとき、HogeGuiはHogeCuiを静的リンクしていて、 HogeCuiのさまざまなモジュールを参照しています。 HogeCuiのMainメソッドのみHogeGuiから呼んでいないということで、 せっかくだからオプションで起動できるようにしたいな、 と思ったのが動機です。 具体的には if (Control.ModifierKeys == Keys.Alt) { Hoge.Main(null); } とかで、モディファイヤーキーで起動されたときに CUIプログラムを動かしたいなと思っていました。 しかし、静的リンクさせてexeはHogeGui.exeのみにしているので、 これをHogeGui.exeとHogeCui.exeの二種類用意しなければならないとなると、 なんか違うかな^^; HogeCuiのメインメソッドは入力は受け付けず出力のみとなっているので(HogeGuiのベンチマーク的な扱い)、 テキストボックスを適当に張り付けたForm2を用意してHogeCuiのテキストを出力するためのフォームアプリを用意する、 っていうのが一番いい解決策ですかね〜。
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
823 :デフォルトの名無しさん[]:2015/03/15(日) 03:02:34.34 ID:/mwwDFis - >>820-821
レスありがとうございます。 ちょっとこれから調べてみます。 とり急ぎお礼まで。
|
- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
835 :デフォルトの名無しさん[]:2015/03/15(日) 15:22:03.61 ID:/mwwDFis - >>818です。
みなさん色々な議論ありがとうございます。 僕がやりたかったことは>>820のキーワードを基に調査した結果 以下のページのNo.4の前半によって完全解決しました。 どうもありがとうございました。 一応、今後このログに辿り着く人のために貼っときます。 http://oshiete.goo.ne.jp/qa/6669837.html >>827 ちゃんと伝わってない気がする。 DLLはこの際関係ないよ。 静的リンクにしてわざわざ実体を一つにまとめてるのに、 オプションのためにそれを二つに分割したくない、ってこと。 HogeCuiを静的リンクすると、エントリポイントとして HogeCuiとHogeGuiのそれぞれのMainメソッドが候補として挙がってきて、 そこからHogeGuiのメインメソッドを選んでフォームアプリとしてたわけ。 でも、exeの中身確認するとHogeCuiのメインメソッドも使わないのに入ってることは 確認してて、なんかもったいないなと思ったわけさ。 今回の解決策によって実体ファイルは一つで、 それを普通に実行するかオプションで実行するかによって フォームアプリとコンソールアプリの分岐が実現できてる。 >>830 俺もその派。 どうせ使わないんだからCUIはいらないっしょ、っていう考え方もあるかとは思うけど、 GUIとCUIの切り分けの究極形がCUI:C#+GUI:XAMLなんだと思ってる(実際XAMLは経験ないんだが^^;)。 切り分けをあらかじめしっかりやっておくと、例えばCUIをC#で書いて、 あとはXAMARINでiOS用とAndroid用に変換して、GUIはそれぞれnativeで!ってことが可能だったりする。 メリットはたくさんあれど、デメリットはないと思う。 逆に、切り分けないことによるメリットは時間ぐらいだと思うけど、 実際に切り分けた場合よりも開発期間を短くできるかというと、 返って長くなってたりするんじゃないかと思う。
|