🦓 C# 学習2日目 -2- 学習サンプル2本目でエントリーポイントエラー!
作成日: 2023/01/08
0

C# 学習2日目 その2 複数のエントリーポイント エラー

学習サンプル2本目でプログラムで複数のエントリポイントが定義されています
というエラーがでます。
同じ体験がC言語学習の時もあったので・・・
という問題です。
これ結構、初心者にとっては、躓きポイントだなぁと思って、ひと枠設けました。
初心者なりに試行錯誤したメモです。

私自身も学習2日目ですので、間違っているところ や、他にもあるよ、みたいなところが
ありましたら、教えていただけると幸いです。

エラー再現

学習サンプルの1本目の時はいいんです。
プロジェクトの中に、Main()関数は一つしかないから。
学習サンプルの2本目・・・コードを書き上げ実行します。
entryp_sol_3_error_2023-0108.jpg
エラー理由は

プログラムで複数のエントリ ポイントが定義されています。
エントリ ポイントを含む型を指定するには、/main でコンパイルしてください。

つまり、「Main()関数(エントリーポイント)が複数あるけど、どれが
本当のエントリーポイントなんだ」というエラーですね。
一応、ダイアログで「はい」ボタンを押すと、2本目実行はしてくれますが、
3本目も、4本目も以降ずっとMain()を使い続ける限り、こうなりそうです。
エラーを許容しながら学習進めるのって、それが癖になってしまいそうで
あまりよろしくないように思います。

対策1 サンプルごとにプロジェクトを作る

本来の想定は、これなのかどうなのかわかりませんが、
サンプルごとにプロジェクトを作れば、
1プロジェクト、1エントリーポイントになり、解決します。
ただ、学習サンプルって、短いので、結構これは大変です。
C#のVisual Studioって、ひとつひとつプロジェクト作るのは結構めんどくさいです。

対策2 スタートアップオブジェクトプロパティで実行クラスを毎回指定する

これが一番簡単かもしれません。
毎回プロジェクト作るよりは10倍良いです。
どのサンプルクラスを実行するのかクラスを指定する方法です。
指定する方法
entryp_sol_1_2023-0108.jpg
ソリューションエクスプローラープロジェクト名右クリック
メニューが開くので、メニュー「プロパティ」を選びます

entryp_sol_2_2023-0108.jpg
スタートアップオブジェクトのところをクリックすると、
プロジェクト内の記述済み(サンプル)のクラスが選べます。
そのクラスだけが実行されます。
閉じ方は、▼で、ソースコード名を選べば閉じましたが、やり方探すの苦労しました。
ひとつのプロジェクトの中に、サンプル通りに作れば、どのサンプルを実行するかは、
最初から最後まで、選択するだけの操作です。

対策3 終わったサンプルはコメントにしていく

実際多くの方は、これをするだろうなぁと思います(これも想像)。
私も最初はこれをしようと思っていました。
書いては消すという方法もありますが、学習を振り返れないので、
消すよりは、終わったサンプルはコメントにしていくのがいいと思いました。
結局、理由があって、次の方法を選びました。

対策4 (私が選んだ方法) 各サンプルを大区切りでひとつにまとめる

1個のエントリーポイント(Main())で、複数のサンプルが動くようにひとつに
ソースコードをまとめていく方法です。
どうしようもまとめられなくなったら、そこでやっと新しいプロジェクトを作る形です。
ゲーム作るようになったら、そこそこ大きいプログラムを作ると思いますので、
その練習にもちょうどいいのではないかと思いました。
ただ、プログラミングそのものを全くかじったことない方は
この方法はあまりしないほうがいいかもしれません。
(2023-01-13後日追記)各サンプルのMainの中身をClassに置き換えて、
Mainの中は各Classを実行させるだけにするのもひとつの良い方法ですね。

まとめ

考えたり、調べてみたりしたら、方法はいろいろとありました。
私は、対策4をすることにしましたが、
サンプル通りに次々こなしたいという方は、
対策2、対策3が、おすすめかなぁと思います。
(名前空間を使う方法は試してみたところうまくいかなかったため、削除しました。)

ちなみに、真の正解は、エラー内容に
/mainでコンパイルしてくださいってありますが、これだと思います。
初心者の私は、そこまでたどり着けませんでした💦


これからゲームアプリとWindowsアプリを作りたい初心者です。 ゲームアプリとWindowsアプリ、共に経験ゼロです。 これからの体験が少しでも参考になれば幸いです。 目指す事 ・C言語学習→C#学習 ・Unity (C#) の勉強 ・Unityゲーム作成 ・Windowsアプリ(C#) 作成