Seal.Net

Indledning

Dette dokument beskriver hvordan man kommer i gang med at tilpasse eller videreudvikle Seal.Net.

Forudsætninger

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

Seal.Net projektet ligger på nspop svn-repository på følgende adresse: https://svn.nspop.dk/svn/libraries/seal/net/

Projektstruktur

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.

Releases

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 med følgende form:  release-<major>.<minor>.<patch>

Når tagget er lavet, bygges en NuGet pakke (det er den pakke som uploades til nuget.org, som gør Seal.Net tilgængelig for andre). Se nedenunder.

Der laves en mappe i roden af projektet, "Release", som NuGet pakken skal ligges under. Denne mappe committes så på tagget, så NuGet pakken bliver en del af releaset.

Byg af NuGet pakke

En NuGet pakke kan bygges med følgende kommando:

dotnet pack -c release --include-symbols -p:Version=1.2.3 -p:PackageReleaseNotes="..."

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, vil den automatisk ligge dll og evt. pdb filer fra projektet ind i den genererede pakke.


Specifikt for .NET Framework

  1.  Opdater versionsnummeret i Seal/Properties/AssemblyInfo.cs (det bestemmer versionsnummerert i nuget pakken).
  2. MSBuild seal\Seal.csproj /property:Configuration=Release
    1. Hvis man får en fejl omkring certifikater, gør da følgende
              sn -i DgwsTypes\DgwsTypesStrongName.pfx med den VS_KEY der nævnes (pw: DgwsTypesPassword)
              byg igen, du får nu sikkert en ny fejl med ny VS_KEY
              sn -i Seal\Seal.NetStrongName.pfx med den VS_KEY der nævnes (pw: Seal.NetPassword)
              byg igen, skulle gerne være uden fejl nu
  3. nuget pack Seal\Seal.csproj -properties Configuration=Release -Symbols -SymbolPackageFormat snupkg

Tests

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. Så vidt muligt navngives testmetoder efter deres hensigt – dvs. f.eks. testConditionShouldBeTrue() i stedet for test1().

Opsætning af udviklingsmiljø

For at få projektets testsuite til at køre skal følgende certifikater importeres i trust store.

I Windows importeres disse som trusted root certification authorities med MMC:


Specifikt for .NET Framework med FMK integrationstests

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).