I have the following simple project:
using ImageMagick;
using SkiaSharp;
using System;
namespace ConsoleApp1
{
public class Program
{
public static void Main(string[] args)
{
MagickImageInfo info = new MagickImageInfo();
info.Read("photo.jpg");
Console.WriteLine($"Magick.NET: {info.Width}x{info.Height}px");
var image = SKImage.FromEncodedData(@"photo.jpg");
var bm = SKBitmap.FromImage(image);
Console.WriteLine($"SkiaSharp: {bm.Width}x{bm.Height}px");
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Magick.NET.Core" version="14.2.0" targetFramework="net48" />
<package id="Magick.NET-Q16-HDRI-x64" version="14.2.0" targetFramework="net48" />
<package id="SkiaSharp" version="2.88.9" targetFramework="net48" />
<package id="SkiaSharp.NativeAssets.macOS" version="2.88.9" targetFramework="net48" />
<package id="SkiaSharp.NativeAssets.Win32" version="2.88.9" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net48" />
</packages>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4965314B-8FB0-448D-93EF-804B3B4873BA}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>ConsoleApp1</RootNamespace>
<AssemblyName>ConsoleApp1</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>C:\path\to\published-clickonce-release\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>8</ApplicationRevision>
<ApplicationVersion>1.2.3.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup>
<ManifestTimestampUrl>http://timestamp.digicert.com</ManifestTimestampUrl>
</PropertyGroup>
<PropertyGroup>
<SignAssembly>false</SignAssembly>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>xxx</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<ItemGroup>
<Reference Include="Magick.NET-Q16-HDRI-x64, Version=14.2.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=AMD64">
<HintPath>..\packages\Magick.NET-Q16-HDRI-x64.14.2.0\lib\netstandard20\Magick.NET-Q16-HDRI-x64.dll</HintPath>
</Reference>
<Reference Include="Magick.NET.Core, Version=14.2.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=MSIL">
<HintPath>..\packages\Magick.NET.Core.14.2.0\lib\netstandard20\Magick.NET.Core.dll</HintPath>
</Reference>
<Reference Include="SkiaSharp, Version=2.88.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\SkiaSharp.2.88.9\lib\net462\SkiaSharp.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="ClickOncePublishment.msbuild">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="photo.jpg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.8 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Magick.NET-Q16-HDRI-x64.14.2.0\build\netstandard20\Magick.NET-Q16-HDRI-x64.targets" Condition="Exists('..\packages\Magick.NET-Q16-HDRI-x64.14.2.0\build\netstandard20\Magick.NET-Q16-HDRI-x64.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Magick.NET-Q16-HDRI-x64.14.2.0\build\netstandard20\Magick.NET-Q16-HDRI-x64.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Magick.NET-Q16-HDRI-x64.14.2.0\build\netstandard20\Magick.NET-Q16-HDRI-x64.targets'))" />
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets'))" />
<Error Condition="!Exists('..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets'))" />
</Target>
<Import Project="..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.macOS.2.88.9\build\net462\SkiaSharp.NativeAssets.macOS.targets')" />
<Import Project="..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('..\packages\SkiaSharp.NativeAssets.Win32.2.88.9\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
</Project>
I can publish and sign this project successfully directly with Visual Studio 2022 using the Signing and Publish section in the project settings.
I have to automate that process with MSBuild tasks (without using Visualn Studio manually), especially the GenerateApplicationManifest step:
<Project DefaultTargets="GenerateManifests" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PackagedFilesDirectory>.</PackagedFilesDirectory>
<ExecutableFilename>ConsoleApp1.exe</ExecutableFilename>
<ConfigFilename>$(ExecutableFilename).config</ConfigFilename>
<ApplicationManifestFilename>$(ExecutableFilename).manifest</ApplicationManifestFilename>
</PropertyGroup>
<ItemGroup>
<EntryPoint Include="$(PackagedFilesDirectory)/$(ExecutableFilename)">
<TargetPath>$(ExecutableFilename)</TargetPath>
</EntryPoint>
<!--<Dependency Include="$(PackagedFilesDirectory)\**\*.dll">
--><!--Exclude="$(PackagedFilesDirectory)\Magick.Native-Q16-HDRI-x64.dll"--><!--
<AssemblyType>Managed</AssemblyType>
<DependencyType>Install</DependencyType>
<TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
</Dependency>-->
<Dependency Include="$(PackagedFilesDirectory)\Magick.Native-Q16-HDRI-x64.dll">
<AssemblyType>Native</AssemblyType>
<DependencyType>Install</DependencyType>
<TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
</Dependency>
<Dependency Include="$(PackagedFilesDirectory)/x64/libSkiaSharp.dll">
<AssemblyType>Native</AssemblyType>
<DependencyType>Install</DependencyType>
<TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
</Dependency>
<Dependency Include="$(PackagedFilesDirectory)\x86\libSkiaSharp.dll">
<AssemblyType>Native</AssemblyType>
<DependencyType>Install</DependencyType>
<TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
</Dependency>
<Dependency Include="$(PackagedFilesDirectory)\arm64\libSkiaSharp.dll">
<AssemblyType>Native</AssemblyType>
<DependencyType>Install</DependencyType>
<TargetPath>%(RecursiveDir)%(Filename)%(Extension)</TargetPath>
</Dependency>
</ItemGroup>
<Target Name="GenerateManifest">
<!-- Create application manifest -->
<GenerateApplicationManifest
AssemblyName="ConsoleApp1.exe"
AssemblyVersion="1.2.3.4"
ConfigFile="ConsoleApp1.exe.config"
Description="Console App Client"
Dependencies="@(Dependency)"
EntryPoint="@(EntryPoint)"
Files="@(File)"
OutputManifest="$(PackagedFilesDirectory)\$(ApplicationManifestFilename)"
Platform="x64"
Product="Console App Client"
Publisher="ACME">
</GenerateApplicationManifest>
</Target>
</Project>
I learned that I can mark some DLLs as native inside of Dependency > AssemblyType.
Running a build works:
& "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" .\ConsoleApp1.sln "/p:Configuration=Release;Platform=x64;ApplicationVersion=1.2.3.4;Environment=Test" "/t:Restore;Clean;Rebuild" "/verbosity:minimal"
MSBuild-Version 17.12.6+db5f6012c für .NET Framework
Wiederherzustellende Projekte werden ermittelt...
ConsoleApp1 -> C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ConsoleApp1.exe
The MSBuild task to generate the manifest fails with an error MSB3171:
C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release> & "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" ./ClickOncePublishment.msbuild /t:GenerateManifest /property:AssemblyVersion=1.2.3.4 /property:DeploymentUrl=\\path\to\somewhere /property:Product="Acme-Client 64-bit" /property:Platform=x64
MSBuild-Version 17.12.6+db5f6012c für .NET Framework
Der Buildvorgang wurde am 26.11.2024 10:18:00 gestartet.
Die Erstellung des Projekts "C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ClickOncePublishment.msbuild" ist abgeschlossen, GenerateManifest Ziel(e)
-- FEHLER.
Fehler beim Buildvorgang.
"C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ClickOncePublishment.msbuild" (GenerateManifest Ziel) (1) ->
(GenerateManifest Ziel) ->
C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ClickOncePublishment.msbuild(49,5): error MSB3171: Problem beim Generieren des Manifests. Die Datei oder Assembly "C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\x64\libSkiaSharp.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ClickOncePublishment.msbuild(49,5): error MSB3171: Problem beim Generieren des Manifests. Die Datei oder Assembly "C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\Magick.Native-Q16-HDRI-x64.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ClickOncePublishment.msbuild(49,5): error MSB3171: Problem beim Generieren des Manifests. Die Datei oder Assembly "C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\arm64\libSkiaSharp.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\ClickOncePublishment.msbuild(49,5): error MSB3171: Problem beim Generieren des Manifests. Die Datei oder Assembly "C:\...\ConsoleApp1\ConsoleApp1\bin\x64\Release\x86\libSkiaSharp.dll" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
0 Warnung(en)
4 Fehler
(english: "Could not load file or assembly '*.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.")
I don't see a problem with a specific DLL, because it doesn't work with multiple different DLLs from different projects. The manifest generation works from Visual Studio. I am running the publishing step on the same machine as the MSBuild task. The DLL itself is not corrupted and does its job. Putting non-native DLLs into the manifest works. Marking the native DLLs as "Managed" does not work either.
The correct manifest would be:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<asmv1:assemblyIdentity name="ConsoleApp1.exe" version="1.2.3.8" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="amd64" type="win32" />
<application />
<entryPoint>
<assemblyIdentity name="ConsoleApp1" version="1.0.0.0" language="neutral" processorArchitecture="amd64" />
<commandLine file="ConsoleApp1.exe" parameters="" />
</entryPoint>
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet version="1" class="System.Security.NamedPermissionSet" Name="LocalIntranet" Description="Default rights given to applications on the local intranet" ID="Custom" SameSite="site">
<IPermission Read="USERNAME" version="1" class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<IPermission version="1" class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Unrestricted="true" />
<IPermission version="1" Permanent="True" Expiry="9223372036854775807" UserQuota="9223372036854775807" Allowed="AssemblyIsolationByUser" class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<IPermission version="1" class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Flags="ReflectionEmit, RestrictedMemberAccess" />
<IPermission version="1" class="System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Flags="Assertion, Execution, BindingRedirects" />
<IPermission version="1" class="System.Security.Permissions.UIPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Unrestricted="true" />
<IPermission version="1" class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Level="DefaultPrinting" />
<IPermission version="1" class="System.Security.Permissions.MediaPermission, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Audio="SafeAudio" Image="SafeImage" Video="SafeVideo" />
<IPermission version="1" class="System.Security.Permissions.WebBrowserPermission, WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Level="Safe" />
<IPermission version="1" class="System.Net.DnsPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Unrestricted="true" />
<IPermission version="1" class="System.Security.Permissions.TypeDescriptorPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Unrestricted="true" />
</PermissionSet>
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
</security>
</trustInfo>
<dependency>
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
<assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="4.0.30319.0" />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="ConsoleApp1.exe" size="4096">
<assemblyIdentity name="ConsoleApp1" version="1.0.0.0" language="neutral" processorArchitecture="amd64" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>niWdT26A895yuMleQfgsBQBSOtv3UM5lth/uruyHma0=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Magick.NET.Core.dll" size="1527592">
<assemblyIdentity name="Magick.NET.Core" version="14.2.0.0" publicKeyToken="2004825BADFA91EC" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>d0+KN/+66+8C8h1R7O0fU62zOnIL7ae8X4C1ACHMm1Y=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Magick.NET-Q16-HDRI-x64.dll" size="811816">
<assemblyIdentity name="Magick.NET-Q16-HDRI-x64" version="14.2.0.0" publicKeyToken="2004825BADFA91EC" language="neutral" processorArchitecture="amd64" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>32+oirD9Nbv+ozVgJIj6gYZ5Pz/ihw4gNdg4Wscgzm4=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="SkiaSharp.dll" size="806464">
<assemblyIdentity name="SkiaSharp" version="2.88.0.0" publicKeyToken="0738EB9F132ED756" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>5ww8h2/H/LM6NXOEMQdkkOrkfTSBM7rQgI1qv1pxYFY=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
...
</asmv1:assembly>