Inledning
Vi skall gå igenom vilka filer som skapas när vi använder Visual Studio, vart de ligger och vilka de är. Det är något som alla, inklusive nybörjare, behöver känna till.
Ett första projekt
Vi börjar med att skapa ett nytt "projekt" under menyn "File - New Project" i Visual Studio. Vi väljer i trädet för projekttyper; rätt språk C#, samt även projekttypen Console Application. Se bild nedan punkt 1 och 2.
Innan vi trycker OK så ska vi bestämma vad projektet skall heta. Tänk efter noga här, det är inte så lätt att byta namn på ett projekt och alla dess filer i efterhand! Undvik att använda mellanslag och specialtecken i namnet.
Vi skall också bestämma "location" där projektet hamnar (bild punkt 3). Den förvalda platsen brukar vara C:\Users\användarnamn\Documents\Visual Studio 2013\Projects. Alltså under "Mina Dokument" i en mapp som döps efter den version av Visual Studio som används och sedan under Projects.
Normalt sett är punkt 4 i bilden ikryssad, vilket vi rekommenderar. Det betyder att en mapp med samma namn som ditt projekt kommer att skapas för att sedan lägga alla projektfiler i.
Solution Explorer
Visual Studio startar nu och skapar ditt projekt. Vi kommer då att få upp en trädvy som kallas "Solution Explorer" till höger. Denna vy är central och viktig att begripa.
Ditt "projekt" är i själva verket en "Solution" i Visual Studio termer. Din solution får automatiskt samma namn som angavs i "New Project".
I din solution skapas det projekt som du valde, i vårt fall ett Console Application, återigen med samma namn som du angav för projektet. Under projektet visas nu 4 saker.
- Properties
- References
- App.config
- Program.cs
Properties och References går att "fälla ut" (se bild nedan). App.config samt Program.cs är fysiska filer som ligger i projektstrukturen på disk. Under fliken Properties ligger filen AssemblyInfo.cs.
App.config är en fil som lagrar inställningar till ditt program om du väljer att använda dig av inställningar. Använder ditt program inga inställningar så kommer denna fil inte att behövas i framtiden men vi tar inte bort det för det.
Program.cs innehåller koden för ditt program i projekt av typen Console Application. Dubbelklicka på filen i Solution explorern för att öppna den. Den innehåller Main-metoden som är själva startpunkten för ditt program. Det är här vi börjar skriva våra första och enklaste program. C#-kodfiler slutar vanligtvis med ändelsen .cs.
AssemblyInfo.cs är en fil med information om ditt program. Denna information tas med när programmet byggs. Informationen beskriver bl.a. vem som gjort programmet samt vilken version det har. Dessa inställningar kan också göras grafiskt i Visual Studio under projektinställningar och t.ex. Assebmbly Info. Se bild nedan. Du högerklickar på projektet och väljer "Properties" och under "Application" har du en knapp som heter "Assembly Info".
References är en speciell nod i Solution explorer trädet. Här kan man se vilka delar av .Net som ditt program använder och behöver för att fungera. Du kan även lägga till referenser till andra .Net-delar som du kan behöva. Det finns många delar att välja mellan då .Net är ett stort klassbibliotek som täcker de flesta behov. Skulle inte .Net räcka till så kan man lägga till referenser till andra bibliotek, eller API'er som det också kallas, som du kanske laddat ned.
Vi kan passa på att nämna systemet NuGet som numera är en del av Visual Studio. Via NuGet kan man lägga till och samtidigt ladda hem en hel uppsjö av klassbibliotek. Det fungerar som ett pakethanteringssystem för mjukvara liknande t.ex. de pakethanteringssystem som Linux använder.
En viktig sak att veta som gäller alla kodfiler och nästan alla projektfiler i Solution Explorer är den att de är vanliga text-filer. Med det menas att vi kan öppna dem i Notepad om vi så önskar och redigera dem. Det Visual Studio erbjuder är dock en trevligare miljö med s.k. "Syntax Highlighting" och "Intellisense".
Syntax highlighting är den funktion som ger speciella färger åt vissa ord i editorn. Man försöker framhäva koden och göra strukturen mer tydlig och lättläst. Intellisense är den funktion som automatiskt ger dig förslag och gissar vad det är du vill skriva i koden. Det är en mycket användbar funktion. Den visar även kort dokumentation om hur t.ex. metoder fungerar.
Filstruktur Console Application
I din projektmapp har du nu följande filer. Dessa ligger på Solution-nivå.
Sln-filen är alltså din Solution. I den beskrivs vilka projekt som ingår i din Solution. Suo-filen är en fil som sparar dina personliga inställningar för din Solution. Det är ingen fil som behöver som måste följa med om du t.ex. ska skicka koden till en kompis.
Du har vanligtvis här en mapp per projekt som ingår. Just nu ingår endast ett projekt. Tittar vi i mappen "Console Application" så har vi:
Här återfinns filer på projekt-nivå. Filerna App.config samt Program.cs har vi redan nämnt. Som vi kan se är själva projektet också en fil med ändelsen .csproj. Beroende på om man gjort några inställningar för projektet så kan man ha en .csproj.user-fil också. Denna kan liknas vid suo-filen och är personliga inställningar som gjorts för projektet.
Mapparna "bin" och "obj" är viktiga. I mappen "bin" (kort för binärer) läggs ditt färdiga program. Detta sker varje gång du kör programmet innifrån Visual Studio. Då kompileras och byggs programmet. Visual Studio använder termen "build" för att bygga. Rätt så logiskt. "obj"-katalogen är en temporär katalog som Visual Studio använder under kompileringsfasen.
Normalt sett kan man bygga på 2 olika sätt. "Debug" och "Release". Debug är standardvalet i ett nytt projekt. Du kan själv definiera nya sätt att bygga men vi går inte in på det här. Du kan se valet av byggen i Visual Studio:
Debug vs Release
Vad är då skillnaden mellan att bygga i Debug kontra Release?
Förutom att filerna hamnar på olika ställen "bin\Debug" och "bin\Release" så är såklart Debug-varianten gjort för debugging. Det kompileras in mer kod för att Visual Studios debugger skall fungera bättre. Kod som inte används kompileras också in. Information om variabelnamn finns också med.
För Release så optimeras koden en aning och bygger som en slags slutprodukt. Du kan givetvis debugg'a Release också utan större problem men det finns små skillnader. En skillnad är att t.ex. Exceptions hanteras mycket långsammare i Debug-versionen.
Tumregeln är att använda Debug i utvecklingsfasen och Release för det färdiga programmet.
Har vi kört/byggt eller debugg'at minst en gång så har vi filer i vår "bin"-katalog. Vi skall nu kika på vilka filer som byggs ihop. Vi befinner oss i mappen "bin\Debug" under vårt projekt:
Vår App.config fil har bytt namn och kopierats in under namnet "ConsoleApplication.exe.config". Vårt program ligger här under namnet "ConsoleApplication.exe". Skulle vi ha externa beroenden utanför .Net så kommer det att ligga .dll-filer här också.
Vilka filer är viktiga?
När du byggt så är det främst .exe filen (inte vshost.exe) samt eventuella .dll-filer som behövs. Dessa kan du zipp'a ihop och skicka till en kompis om du vill. Om du använder dig av inställningar så måste .config-filen skickas med.
Undvik *.vshost.*-filer samt *.pdb-filer. Dessa är inte intressanta.
Nästa steg, när programmet är klart, är att skapa en så kallad "installer". Då kan du packetera ihop alla dina filer och få en snygg installation i Windows med genvägar, ikoner samt avinstallation på ett smidigt sätt. Detta går att göra på ett flertal olika sätt och kommer att diskuteras mer ingående i en kommande artikel.
Fler projekt i samma Solution
Det finns ingen gräns för hur många projekt som du kan ha i samma Solution. Det är faktiskt väldigt vanligt att man har många t.ex. ett program, ett eller flera klassbibliotek samt ett flertal test-projekt om man gillar Unit-tester.
Vi kan testa att högerklicka på vår Solution (i Solution Explorern) och välja "Add - New Project". Vi väljer denna gång ett "Windows Forms Application" projekt som vi kallar "WindowsFormsApplication".
Vi kommer nu att ha en mapp till i vår projekt-katalog som heter "WindowsFormsApplication". I denna mapp ligger alla typiska Windows Forms filer. Se artikeln Windows Forms - Del 1 för mer info. Här under finns också en ny "bin"-katalog.
Vi har nu 2 körbara program i samma Solution. Vilket kommer att köras när vi trycker F5?
Svaret är enkelt. Det projekt som är satt som aktivt, dvs. det som är fetmarkerat i Solution Explorern! Se bild ovan. Vill man ändra och köra/debugg'a Windows-programmet nu så måste jag högerklicka på det och välja "Set as Start Up Project". Se bild nedan.
Avslutning
Detta var kort om filer och struktur i Visual Studio.