• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kilka funkcji main w jednym projekcie

Object Storage Arubacloud
0 głosów
521 wizyt
pytanie zadane 14 grudnia 2022 w C# przez zig Nowicjusz (160 p.)
Jak w vscode posiadać kilka programów C# z funkcją main w jednym projekcie i uruchamiać je osobno? Na przykład w Javie czy Kotlinie mogę skompilować każdy program main1, main2 osobno. W C# muszę utworzyć nowy projekt do każdego Program.cs. Nie chcę kasować swoich napisanych programów i nie chce mi się za każdym razem do małego programu z tutorialu tworzyć nowego projektu. Jest na to jakieś rozwiązanie?

https://stackoverflow.com/questions/11551412/multiple-main-functions

1 odpowiedź

0 głosów
odpowiedź 14 grudnia 2022 przez Wiciorny Ekspert (270,190 p.)

Możesz mieć kilka metod w projekcie i określić "start-up" main - który ma być głównym plikiem uruchomieniowym na daną chwilę.
https://rakshitpai.com/2021/01/02/setting-the-startup-class-in-visual-studio-code/
https://www.youtube.com/watch?v=x9451qbdXFQ&ab_channel=InterviewPoint
Konfiguracje możesz  ustawić w plikach https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/

 Na przykład w Javie czy Kotlinie mogę skompilować każdy program main1, main2 osobno

i tutaj też kompilować możesz osobno, z tym,że kompilacja to nie uruchomienie. W Javie nie uruchomisz na raz kilku method main, chyba że mowa o uruchamianiu w każdym osobnym wątku
Nadal jednak jeden proces główny zarządzający maszyną wirtualną będzie tworzył podrzędne czy to wątki czy procesy 

komentarz 14 grudnia 2022 przez zig Nowicjusz (160 p.)
W Javie każda klasa wygeneruje plik .class, zanim zostanie skompilowana do pliku JAR lub innego formatu binarnego używanego do jej wdrożenia. Dzięki temu plik wykonywalny Java może uruchamiać pojedynczą klasę, gdy zawiera ona główną metodę. Niestety, najmniejszym formatem binarnym uruchamianej aplikacji C# jest plik .exe. Pojedynczy projekt wykonywalny wygeneruje tylko jeden plik .exe, co oznacza, że ​​każdy projekt może mieć tylko jeden plik z metodą Main.

To, co mogę zrobić, to utworzyć metodę Main w swojej klasie i zmienić nazwę oryginału metody Main na Main2 lub coś w tym stylu, a następnie uruchom projekt, aby zobaczyć wyniki. Czyli to jednak nie zadziała jak w Javie i innych językach.
komentarz 14 grudnia 2022 przez Wiciorny Ekspert (270,190 p.)

W Javie każda klasa wygeneruje plik .class, zanim zostanie skompilowana do pliku JAR lub innego formatu binarnego używanego do jej wdrożenia. 

Tak ale w procesie dalej jednej kompilacji, a napisałeś "kompilowana każda osobno, chyba że ręcznie tworzysz  kompilacje każdej klasy osobno, dalej to jest otwieranie 1 klasy -> cały czas w 1 procesie", gdyż każda główna metoda to osobne uruchomienie procesu JVM.

Ale z poziomu projektu możesz wskazać która klasa ma być uruchomieniową, nie bardzo kumam co chcesz osiągnąć bo dalej nawet jeśli masz Jave to i tak uruchomić możesz na 1 proces 1  program uruchomieniowy, i tutaj w VSC tak samo- > wskazujesz aktualnie uruchomieniową klasę nie możesz w 1 procesie uruchomić wszystkiego i tu i tu.

Jeszcze mówisz o pakowaniu, to inna rzecz my mówimy o uruchamianiu jakie chcesz uzyskać,  EXE-> to jest JAR ... więc jarke jak uruchamiasz to całą w Javie, natomiast u Ciebie będzie to standardowe single
 exe https://stackoverflow.com/questions/553143/compiling-executing-a-c-sharp-source-file-in-command-prompt
każdy single exe możesz robić jako single class  i uruchamiać jako single exe. 

Jak nie potrafisz tego w VSC, lub narzędzie tego nie udostępnia to zmień narzędzie i rób to manualnie tak jak dla Javy z plików class 

komentarz 14 grudnia 2022 przez zig Nowicjusz (160 p.)
Tyle to ja wiem, że jak mam kilka programów Program.cs, Program1.cs, Program2.cs z główną metodą Main, to muszę w pozostałych programach zakomentować komentarzem metodę Main, żeby uruchomić dany program. Twój sposób w sumie dużo nie zmienia, ponieważ muszę za każdym razem tam klikać i wybierać sobie który program będzie tym głównym.

W Javie przecież mogę uruchomić każdy program z metodą Main, byle tylko inna nazwa była programu. Zobacz sobie w Intellij jak to działa, w C# tak nie jest.
komentarz 14 grudnia 2022 przez Wiciorny Ekspert (270,190 p.)
w C# tu tez możesz uruchomić każdy program osobno jako metodę main... to że tego nie możes w VSC to nie znaczy ze w innym IDE zrobisz, w VSC javy tez nie odpalisz, mówimy o tym " co można zrobić, a co nie", a nie o tym co "pozwala ide, albo nie" bo to jest kwestia tylko IDE a nie samej specyfikacji.

W javie każda KLASA MAIN to osobny program... bo osobny proces, więc też "NAZWA JEST INNA"
Skorzystaj z innego IDE moze https://www.jetbrains.com/rider/
albo
https://www.jetbrains.com/resharper-cpp/promo/?source=google&medium=cpc&campaign=12690210912&term=visual%20c%2B%2B&content=512468795943&gclid=CjwKCAiAheacBhB8EiwAItVO2_zOt3upzH5JV40Wohij-N62IP_861BMfZLxfmbbiULVgy_9fx9YgRoCgJ0QAvD_BwE
komentarz 14 grudnia 2022 przez zig Nowicjusz (160 p.)
Dlatego ja zapytałem o vscode. Jak tworzysz projekt za pomocą dotnet new console i potem uruchamiasz dotnet run to wtedy nie skompilujesz projektu z kilkoma programami z metodą Main. Debuger działa tylko w projekcie programu utworzonym w ten sposób.

Prawdopodobnie może to działać, gdy nie tworzę projektu a pomocą dotnet. Wtedy z konsoli lub za pomocą rozszerzenia code runner, mogę tak uruchomić różne programy z osobna.

Podobne pytania

0 głosów
1 odpowiedź 80 wizyt
pytanie zadane 25 września 2020 w C# przez assassin Gaduła (3,260 p.)
0 głosów
3 odpowiedzi 1,052 wizyt
pytanie zadane 11 grudnia 2018 w PHP przez Krzysio4224 Obywatel (1,690 p.)
0 głosów
2 odpowiedzi 1,417 wizyt
pytanie zadane 30 listopada 2018 w C i C++ przez Ne3yPL Użytkownik (830 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...