Meiryo’s blog

やってみて詰まったことを備忘録として残すブログ

【Visual Studio】スタートアップオブジェクトにクラスが表示されずエントリポイントが変更できないときの対処

Class1を実行したいのですが
static main関数を持たせているのに
スタートアップオブジェクトに表示されず、
実行ができないという状況になりました。

どうすればいいかと色々検索した結果、下記の記事を発見
.NET Coreで複数のエントリポイントが存在するプロジェクトでエントリポイントを指定してビルドしたい

ツールからコマンドプロンプト開いて ビルドをして

実行

エントリポイントの変更ができました。

毎回これやるのはめんどくさいので
スタートアップオブジェクトに設定して
切り替えたいのですが
どうすればいいんですかねこれ・・・

【追記】

できました。

Visual Studio再起したら全部出てきたという・・・
再起したら全部出てくるということは今まではリロードがされていなかったとか
キャッシュが消せてなかったとかなんかそんな感じのことが原因のはず。
試してみました。

下記画像は名前空間を変更し、保存した後の状態です。
この状態だとまだスタートアップオブジェクトには更新が反映されていません。

プロジェクトを選択し右クリック、プロジェクトのアンロードを選択して
アンロードしたら再読み込みをする

更新が適用されました。

【さらに追記】非同期Mainの場合

非同期Mainはエントリポイントの指定ができなく、
他のMainがエントリポイントとして指定されるようです。
下記サイトの最後のほうを参考にしました。
[雑記] エントリーポイント - C# によるプログラミング入門 | ++C++; // 未確認飛行 C


今使っているプロジェクトには大量のエントリポイントがあります。
テスト用なのでエントリポイントを切り替えて実行して色々試してるのですが
こんな環境だと非同期Mainはエントリポイントとみなされず、実行されません。

他にエントリポイントを使っているプログラムが無い状態にすると
非同期Mainが使えます。 (実行したら正常に動きました。)