C#, Hello World ja komentorivi (Windows)
Tässä tehtävässä oletetaan että olet asentanut kurssin työkaluista ainakin tekstieditorin ja Visual Studion tai Riderin.
Tehtävän tekeminen Linuxissa/Macissa: kääntäminen komentoriviltä
Huomaa että ohjeissa puhutaan useissa kohti Agoran mikroluokista ja syksyllä 2021 todennäköisesti ohjauksia ei pidetä läsnäopetuksena, joten ohita sopivasta kappaleet jossa on sama mikroluokka.
1. Mikä ihmeen komentorivi?
Jos komentorivi ei ole tuttu, niin tutustu ehdottomasti ensimmäiseksi komentoriviohjeisiin: https://tim.jyu.fi/view/kurssit/tie/ohj1/tyokalut/komentorivi
Siellä on kuvattu miten komentorivi avataan, ja yleisimpiä komentoja Windowsille, Linuxille ja Macille.
Tässä syksyn 2021 harjoituksessa käyteään Git Bash -liittymää. Mikäli haluat tutustua saman asian tekemiseen CMD Promtilla tai PowerShellillä, katso syksyn 2020 materiaalia.
2. Mikroluokissa: N-levyn liittäminen
Tämä luku koskee pääasiassa Agoran mikroluokkia, n:-levy ei toimi suoraan kotikoneissa, mutta ei sitä välttämättä tarvitakaan!
N:
-verkkolevylle on yliopiston verkossa tallennettu muun muassa kääntämiseen ja tekstieditorin käyttöön tarvittavia komentoja. Tarkista, että N:
-verkkolevy on liitettynä (eli "mountattuna") esimerkiksi kirjoittamalla PowerShelliin (voit copy pastettaa tuosta alta)
dir n:
Jos tulee virheilmoitus dir : Cannot find drive. A drive with the name 'n' does not exist.
, klikkaa työpöydällä kuvake Yhdista-N
. Jos kuvaketta ei ole, voit mountata levyn komentoriviltä:
net use N: \\fileservices.ad.jyu.fi\customershare-multi$\it-ohjelmointi
- Lisätietoa komentorivistä - avaa tämä yhteen selaimen tabiin (välilehteen) ja katso täältä tarvittaessa apua
Omalla koneellasi voit kirjoittaa vastaavia komentoja (npp, csm, csk, jne) vaikka C:\bin-hakemistoon, ja lisätä tuon kansion niin sanottuun PATH
-hakupolkuun niin komennot ovat käytettävissä mistä vain.
Em toimii mikroluokassa ja omassa koneessa mikäli se on yliopiston verkossa (jonka voi tehdä kotoakin VPN-yhteyden avulla). Mutta muualta kuin mikroluokan koneelta käytettynä net use
pyytää käyttäjätunnusta ja salasanaa ja siinä on käyttäjätunnuksen perään kirjoitetaan myös domain
tyyliin:
TUNNUS@ad.jyu.fi
Jos esimerkiksi komento npp
ei toimi, pitää paikka johon tuo on kirjoitettu (eli mikroluokissa n:\bin
tai kotona se mihin olet sen tehnyt) lisätä hakupolkuun:
cmd:
path=n:\bin;%path%
PowerShell:
$env:Path += ";n:\bin"
3. Hello World
Avataan ensin Git Bash:
- ota vasemmasta alakulmasta ikkunan kuva ja kirjoita
Git
- pitäisi tulla näkyviin Git Bash
- tätä kannattaa painaa hiiren oikealla ja kiinittää se tehtäväpalkkiin
- avaa Git Bash
Luo itsellesi vaikkapa hakemisto C:\kurssit\ohj1\paate\paate1
, eli anna alla olevat komennot. Huomaa että nuoli ylös -painikkeella saat edellisen komennon, joten siihen on helppoa täydentää.
cd /c
mkdir -p kurssit/ohj1/paate/paate1
cd /c/kurssit/ohj1/paate/paate1
Eli mitä tehtiin?
- vaihdettiin c-levun juureen
- luodaan uusi hakemisto (
mkdir
, make directory) kokopolku kerralla (-p
elipath
) ja sitten annetaan koko hakemistopolku joka halutaan luoda. Tätä ei tarvitse enää luoda toista kertaa vaikka sulkisit komentoikkunan. - vaihdetaan hakemistoon (
cd
, change directory)
Tee ohjauksen tehtävät tähän hakemistoon. Jos joudut käynnistämään Git Bashin uudelleen, pitää tuo viimeinen vaihtaminen tehdä uuudelleen.
Luodaan seuraavaksi ensimmäinen ohjelma.
Luo jollakin tekstieditorilla tiedosto nimeltä HelloWorld.cs
, vaikkapa Notepad++:lla (kirjoita komentoriviltä npp HelloWorld.cs
jos olet tehnyt npp:n ohjeiden mukaan tai jos et ole, niin käynnistä tekstieditori muuten ja ole huolellinen että tallennat oikeaan paikkaan). Kopioi seuraavaksi alla oleva teksti HelloWorld.cs
tiedostoon ja tallenna muutokset:
public class HelloWorld
{
public static void Main()
{
System.Console.WriteLine("Hello World!");
}
}
Nyt tiedosto HelloWorld.cs sisältää ensimmäisen ohjelman lähdekoodin. Lähdekoodi on normaalia tekstiä, jota voidaan muokata millä tahansa tekstinmuokkausohjelmalla. Lähdekoodi on aina kirjoitettu jonkin ohjelmointikielen sääntöjen mukaisesti.
Tietokoneet eivät kuitenkaan ymmärrä lähdekoodia, vaan lähdekoodi on ensin käännettävä (eng. "Compile") muotoon, jonka tietokone osaa suorittaa. Tämä tehdään kääntäjällä (eng. "Compiler"), erillisellä ohjelmalla jonka tehtävä on tuottaa lähdekoodista ajettava ohjelma.
Tällä kurssilla ohjelmamme lähdekoodi noudattaa C# (C-sharp) nimisen ohjelmointikielen sääntöjä. Voimme siis käyttää työkalua nimeltä csc (C-Sharp-Compiler) ohjelmamme kääntämiseen ajettavaksi ohjelmaksi.
3.1 Aluksi meidän pitää löytää hakemisto, josta csc.exe
löytyy.
Vaihtoehtoja voi olla esimerkiksi:
VS2022 Community asennettuna (todennäköisin vaihtoehto):
c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn
VS2019 Enterprise asennettuna:
c:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn
Oikean hakemistonimen näkee kun kirjoittaa komentoriville aluksi
ls -la "/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/Roslyn/csc.exe"
Jos csc.exen tiedot tulostuu, niin tuo hakemisto on oikea, muuten pitää kokeilla seuraavaa hakemistoa. Tai voi kirjoittaa:
find /c -name csc.exe 2>/dev/null
ja katsoo missä on uusin versio, eli jossa esiintyy se asennetun Visual Studion vuosiluku (yleensä joku yllä olevista esimerkeistä).
Jos VisualStudio on asennettu, niin yleensä omassa koneessa tuo Community
on oikea, mikroluokissa taas Enterprise
tai myös
c:\Windows\Microsoft.NET\Framework\v4.0.30319
toimii HelloWorldin kanssa, mutta ei välttämättä lumiukon kanssa (eli mikroluokissa voi mennä suoraan kirjoitetuilla ohjeilla).
Erityisesti kotikoneella korvaa jatkossa olevissa esimerkeissä (myös Lumiukko) aina tarvittaessa tuo hakemistonimi c:\Windows\Microsoft.NET\Framework\v4.0.30319
sillä, mistä csc.exe
löytyi. Älä kuitenkaan käytä hakemistonimeä, jossa on jono 64
, vaikka csc.exe
sieltä löytyisikin.
3.2 Seuraavaksi lisätään se hakupolkuun:
Csc-ohjelman voi lisätä hakupolkuun seuraavalla komennolla:
export PATH="/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/Roslyn:$PATH"
Nyt ohjelma on lisätty hakupolkuun tämän istunnon ajaksi. Jos suljet Git Bash:in ja avaat myöhemmin uudestaan, täytyy sama komento syöttää uudelleen.
Jotta yllä olevaa komentoa ei tarvitse toistaa joka kerta kun käynnistät Git Bash:in uudestaan, voidaan sama komento listätä .bashrc-nimiseen tiedostoon.
Tämän tehdäksesi mene omaan kotihakemistoosi. Kotihakemistosi polku on /c/Users/[oman käyttäjän nimi]. Helpoiten sinne pääsee
cd ~
Seuraavaksi anna komento (mutta älä enää anna sitä toista kertaa):
echo 'export PATH="/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/Roslyn:$PATH"' >> .bashrc
Tämä kirjoittaa aiemmin käytetyn komennon .bashrc-nimiseen tiedostoon. Git Bash suorittaa kaikki tässä tiedostossa olevat komennot automaattisesti kun se käynnistyy.
Nyt csc-ohjelma löytyy aina komentoriviltä.
Siirry nyt takaisin kohdassa 3 luomaasi /c/kurssit/ohj1/paate/paate1
- kansioon.
cd /c/kurssit/ohj1/paate/paate1
Csc-ohjelman lisääminen pysyvästi hakupolkuun onnistuu myös Windowsin ohjauspaneelin kautta. Voit katsoa ohjeet täältä.
3.3 Ohjelman kääntäminen
Käännä sitten ohjelma kirjoittamalla komentoriville
csc.exe HelloWorld.cs
Nyt ohjelman lähdekoodi on käännetty ajettavaksi ohjelmaksi. Tarkista mitä tiedostoja kansiossa on:
ls -la
Kansiosta pitäisi nyt löytyä tiedosto nimeltä HelloWorld.exe
. Tämä on ajettava ohjelma, jonka kääntäjä loi HelloWorld.cs
tiedostosta.
Aja ohjelma kirjoittamalla
./HelloWorld.exe
Komentoriville pitäisi nyt tulostua sanat: "Hello World!".
Kokeile tehdä jokin muutos HelloWorld.cs
:ssä olevaan lainausmerkkien väliseen tekstiin, tallenna, käännä ja aja uudelleen.
CMD:ssä riittäisi pelkästään (mutta älä nyt siitä välitä)
HelloWorld.exe
tai
HelloWorld
4. Kääntäminen ja ajaminen dotnetillä:
Uudempi ja hieman yksinkertaisempi tapa kääntää komentoriviltä. Tätä käytetään seuraavana tehtävänä olevassa Lumiukko-ohjauksessa. Aluksi käytettiin tuota "vaikeampaa" tapaa, koska tämä uusi tapa peittää näkyvistä mitä taustalla tapahtuu.
Asenna tarvittavat projektimallit:
dotnet new -i Jypeli.Templates
Luo HelloWorld
projekti
dotnet new ConsoleMain -n HelloWorld
Vaihda syntyneen projektin hakemistoon
cd HelloWorld
Katso mitä tiedostoja syntyi:
ls -la
Muokkaa koodia tiedostosta HelloWorld.cs
Käännä ja aja ohjelma:
dotnet run
Huomioi, että komento dotnet run
on annettava samasta kansiosta jossa sijaitsee .csproj loppuinen tiedosto (esimerkissä tiedosto on HelloWorld.csproj
).
Komento dotnet run
tekee saman kääntämisen kuin kohdassa 3.3, mutta tämä komento hoitaa myös automaattisesti mm. kirjastojen liittämisen projektiin (vertaa syksyn2020 ohjeisiin kääntää Jypeli ohjelma komentoriviltä käyttäen csc:tä).
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.