Løsning og projekt
En C# løsning (solution på engelsk – løsning på dansk er en lidt skidt oversættelse) består typisk af et eller flere projekter, og et enkelt projekt kan være en konsol-applikation (ligesom du oprettede i forrige afsnit), en web-applikation, en Windows-applikation, mobil-applikation og meget andet.
Information til undervisere
Vis kursisten indholdet i en .sln-fil og en .csproj fil. Skab eventuelt et simpelt eksempel med en løsning bestående af en konsol app og et klassebibliotek
En løsning er repræsenteret af en .sln-fil, og du kan finde en visuel repræsentation i Solution Explorer-vinduet. Der kan kun være én løsning ad gangen i VS/VSC, men du må gerne have flere udviklingsmiljøer åbne på samme tid.
Tip
Hvis du arbejder med VSC, er der ikke nødvendigvis en .sln-fil, der repræsenterer en løsning. Men den kan tilføjes med kommandoen ”dotnet new sln”.
Hvert projekt kan være opdelt i flere filer, som kompileren vil sørge for at kompilere sammen. Et projekt er repræsenteret af en .csproj-fil, og består typisk af en eller flere .cs-filer med kode samt eventuelle konfigurationsfiler. Der kan være mange projekter under hver løsning.
Et projekt kan have en filstruktur som følger:
Hvis du åbner .sln-filen eller csproj-filen i Notepad, vil du kunne se, at det er filer VS bruger til at holde styr på løsning og tilhørende projekter. Du vil sjældent tosse rundt i disse filer, men nu ved du, hvad de består af.
Du må gerne have mange cs-filer (kodefiler) i et projekt, og du kan organisere disse, som du ønsker i mapper. Typisk vil du have en .cs-fil til hver typedefinition, og dermed ende med mange filer, men du kan også vælge at have flere typer i samme fil – kompilereren er ligeglad.
Eksempel
For at se en konkret løsning med projekter kan du gøre følgende
- åbn en terminal og naviger til en temp-mappe
c:\temp
eksempelvis - opret en ny mappe
MinApp
og naviger til den - opret en konsol app med
dotnet new console -n MinApp.Console
- opret et klasse bibliotek med
dotnet new classlib -n MinApp.ClassLibrary
- opret en sln-fil med
dotnet new sln -n MinApp
- tilføj MinApp.Console til sln-fil med
dotnet sln .\MinApp.sln add .\MinApp.Console\MinApp.Console.csproj
- tilføj MinApp.ClassLibrary til sln-fil med
dotnet sln .\MinApp.sln add .\MinApp.ClassLibrary\MinApp.ClassLibrary.csproj
- prøv en
dir
for at se fil strukturen - åbn sln-filen for at se indholdet
- gå til MinApp.Console med
cd .\MinApp.Console\
- skab en reference fra MinApp.Console til MinApp.ClassLibrary med
dotnet add reference ..\MinApp.ClassLibrary\MinApp.ClassLibrary.csproj
- ret class1.cs i .\MinApp.ClassLibrary til
namespace MinApp.ClassLibrary;
public class Class1
{
public static string Test()
{
return "Test";
}
}
- ret program.cs i .\MinApp.Console til
- naviger til ./MinApp.Console og kør applikation med
dotnet run
- det skulle gerne resultere i
- som beviser at de to projekter er bundet sammen
Det er et kort eksempel på en løsning med to projekter. Det kan naturligvis også gøres i VS eller Rider, men mange gange er det faktisk nemmere og hurtigere at gøre fra en terminal.