diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c95f455..cf8b9c5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,6 +30,7 @@ jobs: - run: dotnet build ./src/SkiaSharp.QrCode/ -c Debug - run: dotnet build ./samples/ManualGenerate/ -c Debug - run: dotnet build ./samples/SimpleGenerate/ -c Debug + # tests - run: dotnet test ./tests/SkiaSharp.QrCode.Tests.net31/ -c Debug - run: dotnet test ./tests/SkiaSharp.QrCode.Tests.net50/ -c Debug -p:CollectCoverage=true -p:CoverletOutputFormat=opencover - uses: codecov/codecov-action@v1 @@ -38,3 +39,11 @@ jobs: flags: unittests fail_ci_if_error: true verbose: true + # run + - run: dotnet run --project ./samples/ManualGenerate/ManualGenerate.csproj -c Debug -f netcoreapp3.1 + - run: dotnet run --project ./samples/ManualGenerate/ManualGenerate.csproj -c Debug -f net5.0 + - run: dotnet run --project ./samples/SimpleGenerate/SimpleGenerate.csproj -c Debug -f netcoreapp3.1 + - run: dotnet run --project ./samples/SimpleGenerate/SimpleGenerate.csproj -c Debug -f net5.0 + # todo: add LinuxRunSamples + # - run: docker-compose up + # working-directory: ./samples/LinuxRunSamples diff --git a/.gitignore b/.gitignore index e8ae8d0..4de44a0 100644 --- a/.gitignore +++ b/.gitignore @@ -361,3 +361,5 @@ MigrationBackup/ # Fody - auto-generated XML schema FodyWeavers.xsd +# custom +output/ \ No newline at end of file diff --git a/README.md b/README.md index b61f28a..a6cbb4a 100644 --- a/README.md +++ b/README.md @@ -105,12 +105,72 @@ namespace SkiaQrCodeSampleConsole ``` -## Build +## TIPS +### Linux support + +You have 2 choice to run on Linux. If you don't need font operation, use `SkiaSharp.NativeAssets.Linux.NoDependencies`. + +1. Use `SkiaSharp.NativeAssets.Linux` package. In this case, you need to install `libfontconfig1` via apt or others. +1. Use `SkiaSharp.NativeAssets.Linux.NoDependencies` 2.80.2 or above. In this case, you don't need `libfontconfig1`. + +SkiaSharp.NativeAssets.Linux.NoDependencies still can draw text, however can't search font cased on character or other fonts. + +> Detail: https://github.com/mono/SkiaSharp/issues/964#issuecomment-549385484 + +**SkiaSharp.NativeAssets.Linux sample** + +```shell +sudo apt update && apt install -y libfontconfig1 ``` + +```csproj +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SkiaSharp.QrCode" Version="0.4.1" /> + <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.80.2" /> + </ItemGroup> +</Project> +``` + +**SkiaSharp.NativeAssets.Linux.NoDependencies sample** + +```csproj +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SkiaSharp.QrCode" Version="0.4.1" /> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> + </ItemGroup> +</Project> +``` + +### Docker Build & Run + +Test Build lib. + +```shell docker build -t skiasharp.qrcode . ``` +Test Run on linux. + +```shell +cd samples/LinuxRunSamples +docker-compose up +``` + ## License MIT diff --git a/samples/LinuxRunSamples/3.1/BuildTest.csproj b/samples/LinuxRunSamples/3.1/BuildTest.csproj new file mode 100644 index 0000000..032fc03 --- /dev/null +++ b/samples/LinuxRunSamples/3.1/BuildTest.csproj @@ -0,0 +1,19 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SkiaSharp.QrCode" Version="0.4.0" /> + <!-- require libfontconfig1 https://github.com/mono/SkiaSharp/issues/964#issuecomment-549385484 --> + <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.80.2" /> + </ItemGroup> + + <ItemGroup> + <None Update="samples\*.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> +</Project> diff --git a/samples/LinuxRunSamples/3.1/Program.cs b/samples/LinuxRunSamples/3.1/Program.cs new file mode 100644 index 0000000..dad664e --- /dev/null +++ b/samples/LinuxRunSamples/3.1/Program.cs @@ -0,0 +1,54 @@ +using SkiaSharp; +using System; +using System.IO; +using SkiaSharp.QrCode; +using SkiaSharp.QrCode.Models; + +namespace SkiaQrCodeSampleConsole +{ + class Program + { + static void Main(string[] args) + { + Directory.CreateDirectory("output"); + + var content = "testtesttest"; + using (var generator = new QRCodeGenerator()) + { + // Generate QrCode + var qr = generator.CreateQrCode(content, ECCLevel.L); + + // Render to canvas + var info = new SKImageInfo(512, 512); + using (var surface = SKSurface.Create(info)) + { + var canvas = surface.Canvas; + canvas.Render(qr, info.Width, info.Height); + + // gen color + // yellow https://rgb.to/yellow + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(60,100,50)); + // red https://rgb.to/red + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(0, 100, 50)); + + // gen icon + var logo = File.ReadAllBytes("samples/test.png"); + var icon = new IconData + { + Icon = SKBitmap.Decode(logo), + IconSizePercent = 10, + }; + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.Parse("000000"), icon); + + // Output to Stream -> File + using (var image = surface.Snapshot()) + using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) + using (var stream = File.OpenWrite(@"output/hoge.png")) + { + data.SaveTo(stream); + } + } + } + } + } +} diff --git a/samples/LinuxRunSamples/3.1/entrypoint.sh b/samples/LinuxRunSamples/3.1/entrypoint.sh new file mode 100644 index 0000000..7d177b0 --- /dev/null +++ b/samples/LinuxRunSamples/3.1/entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/bash -ex + +FRAMEWORK=netcoreapp3.1 +while [ $# -gt 0 ]; do + case $1 in + -f) FRAMEWORK=$2; shift 2; ;; + *) shift ;; + esac +done + +apt update && apt install -y libfontconfig1 + +dotnet run --csproj BuildTest.csproj -f "${FRAMEWORK}" diff --git a/samples/LinuxRunSamples/3.1/samples/test.png b/samples/LinuxRunSamples/3.1/samples/test.png new file mode 100644 index 0000000..b8699ad Binary files /dev/null and b/samples/LinuxRunSamples/3.1/samples/test.png differ diff --git a/samples/LinuxRunSamples/3.1_nodep/BuildTest.csproj b/samples/LinuxRunSamples/3.1_nodep/BuildTest.csproj new file mode 100644 index 0000000..e539ad5 --- /dev/null +++ b/samples/LinuxRunSamples/3.1_nodep/BuildTest.csproj @@ -0,0 +1,18 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SkiaSharp.QrCode" Version="0.4.0" /> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> + </ItemGroup> + + <ItemGroup> + <None Update="samples\*.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> +</Project> diff --git a/samples/LinuxRunSamples/3.1_nodep/Program.cs b/samples/LinuxRunSamples/3.1_nodep/Program.cs new file mode 100644 index 0000000..dad664e --- /dev/null +++ b/samples/LinuxRunSamples/3.1_nodep/Program.cs @@ -0,0 +1,54 @@ +using SkiaSharp; +using System; +using System.IO; +using SkiaSharp.QrCode; +using SkiaSharp.QrCode.Models; + +namespace SkiaQrCodeSampleConsole +{ + class Program + { + static void Main(string[] args) + { + Directory.CreateDirectory("output"); + + var content = "testtesttest"; + using (var generator = new QRCodeGenerator()) + { + // Generate QrCode + var qr = generator.CreateQrCode(content, ECCLevel.L); + + // Render to canvas + var info = new SKImageInfo(512, 512); + using (var surface = SKSurface.Create(info)) + { + var canvas = surface.Canvas; + canvas.Render(qr, info.Width, info.Height); + + // gen color + // yellow https://rgb.to/yellow + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(60,100,50)); + // red https://rgb.to/red + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(0, 100, 50)); + + // gen icon + var logo = File.ReadAllBytes("samples/test.png"); + var icon = new IconData + { + Icon = SKBitmap.Decode(logo), + IconSizePercent = 10, + }; + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.Parse("000000"), icon); + + // Output to Stream -> File + using (var image = surface.Snapshot()) + using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) + using (var stream = File.OpenWrite(@"output/hoge.png")) + { + data.SaveTo(stream); + } + } + } + } + } +} diff --git a/samples/LinuxRunSamples/3.1_nodep/entrypoint.sh b/samples/LinuxRunSamples/3.1_nodep/entrypoint.sh new file mode 100644 index 0000000..2b27e45 --- /dev/null +++ b/samples/LinuxRunSamples/3.1_nodep/entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash -ex + +FRAMEWORK=netcoreapp3.1 +while [ $# -gt 0 ]; do + case $1 in + -f) FRAMEWORK=$2; shift 2; ;; + *) shift ;; + esac +done + +dotnet run --csproj BuildTest.csproj -f "${FRAMEWORK}" diff --git a/samples/LinuxRunSamples/3.1_nodep/samples/test.png b/samples/LinuxRunSamples/3.1_nodep/samples/test.png new file mode 100644 index 0000000..b8699ad Binary files /dev/null and b/samples/LinuxRunSamples/3.1_nodep/samples/test.png differ diff --git a/samples/LinuxRunSamples/5.0/BuildTest.csproj b/samples/LinuxRunSamples/5.0/BuildTest.csproj new file mode 100644 index 0000000..032fc03 --- /dev/null +++ b/samples/LinuxRunSamples/5.0/BuildTest.csproj @@ -0,0 +1,19 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SkiaSharp.QrCode" Version="0.4.0" /> + <!-- require libfontconfig1 https://github.com/mono/SkiaSharp/issues/964#issuecomment-549385484 --> + <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.80.2" /> + </ItemGroup> + + <ItemGroup> + <None Update="samples\*.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> +</Project> diff --git a/samples/LinuxRunSamples/5.0/Program.cs b/samples/LinuxRunSamples/5.0/Program.cs new file mode 100644 index 0000000..dad664e --- /dev/null +++ b/samples/LinuxRunSamples/5.0/Program.cs @@ -0,0 +1,54 @@ +using SkiaSharp; +using System; +using System.IO; +using SkiaSharp.QrCode; +using SkiaSharp.QrCode.Models; + +namespace SkiaQrCodeSampleConsole +{ + class Program + { + static void Main(string[] args) + { + Directory.CreateDirectory("output"); + + var content = "testtesttest"; + using (var generator = new QRCodeGenerator()) + { + // Generate QrCode + var qr = generator.CreateQrCode(content, ECCLevel.L); + + // Render to canvas + var info = new SKImageInfo(512, 512); + using (var surface = SKSurface.Create(info)) + { + var canvas = surface.Canvas; + canvas.Render(qr, info.Width, info.Height); + + // gen color + // yellow https://rgb.to/yellow + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(60,100,50)); + // red https://rgb.to/red + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(0, 100, 50)); + + // gen icon + var logo = File.ReadAllBytes("samples/test.png"); + var icon = new IconData + { + Icon = SKBitmap.Decode(logo), + IconSizePercent = 10, + }; + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.Parse("000000"), icon); + + // Output to Stream -> File + using (var image = surface.Snapshot()) + using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) + using (var stream = File.OpenWrite(@"output/hoge.png")) + { + data.SaveTo(stream); + } + } + } + } + } +} diff --git a/samples/LinuxRunSamples/5.0/entrypoint.sh b/samples/LinuxRunSamples/5.0/entrypoint.sh new file mode 100644 index 0000000..7d177b0 --- /dev/null +++ b/samples/LinuxRunSamples/5.0/entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/bash -ex + +FRAMEWORK=netcoreapp3.1 +while [ $# -gt 0 ]; do + case $1 in + -f) FRAMEWORK=$2; shift 2; ;; + *) shift ;; + esac +done + +apt update && apt install -y libfontconfig1 + +dotnet run --csproj BuildTest.csproj -f "${FRAMEWORK}" diff --git a/samples/LinuxRunSamples/5.0/samples/test.png b/samples/LinuxRunSamples/5.0/samples/test.png new file mode 100644 index 0000000..b8699ad Binary files /dev/null and b/samples/LinuxRunSamples/5.0/samples/test.png differ diff --git a/samples/LinuxRunSamples/5.0_nodep/BuildTest.csproj b/samples/LinuxRunSamples/5.0_nodep/BuildTest.csproj new file mode 100644 index 0000000..e539ad5 --- /dev/null +++ b/samples/LinuxRunSamples/5.0_nodep/BuildTest.csproj @@ -0,0 +1,18 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SkiaSharp.QrCode" Version="0.4.0" /> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> + </ItemGroup> + + <ItemGroup> + <None Update="samples\*.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> +</Project> diff --git a/samples/LinuxRunSamples/5.0_nodep/Program.cs b/samples/LinuxRunSamples/5.0_nodep/Program.cs new file mode 100644 index 0000000..dad664e --- /dev/null +++ b/samples/LinuxRunSamples/5.0_nodep/Program.cs @@ -0,0 +1,54 @@ +using SkiaSharp; +using System; +using System.IO; +using SkiaSharp.QrCode; +using SkiaSharp.QrCode.Models; + +namespace SkiaQrCodeSampleConsole +{ + class Program + { + static void Main(string[] args) + { + Directory.CreateDirectory("output"); + + var content = "testtesttest"; + using (var generator = new QRCodeGenerator()) + { + // Generate QrCode + var qr = generator.CreateQrCode(content, ECCLevel.L); + + // Render to canvas + var info = new SKImageInfo(512, 512); + using (var surface = SKSurface.Create(info)) + { + var canvas = surface.Canvas; + canvas.Render(qr, info.Width, info.Height); + + // gen color + // yellow https://rgb.to/yellow + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(60,100,50)); + // red https://rgb.to/red + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.FromHsl(0, 100, 50)); + + // gen icon + var logo = File.ReadAllBytes("samples/test.png"); + var icon = new IconData + { + Icon = SKBitmap.Decode(logo), + IconSizePercent = 10, + }; + canvas.Render(qr, info.Width, info.Height, SKColor.Empty, SKColor.Parse("000000"), icon); + + // Output to Stream -> File + using (var image = surface.Snapshot()) + using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) + using (var stream = File.OpenWrite(@"output/hoge.png")) + { + data.SaveTo(stream); + } + } + } + } + } +} diff --git a/samples/LinuxRunSamples/5.0_nodep/entrypoint.sh b/samples/LinuxRunSamples/5.0_nodep/entrypoint.sh new file mode 100644 index 0000000..2b27e45 --- /dev/null +++ b/samples/LinuxRunSamples/5.0_nodep/entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash -ex + +FRAMEWORK=netcoreapp3.1 +while [ $# -gt 0 ]; do + case $1 in + -f) FRAMEWORK=$2; shift 2; ;; + *) shift ;; + esac +done + +dotnet run --csproj BuildTest.csproj -f "${FRAMEWORK}" diff --git a/samples/LinuxRunSamples/5.0_nodep/samples/test.png b/samples/LinuxRunSamples/5.0_nodep/samples/test.png new file mode 100644 index 0000000..b8699ad Binary files /dev/null and b/samples/LinuxRunSamples/5.0_nodep/samples/test.png differ diff --git a/samples/LinuxRunSamples/docker-compose.yaml b/samples/LinuxRunSamples/docker-compose.yaml new file mode 100644 index 0000000..882fd64 --- /dev/null +++ b/samples/LinuxRunSamples/docker-compose.yaml @@ -0,0 +1,30 @@ +version: "3" + +services: + netcoreapp3.1: + image: mcr.microsoft.com/dotnet/core/sdk:3.1 + command: bash -eux entrypoint.sh -f netcoreapp3.1 + working_dir: /src + volumes: + - ./3.1/:/src + + netcoreapp3.1_nodep: + image: mcr.microsoft.com/dotnet/core/sdk:3.1 + command: bash -eux entrypoint.sh -f netcoreapp3.1 + working_dir: /src + volumes: + - ./3.1_nodep/:/src + + net5.0: + image: mcr.microsoft.com/dotnet/sdk:5.0 + command: bash -eux entrypoint.sh -f net5.0 + working_dir: /src + volumes: + - ./5.0:/src + + net5.0__nodep: + image: mcr.microsoft.com/dotnet/sdk:5.0 + command: bash -eux entrypoint.sh -f net5.0 + working_dir: /src + volumes: + - ./5.0_nodep:/src diff --git a/samples/ManualGenerate/ManualGenerate.csproj b/samples/ManualGenerate/ManualGenerate.csproj index d847a5b..39a613d 100644 --- a/samples/ManualGenerate/ManualGenerate.csproj +++ b/samples/ManualGenerate/ManualGenerate.csproj @@ -6,7 +6,12 @@ </PropertyGroup> <ItemGroup> - <PackageReference Include="SkiaSharp.QrCode" Version="0.4.0" /> + <PackageReference Include="SkiaSharp" Version="2.80.2" /> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\src\SkiaSharp.QrCode\SkiaSharp.QrCode.csproj" /> </ItemGroup> <ItemGroup> diff --git a/samples/SimpleGenerate/SimpleGenerate.csproj b/samples/SimpleGenerate/SimpleGenerate.csproj index 520ee42..39a613d 100644 --- a/samples/SimpleGenerate/SimpleGenerate.csproj +++ b/samples/SimpleGenerate/SimpleGenerate.csproj @@ -7,8 +7,16 @@ <ItemGroup> <PackageReference Include="SkiaSharp" Version="2.80.2" /> - <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.80.2" /> - <PackageReference Include="SkiaSharp.QrCode" Version="0.4.0" /> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\src\SkiaSharp.QrCode\SkiaSharp.QrCode.csproj" /> + </ItemGroup> + + <ItemGroup> + <None Update="samples\*.png"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> </Project> diff --git a/src/SkiaSharp.QrCode/SkiaSharp.QrCode.csproj b/src/SkiaSharp.QrCode/SkiaSharp.QrCode.csproj index c30997b..b6918b8 100644 --- a/src/SkiaSharp.QrCode/SkiaSharp.QrCode.csproj +++ b/src/SkiaSharp.QrCode/SkiaSharp.QrCode.csproj @@ -23,7 +23,6 @@ <ItemGroup> <PackageReference Include="SkiaSharp" Version="2.80.2" /> - <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.80.2" /> </ItemGroup> <ItemGroup> diff --git a/tests/SkiaSharp.QrCode.Tests.net31/GenerateUnitTest.cs b/tests/SkiaSharp.QrCode.Tests.net31/GenerateUnitTest.cs index 6ef45b6..af339d5 100644 --- a/tests/SkiaSharp.QrCode.Tests.net31/GenerateUnitTest.cs +++ b/tests/SkiaSharp.QrCode.Tests.net31/GenerateUnitTest.cs @@ -55,6 +55,25 @@ public void IconGenerateUnitTest() Assert.True(actual.SequenceEqual(expect)); } + [Fact] + public void SKImageInfoTest() + { + var a = new SKImageInfo(); + Assert.NotNull(a); + var b = new SKImageInfo(100, 100); + Assert.NotNull(b); + foreach (SKColorType colorType in Enum.GetValues(typeof(SKColorType))) + { + var c = new SKImageInfo(100, 100, colorType); + Assert.NotNull(c); + foreach (SKAlphaType alphaType in Enum.GetValues(typeof(SKAlphaType))) + { + var d = new SKImageInfo(100, 100, colorType, alphaType); + Assert.NotNull(d); + } + } + } + private byte[] GenerateQrCode(string content, SKColor? color) { // Generate QrCode diff --git a/tests/SkiaSharp.QrCode.Tests.net31/SkiaSharp.QrCode.Tests.net31.csproj b/tests/SkiaSharp.QrCode.Tests.net31/SkiaSharp.QrCode.Tests.net31.csproj index b483ae3..a7b49e6 100644 --- a/tests/SkiaSharp.QrCode.Tests.net31/SkiaSharp.QrCode.Tests.net31.csproj +++ b/tests/SkiaSharp.QrCode.Tests.net31/SkiaSharp.QrCode.Tests.net31.csproj @@ -7,6 +7,7 @@ </PropertyGroup> <ItemGroup> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> diff --git a/tests/SkiaSharp.QrCode.Tests.net50/SkiaSharp.QrCode.Tests.net50.csproj b/tests/SkiaSharp.QrCode.Tests.net50/SkiaSharp.QrCode.Tests.net50.csproj index 89227c7..4950a6c 100644 --- a/tests/SkiaSharp.QrCode.Tests.net50/SkiaSharp.QrCode.Tests.net50.csproj +++ b/tests/SkiaSharp.QrCode.Tests.net50/SkiaSharp.QrCode.Tests.net50.csproj @@ -10,6 +10,7 @@ </ItemGroup> <ItemGroup> + <PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.80.2" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> <PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">