Seal.Net
Dette dokument beskriver hvordan man kommer i gang med at tilpasse eller videreudvikle Seal.Net.
Der forudsættes erfaring med .NET-udvikling og brug af open source projekter.
Afhængigheder
Seal.Net er bygget på '.NET Standard 2.0'.
Seal.Net projektet ligger på nspop svn-repository på følgende adresse: https://svn.nspop.dk/svn/libraries/seal/net/
Seal.NET er et standard .NET library projekt og indeholder følgende:
❍ Indeholder kildekode for selve biblioteket
❍ Typer der beskriver alle security headers som er defineret i Den Gode Webservice.
❍ Indeholder unit- og integrationstests
❍ Indeholder ældre dokumentation. Findes af historiske årsager.
Der laves et svn update og det tjekkes at alle tests kører.
Herefter skal der laves et tag i svn for den pågældende revision på formen 'release-<major>.<minor>.<patch>':
svn cp https://svn.nspop.dk/svn/libraries/seal/net/trunk/ https://svn.nspop.dk/svn/libraries/seal/net/tags/release-X.Y.Z/ -m "Tag X.Y.Z" |
Hvor X.Y.Z skal rettes til versionen.
Lav et checkout af det nyoprettede tag, og lav en mappe i roden af projektet der hedder "Release".
Byg en NuGet pakke - se nedenunder (det er denne pakke som uploades til nuget.org, som gør Seal.Net tilgængelig for andre).
Lig den ind i "Release" mappen og commit denne mappe på tagget. På denne måde bliver den generede NuGet pakke en del af releaset.
En NuGet pakke kan bygges med følgende kommando:
dotnet pack -c release --include-symbols -p:Version=1.2.3 |
Release note for pakken skrives ind i 'ReleaseNotes.txt'. Projektfilen ('Seal.csproj') er konfigureret til at læse fra denne fil når den pakkes til en NuGet pakke. Der er ikke lavet en aftale om at dette skal gøres, så det er ikke et krav.
For at inkludere refererede projekter som dll (DgwsTypes i dette tilfælde) i den genererede NuGet-pakke, er NuGet pakken Teronis.MSBuild.Packaging.ProjectBuildInPackage refereret i Seal-projektet. Når der sættes 'PrivateAssets="all"' på en projekt-reference (i 'Seal.csproj'), vil den automatisk ligge dll og evt. pdb filer fra projektet ind i den genererede pakke.
Dette gøres da .NET pakker eksterne afhængigheder som NuGet referencer, men man har valgt at ligge dem ind direkte som en lokal dll før i tiden. Da DgwsTypes ligger på nuget.org, kan den erstattes af en NuGet reference, og da dette er understøttet af .NET, er det nok at foretrække på sigt.
Specifikt for .NET Framework
Unit- og integrationstests er placeret under SealTest/, og følger den samme pakkestruktur som de klasser der testes. Der anvendes normal NUnit til at implementere tests. Tests køres i Visual Studio som normalt, eller med dotnet cli (dotnet test).
Koden findes i svn:
https://svn.nspop.dk/svn/libraries/seal/net/trunk/ |
For at få projektets testsuite til at køre skal følgende certifikater importeres i trust store på den computer man vil afvikle testene på.
I Windows importeres de som trusted root certification authorities med MMC.
I Linux kan ca-certificates cli benyttes til at importere dem.
Specifikt for .NET Framework med FMK integrationstests (gælder kun Seal.NET 4.x.y og ældre)
Følgende kommando køres
netsh http add urlacl url=http://+:1010/FMK/ user=DOMAIN\user
hvor DOMAIN\user f.eks. kan aflæses ved at tilgå Control Panel → User Accounts → Configure advanced user profile properties (på Windows 10).