トップページ > プログラム > 2015年03月15日 > /mwwDFis

書き込み順位&時間帯一覧

6 位/133 ID中時間01234567891011121314151617181920212223Total
書き込み数0021000000000001000000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net

書き込みレス一覧

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で!ってことが可能だったりする。
メリットはたくさんあれど、デメリットはないと思う。
逆に、切り分けないことによるメリットは時間ぐらいだと思うけど、
実際に切り分けた場合よりも開発期間を短くできるかというと、
返って長くなってたりするんじゃないかと思う。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。