diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..854788a
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,141 @@
+name: Build and Test
+
+on:
+ push:
+ branches:
+ - main
+ - 'pr/**'
+ paths-ignore:
+ - '**/*.md'
+ pull_request:
+ branches:
+ - main
+ paths-ignore:
+ - '**/*.md'
+
+env:
+ DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
+ DOTNET_CLI_TELEMETRY_OPTOUT: 1
+ DOTNET_NOLOGO: true
+ VERSION: '5.14.0'
+
+jobs:
+
+ build-linux:
+ name: Build and Test (Linux)
+ runs-on: ubuntu-22.04 # ubuntu-24.04 does not include mono needed for net4x tests
+ defaults:
+ run:
+ working-directory: Src
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: |
+ 10.0.x
+
+ - name: Display .NET version
+ run: dotnet --version
+
+ - name: Restore dependencies
+ run: dotnet restore --verbosity quiet
+
+ - name: Add AltCover package
+ run: dotnet add ./MailMergeLib.Tests/MailMergeLib.Tests.csproj package AltCover
+
+ - name: Build solution
+ run: dotnet build MailMergeLib.sln /verbosity:minimal /t:rebuild /p:configuration=release /nowarn:CS1591,CS0618
+
+ - name: Run tests
+ run: dotnet test --framework net10.0 --no-build --configuration release MailMergeLib.sln /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCoverStrongNameKey="../MailMergeLib/MailMergeLib.snk" /p:AltCoverAssemblyExcludeFilter="MailMergeLib.Tests|NUnit3.TestAdapter" /p:AltCoverLineCover="true"
+
+ - name: Upload coverage to Codecov
+ uses: codecov/codecov-action@v5
+ with:
+ files: ./MailMergeLib.Tests/coverage.net10.0.xml
+ flags: net10.0-linux
+ name: net10.0-linux
+ token: ${{ secrets.CODECOV_TOKEN }}
+
+
+ build-windows:
+ name: Build and Test (Windows)
+ runs-on: windows-2022
+ defaults:
+ run:
+ working-directory: Src
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Configure Git line endings
+ run: git config --global core.autocrlf true
+
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: |
+ 10.0.x
+
+ - name: Display .NET version
+ run: dotnet --version
+
+ - name: Restore dependencies
+ run: dotnet restore --verbosity quiet
+
+ - name: Add AltCover package
+ run: dotnet add .\MailMergeLib.Tests\MailMergeLib.Tests.csproj package AltCover
+
+ - name: Determine version
+ id: version
+ shell: pwsh
+ run: |
+ $version = "${{ env.VERSION }}"
+ $versionFile = "$version.${{ github.run_number }}"
+
+ if ("${{ github.event_name }}" -eq "pull_request") {
+ $version = "$version-PR${{ github.event.pull_request.number }}"
+ }
+
+ echo "VERSION=$version" >> $env:GITHUB_OUTPUT
+ echo "FILE_VERSION=$versionFile" >> $env:GITHUB_OUTPUT
+ echo "Package version: $version"
+ echo "File version: $versionFile"
+
+ - name: Build solution
+ run: dotnet build MailMergeLib.sln /verbosity:minimal /t:rebuild /p:configuration=release /p:IncludeSymbols=true /p:ContinuousIntegrationBuild=true /p:Version=${{ steps.version.outputs.VERSION }} /p:FileVersion=${{ steps.version.outputs.FILE_VERSION }}
+
+ - name: Run tests (net462)
+ run: dotnet test --framework net462 --no-build --configuration release MailMergeLib.sln /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCoverStrongNameKey="..\MailMergeLib\MailMergeLib.snk" /p:AltCoverAssemblyExcludeFilter="MailMergeLib.Tests|NUnit3.TestAdapter" /p:AltCoverLineCover="true"
+
+ - name: Run tests (net10.0)
+ run: dotnet test --framework net10.0 --no-build --configuration release MailMergeLib.sln /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCoverStrongNameKey="..\MailMergeLib\MailMergeLib.snk" /p:AltCoverAssemblyExcludeFilter="MailMergeLib.Tests|NUnit3.TestAdapter" /p:AltCoverLineCover="true"
+
+ - name: Upload coverage to Codecov
+ uses: codecov/codecov-action@v5
+ with:
+ files: ./Src/MailMergeLib.Tests/coverage.net10.0.xml
+ flags: net10.0-windows
+ name: net10.0-windows
+ token: ${{ secrets.CODECOV_TOKEN }}
+
+ - name: Pack NuGet packages
+ run: dotnet pack MailMergeLib.sln --verbosity minimal --no-build --configuration release /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg /p:PackageOutputPath=${{ github.workspace }}/artifacts /p:ContinuousIntegrationBuild=true
+
+ - name: Upload NuGet packages as artifacts
+ uses: actions/upload-artifact@v7
+ with:
+ name: nuget-packages
+ path: |
+ artifacts/*.nupkg
+ artifacts/*.snupkg
+ retention-days: 30
+
+ - name: Publish to NuGet
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
+ run: dotnet nuget push "artifacts/*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
diff --git a/PkgReadMe.md b/PkgReadMe.md
index afa9d6d..fd370d3 100644
--- a/PkgReadMe.md
+++ b/PkgReadMe.md
@@ -34,6 +34,6 @@
### Supported Frameworks
* .Net Framework 4.6.2 and later
* .Net Standard 2.1
-* NET 6.0 and later
+* NET 6.0 and NET 10.0
[](https://www.paypal.com/donate?hosted_button_id=KSC3LRAR26AHN)
diff --git a/README.md b/README.md
index 24e9521..b467dee 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@
### Supported Frameworks
* .Net Framework 4.6.2 and later
* .Net Standard 2.1
-* NET 6.0 and later
+* NET 6.0 and NET 10.0
[](https://www.paypal.com/donate?hosted_button_id=KSC3LRAR26AHN)
diff --git a/Src/Directory.Build.props b/Src/Directory.Build.props
index 95c7aca..75167f2 100644
--- a/Src/Directory.Build.props
+++ b/Src/Directory.Build.props
@@ -8,8 +8,8 @@
Copyright 2011-$(CurrentYear) axuno, MailMergeLib Project maintainers and contributers
https://github.com/axuno/MailMergeLib.git
true
- 5.13.0
- 5.13.0
+ 5.14.0
+ 5.14.0
5.0.0.0
latest
true
diff --git a/Src/MailMergeLib.Tests/MailMergeLib.Tests.csproj b/Src/MailMergeLib.Tests/MailMergeLib.Tests.csproj
index 686fa09..9718306 100644
--- a/Src/MailMergeLib.Tests/MailMergeLib.Tests.csproj
+++ b/Src/MailMergeLib.Tests/MailMergeLib.Tests.csproj
@@ -3,7 +3,7 @@
Test project for MailMergeLib
MailMergeLib.UnitTest
- net462;net8.0
+ net462;net10.0
false
MailMergeLib.Tests
../MailMergeLib/MailMergeLib.snk
diff --git a/Src/MailMergeLib/MailMergeLib.csproj b/Src/MailMergeLib/MailMergeLib.csproj
index eae01dd..602895d 100644
--- a/Src/MailMergeLib/MailMergeLib.csproj
+++ b/Src/MailMergeLib/MailMergeLib.csproj
@@ -4,7 +4,7 @@
MailMergeLib is a mail message client library which provides comfortable mail merge capabilities for text, inline images and attachments, as well as good throughput and fault tolerance for sending mail messages.
MailMergeLib
MailMergeLib
- netstandard2.1;net462;net6.0
+ netstandard2.1;net462;net6.0;net10.0
true
MailMergeLib
MailMergeLib.snk
@@ -55,12 +55,12 @@ https://github.com/axuno/MailMergeLib/releases
-
-
+
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -68,7 +68,7 @@ https://github.com/axuno/MailMergeLib/releases
-
+
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 9f40345..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-version: 5.0.0.{build} # Only change for mayor versions (e.g. 6.0.0)
-environment:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
- matrix:
- - job_name: windows
- appveyor_build_worker_image: Visual Studio 2022
- - job_name: linux
- appveyor_build_worker_image: Ubuntu
-matrix:
- fast_finish: true
-only_commits:
- files:
- - appveyor.yml
- - Src/**/*
-
-for:
- -
- matrix:
- only:
- - job_name: windows
- init:
- # default is: core.autocrlf input
- - git config --global core.autocrlf true
- build_script:
- - ps: cd $env:APPVEYOR_BUILD_FOLDER\Src
- - ps: dotnet --version
- - ps: dotnet restore --verbosity quiet
- - ps: dotnet add .\MailMergeLib.Tests\MailMergeLib.Tests.csproj package AltCover
- - ps: |
- $version = "5.13.0"
- $versionFile = $version + "." + ${env:APPVEYOR_BUILD_NUMBER}
-
- if ($env:APPVEYOR_PULL_REQUEST_NUMBER) {
- $version = $version + "-PR" + $env:APPVEYOR_PULL_REQUEST_NUMBER
- }
- dotnet build MailMergeLib.sln /verbosity:minimal /t:rebuild /p:configuration=release /p:IncludeSymbols=true /p:ContinuousIntegrationBuild=true /p:Version=$version /p:FileVersion=$versionFile
- dotnet pack MailMergeLib.sln --verbosity minimal --no-build --configuration release /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg /p:PackageOutputPath=$env:APPVEYOR_BUILD_FOLDER/artifacts /p:ContinuousIntegrationBuild=true
- test_script:
- - cmd: nuget install Appveyor.TestLogger
- - cmd: dotnet test --framework net8.0 --test-adapter-path:. --logger:Appveyor MailMergeLib.sln /p:configuration=release /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCover=true /p:AltCoverStrongNameKey="..\MailMergeLib\MailMergeLib.snk" /p:AltCoverAssemblyExcludeFilter="MailMergeLib.Tests|NUnit3.TestAdapter" /p:AltCoverLineCover="true"
- - cmd: nuget install codecov -excludeversion
- - cmd: .\Codecov\Tools\win7-x86\codecov.exe -f ".\MailMergeLib.Tests\coverage.net8.0.xml" -n net8.0win
- artifacts:
- - path: 'artifacts\*.nupkg'
- type: NuGetPackage
- - path: 'artifacts\*.snupkg'
- type: NuGetPackage
- deploy:
- - provider: NuGet
- api_key: $(NUGET_API_KEY)
- on:
- branch: main
- -
- matrix:
- only:
- - job_name: linux
- build_script:
- - cd $APPVEYOR_BUILD_FOLDER/Src
- - curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 8.0
- - export PATH="$HOME/.dotnet:$PATH"
- - dotnet --version
- - dotnet restore --verbosity quiet
- - dotnet add ./MailMergeLib.Tests/MailMergeLib.Tests.csproj package AltCover
- - dotnet build MailMergeLib.sln /verbosity:minimal /t:rebuild /p:configuration=release /nowarn:CS1591,CS0618
- test_script:
- - dotnet test --framework net8.0 MailMergeLib.sln /p:configuration=release /p:AltCover=true /p:AltCoverXmlReport="coverage.xml" /p:AltCover=true /p:AltCoverStrongNameKey="../MailMergeLib/MailMergeLib.snk" /p:AltCoverAssemblyExcludeFilter="MailMergeLib.Tests|NUnit3.TestAdapter" /p:AltCoverLineCover="true"
- - bash <(curl -s https://codecov.io/bash) -f ./MailMergeLib.Tests/coverage.net8.0.xml -n net8.0linux