Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

Forudsætninger

Der forudsættes erfaring med .netNET-udvikling og brug af open source projekter. Læs også 2. Building, der er rettet med at bygge og release biblioteket, men hvis beskrivelse af teknisk setup ikke gentages her.

Afhængigheder

Seal.Net er bygget på .net platformen, og kræver version 4.6.2'.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 NET er et standard Visula Studio 2015 projekt, og har følgende struktur.NET library projekt og indeholder følgende:

  • ●   Seal/

Indeholder kildekode for selve biblioteket

...

Indeholder unit- og integrationstests

  • ●   doc/

Indeholder al dokumentation som krævet på https://wwwæ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 på formen 'release-<major>.<minor>.<patch>':

Code Block
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.

Byg af NuGet pakke

En NuGet pakke kan bygges med følgende kommando:

Code Block
languagebash
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.


Kort om referencer ved byg af NuGet

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

  1.  Opdater
  • ●   scripts/

Indeholder scripts til at bygge med.

  • ●   packages/

Indeholder eksterne NuGet pakker. Dette dir skal heller ikke ligge i Subversion.

Releases

Et nyt release laves ved først at opdatere ChangeLog-filen med ændringerne fra sidste release.

Herefter checkes det at projektet kan bygges og at alle tests kører uden fejl. Herefter køres updateres versionsnummer i Seal/Properties/AssemblyInfo.cs

Udvikles der under Windows kan release foretages manuelt med følgende trin:

  • Lav en svn update for at sikre, at den seneste version er hentet.
  • Lav et nyt tag i SVN baseret på trunk, der hedder vx.y.z hvor x.y.z er det nye versionsnummer.

Byg af nuget pakke

  1.  Check og opdater evt. 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 snupkgKopier den byggede pakke til lokalt nuget katalog

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(, eller med dotnet cli (dotnet test).

Opsætning af udviklingsmiljø

Koden findes i svn:

Code Block
languagetext
https://svn.nspop.dk/svn/libraries/seal/net/trunk/

For at få projektets testsuite til at køre laves opsætning som beskrevet i dette afsnit.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.

  • SealTest/Resources/oces3/devtest4/FOCES_gyldig.crt (password: Test1234)
  • SealTest/Resources/SelfSigned.crt


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

Følgende certifikater importeres som trusted root certification authorities (med MMC):

...

)

...

.

...

TODO Mac/Linux

Kom Godt i Gang Guide

Der er udarbejdet en "Kom Godt i Gang Guide", til at hjælpe udviklere i gang, med at udvikle systemer, der benytter sig af Seal.Net. Guiden findes via linket:

https://www.nspop.dk/display/public/web/SEAL.NET+-+Leverancebeskrivelse