Formålet er at samle to projekter i den samme solution, så der kan deles model-klasser på tværs af projekterne.
Man har disse to projekter:
De faktiske projektnavne kan variere, men jeg kalder dem bare “web api” og “blazor” i det følgende.
Tag de to projektfoldere, og læg dem i en overordnet folder:
Solution /
Blazor-app /
Web-api /
Du kan kalde folderne lige hvad du har lyst til - det er ikke vigtigt.
Stil dig i solution-folderen med din terminal og gør følgende for at lave en ny solution-fil:
$ dotnet new sln --name MinSolution
Sørg for at vælge et godt navn til din solution der afspejler dit samlede projekt.
Du har nu en solution i den øverste folder. De to underprojekter skal tilføjes til solution-filen. Dette gøres med disse to kommandoer. Her er det vigtigt at bruge filnavnene på de to csproj-filer der ligger i underfolderne.
$ dotnet sln add Blazor-app/Blazor-app.csproj
$ dotnet sln add Web-api/Web-api.csproj
Du kan nu se projekterne med:
$ dotnet sln list
Model-klasserne skal bruges både i API og Blazor. Det nemmeste er at lave et tredje projekt kun til model-klasserne. Her bruger man skabelonen “classlib”.
Stil dig i solution-folderen med din terminal. Lav nu et nyt projekt i projektfolderen sådan her:
$ dotnet new classlib -o shared
Flyt hele din Model-folder over i shared-projektet. Ændrer namespacet på alle dine klasser så de nu ligger i “shared.Model” i stedet for “Model”.
Lav en “dotnet build” i “shared”-folderen for at se at koden stadig bygger som den skal.
Gå tilbage til API-projektet i din terminal. Brug følgende kommando for at tilføje en reference til shared i API-projektet:
$ dotnet add reference ../shared
Gå herefter dit projekt igennem, og udskift alle referencer fra “Model” til “shared.Model”. Herefter burde du igen kunne bygge din “web api” med “dotnet build” selvom at model-klasserne nu er flyttet over i et andet projekt.
Flyt nu din terminal ind i Blazor-folderen. Tilføjet shared med samme kommando som i trin 4. Du kan nu bruge dine model-klasser i Blazor-projektet med “using shared.Model” i din kode, akkurat som i API-projektet.
Du kan nu bygge alle tre projekter, blot ved at stå i solution-folderen og skrive “dotnet build”.
Du er stadig nødt til at starte API-projektet og Blazor-projektet op hver for sig. Dette kræver at du har åbnet to terminaler.
Ved deployment, findes der flere strategier. Da Blazor jo er en statisk web-app, kan du lave et færdigt “build” med “dotnet deploy”-kommandoen og smide den op i skyen. Der er ingen backend.
API-projektet kan så efterfølgende deployes på en app service, fx “Azure App Service”.
En helt anden strategi er at bruge API-projektet som en web-server, der indeholder blazor-filerne. Fordelen ved denne løsninge er, at der kun skal deployes ét projekt i skyen, og ikke to. Dette kræver dog en udvidelse af koden i API-projektet, som ikke er dækket af denne guide.