Browse Source

Fix some new error/warnings from .NET 8

pull/14533/head
Max Katz 3 years ago
parent
commit
7cab284b89
  1. 4
      build/TrimmingEnable.props
  2. 7
      src/Avalonia.Controls.ColorPicker/Helpers/ColorHelper.cs
  3. 10
      src/Avalonia.Remote.Protocol/MetsysBson.cs
  4. 4
      src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevDevice.cs
  5. 1
      src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj
  6. 3
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs
  7. 2
      src/Windows/Avalonia.Win32/Avalonia.Win32.csproj
  8. 3
      src/Windows/Avalonia.Win32/OleDataObject.cs
  9. 4
      src/Windows/Avalonia.Win32/WindowImpl.cs
  10. 1
      src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj

4
build/TrimmingEnable.props

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))"> <PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<IsAotCompatible>true</IsAotCompatible> <IsAotCompatible Condition="'$(IsAotCompatible)' == ''">true</IsAotCompatible>
</PropertyGroup> </PropertyGroup>
<!-- Remove check for the AOT when we get rid of dependencies with reflection --> <!-- Remove check for the AOT when we get rid of dependencies with reflection -->
@ -17,7 +17,7 @@
<!-- Trim warnings --> <!-- Trim warnings -->
<WarningsAsErrors>$(WarningsAsErrors);IL2000;IL2001;IL2002;IL2003;IL2004;IL2005;IL2006;IL2007;IL2008;IL2009;IL2010;IL2011;IL2012;IL2013;IL2014;IL2015;IL2016;IL2017;IL2018;IL2019;IL2020;IL2021;IL2022;IL2023;IL2024;IL2025;IL2026;IL2027;IL2028;IL2029;IL2030;IL2031;IL2032;IL2033;IL2034;IL2035;IL2036;IL2037;IL2038;IL2039;IL2040;IL2041;IL2042;IL2043;IL2044;IL2045;IL2046;IL2047;IL2048;IL2049;IL2050;IL2051;IL2052;IL2053;IL2054;IL2055;IL2056;IL2057;IL2058;IL2059;IL2060;IL2061;IL2062;IL2063;IL2064;IL2065;IL2066;IL2067;IL2068;IL2069;IL2070;IL2071;IL2072;IL2073;IL2074;IL2075;IL2076;IL2077;IL2078;IL2079;IL2080;IL2081;IL2082;IL2083;IL2084;IL2085;IL2086;IL2087;IL2088;IL2089;IL2090;IL2091;IL2092;IL2093;IL2094;IL2095;IL2096;IL2097;IL2098;IL2099;IL2100;IL2101;IL2102;IL2103;IL2104;IL2105;IL2106;IL2107;IL2108;IL2109;IL2110;IL2111;IL2112;IL2113;IL2114;IL2115;IL2116;IL2117;IL2118;IL2119;IL2120;IL2121;IL2122;IL2123;IL2124;IL2125;IL2126;IL2127;IL2128;IL2129;IL2130;IL2131;IL2132;IL2133;IL2134;IL2135;IL2136;IL2137;IL2138;IL2139;IL2140;IL2141;IL2142;IL2143;IL2144;IL2145;IL2146;IL2147;IL2148;IL2149;IL2150;IL2151;IL2152;IL2153;IL2154;IL2155;IL2156;IL2157</WarningsAsErrors> <WarningsAsErrors>$(WarningsAsErrors);IL2000;IL2001;IL2002;IL2003;IL2004;IL2005;IL2006;IL2007;IL2008;IL2009;IL2010;IL2011;IL2012;IL2013;IL2014;IL2015;IL2016;IL2017;IL2018;IL2019;IL2020;IL2021;IL2022;IL2023;IL2024;IL2025;IL2026;IL2027;IL2028;IL2029;IL2030;IL2031;IL2032;IL2033;IL2034;IL2035;IL2036;IL2037;IL2038;IL2039;IL2040;IL2041;IL2042;IL2043;IL2044;IL2045;IL2046;IL2047;IL2048;IL2049;IL2050;IL2051;IL2052;IL2053;IL2054;IL2055;IL2056;IL2057;IL2058;IL2059;IL2060;IL2061;IL2062;IL2063;IL2064;IL2065;IL2066;IL2067;IL2068;IL2069;IL2070;IL2071;IL2072;IL2073;IL2074;IL2075;IL2076;IL2077;IL2078;IL2079;IL2080;IL2081;IL2082;IL2083;IL2084;IL2085;IL2086;IL2087;IL2088;IL2089;IL2090;IL2091;IL2092;IL2093;IL2094;IL2095;IL2096;IL2097;IL2098;IL2099;IL2100;IL2101;IL2102;IL2103;IL2104;IL2105;IL2106;IL2107;IL2108;IL2109;IL2110;IL2111;IL2112;IL2113;IL2114;IL2115;IL2116;IL2117;IL2118;IL2119;IL2120;IL2121;IL2122;IL2123;IL2124;IL2125;IL2126;IL2127;IL2128;IL2129;IL2130;IL2131;IL2132;IL2133;IL2134;IL2135;IL2136;IL2137;IL2138;IL2139;IL2140;IL2141;IL2142;IL2143;IL2144;IL2145;IL2146;IL2147;IL2148;IL2149;IL2150;IL2151;IL2152;IL2153;IL2154;IL2155;IL2156;IL2157</WarningsAsErrors>
<!-- NativeAOT warnings --> <!-- NativeAOT warnings -->
<WarningsAsErrors>$(WarningsAsErrors);IL3050;IL3051;IL3052;IL3053;IL3054;IL3055;IL3056</WarningsAsErrors> <WarningsAsErrors Condition="'$(IsAotCompatible)' == 'true'">$(WarningsAsErrors);IL3050;IL3051;IL3052;IL3053;IL3054;IL3055;IL3056</WarningsAsErrors>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

7
src/Avalonia.Controls.ColorPicker/Helpers/ColorHelper.cs

@ -15,7 +15,12 @@ namespace Avalonia.Controls.Primitives
private static readonly Dictionary<KnownColor, string> _cachedKnownColorNames = new Dictionary<KnownColor, string>(); private static readonly Dictionary<KnownColor, string> _cachedKnownColorNames = new Dictionary<KnownColor, string>();
private static readonly object _displayNameCacheMutex = new object(); private static readonly object _displayNameCacheMutex = new object();
private static readonly object _knownColorCacheMutex = new object(); private static readonly object _knownColorCacheMutex = new object();
private static readonly KnownColor[] _knownColors = (KnownColor[])Enum.GetValues(typeof(KnownColor)); private static readonly KnownColor[] _knownColors =
#if NET6_0_OR_GREATER
Enum.GetValues<KnownColor>();
#else
(KnownColor[])Enum.GetValues(typeof(KnownColor));
#endif
/// <summary> /// <summary>
/// Gets the relative (perceptual) luminance/brightness of the given color. /// Gets the relative (perceptual) luminance/brightness of the given color.

10
src/Avalonia.Remote.Protocol/MetsysBson.cs

@ -73,6 +73,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class Serializer internal class Serializer
{ {
private static readonly IDictionary<Type, Types> _typeMap = new Dictionary<Type, Types> private static readonly IDictionary<Type, Types> _typeMap = new Dictionary<Type, Types>
@ -615,6 +616,8 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class MagicProperty internal class MagicProperty
{ {
private readonly PropertyInfo _property; private readonly PropertyInfo _property;
@ -689,6 +692,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class TypeHelper internal class TypeHelper
{ {
private static readonly IDictionary<Type, TypeHelper> _cachedTypeLookup = new Dictionary<Type, TypeHelper>(); private static readonly IDictionary<Type, TypeHelper> _cachedTypeLookup = new Dictionary<Type, TypeHelper>();
@ -791,6 +795,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class ListWrapper : BaseWrapper internal class ListWrapper : BaseWrapper
{ {
private IList _list; private IList _list;
@ -826,6 +831,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal static class ListHelper internal static class ListHelper
{ {
public static Type GetListItemType(Type enumerableType) public static Type GetListItemType(Type enumerableType)
@ -871,6 +877,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class CollectionWrapper<T> : BaseWrapper internal class CollectionWrapper<T> : BaseWrapper
{ {
private ICollection<T> _list; private ICollection<T> _list;
@ -899,6 +906,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal abstract class BaseWrapper internal abstract class BaseWrapper
{ {
public static BaseWrapper Create(Type type, Type itemType, object existingContainer) public static BaseWrapper Create(Type type, Type itemType, object existingContainer)
@ -956,6 +964,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class ArrayWrapper<T> : BaseWrapper internal class ArrayWrapper<T> : BaseWrapper
{ {
private readonly List<T> _list = new List<T>(); private readonly List<T> _list = new List<T>();
@ -1008,6 +1017,7 @@ namespace Metsys.Bson
namespace Metsys.Bson namespace Metsys.Bson
{ {
[RequiresUnreferencedCode("Bson uses reflection")] [RequiresUnreferencedCode("Bson uses reflection")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "Bson uses reflection")]
internal class Deserializer internal class Deserializer
{ {
internal class Options internal class Options

4
src/Linux/Avalonia.LinuxFramebuffer/Input/EvDev/EvDevDevice.cs

@ -20,7 +20,11 @@ namespace Avalonia.LinuxFramebuffer.Input.EvDev
Fd = fd; Fd = fd;
_dev = dev; _dev = dev;
Name = Marshal.PtrToStringAnsi(NativeUnsafeMethods.libevdev_get_name(_dev)); Name = Marshal.PtrToStringAnsi(NativeUnsafeMethods.libevdev_get_name(_dev));
#if NET6_0_OR_GREATER
foreach (EvType type in Enum.GetValues<EvType>())
#else
foreach (EvType type in Enum.GetValues(typeof(EvType))) foreach (EvType type in Enum.GetValues(typeof(EvType)))
#endif
{ {
if (NativeUnsafeMethods.libevdev_has_event_type(dev, type) != 0) if (NativeUnsafeMethods.libevdev_has_event_type(dev, type) != 0)
EventTypes.Add(type); EventTypes.Add(type);

1
src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj

@ -3,6 +3,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks> <TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<IsAotCompatible>false</IsAotCompatible>
<DefineConstants>$(DefineConstants);XAMLX_INTERNAL;XAML_RUNTIME_LOADER</DefineConstants> <DefineConstants>$(DefineConstants);XAMLX_INTERNAL;XAML_RUNTIME_LOADER</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

3
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/CompiledBindings/CompiledBindingPath.cs

@ -255,7 +255,8 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings
{ {
Method = MethodBase.GetMethodFromHandle(method) as MethodInfo Method = MethodBase.GetMethodFromHandle(method) as MethodInfo
?? throw new ArgumentException("Invalid method handle", nameof(method)); ?? throw new ArgumentException("Invalid method handle", nameof(method));
DelegateType = Type.GetTypeFromHandle(delegateType); DelegateType = Type.GetTypeFromHandle(delegateType)
?? throw new ArgumentException("Unexpected null returned from Type.GetTypeFromHandle in MethodAsDelegateElement");
} }
public MethodInfo Method { get; } public MethodInfo Method { get; }

2
src/Windows/Avalonia.Win32/Avalonia.Win32.csproj

@ -2,6 +2,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks> <TargetFrameworks>net6.0;netstandard2.0</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<!-- We still keep BinaryFormatter for WinForms compatibility. -->
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" /> <PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />

3
src/Windows/Avalonia.Win32/OleDataObject.cs

@ -41,6 +41,7 @@ namespace Avalonia.Win32
} }
[UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "We still use BinaryFormatter for WinForms dragndrop compatability")] [UnconditionalSuppressMessage("Trimming", "IL2026", Justification = "We still use BinaryFormatter for WinForms dragndrop compatability")]
[UnconditionalSuppressMessage("Trimming", "IL3050", Justification = "We still use BinaryFormatter for WinForms dragndrop compatability")]
private unsafe object? GetDataFromOleHGLOBAL(string format, DVASPECT aspect) private unsafe object? GetDataFromOleHGLOBAL(string format, DVASPECT aspect)
{ {
var formatEtc = new Interop.FORMATETC(); var formatEtc = new Interop.FORMATETC();
@ -75,8 +76,8 @@ namespace Avalonia.Win32
using (var ms = new MemoryStream(data)) using (var ms = new MemoryStream(data))
{ {
ms.Position = DataObject.SerializedObjectGUID.Length; ms.Position = DataObject.SerializedObjectGUID.Length;
BinaryFormatter binaryFormatter = new BinaryFormatter();
#pragma warning disable SYSLIB0011 // Type or member is obsolete #pragma warning disable SYSLIB0011 // Type or member is obsolete
BinaryFormatter binaryFormatter = new BinaryFormatter();
return binaryFormatter.Deserialize(ms); return binaryFormatter.Deserialize(ms);
#pragma warning restore SYSLIB0011 // Type or member is obsolete #pragma warning restore SYSLIB0011 // Type or member is obsolete
} }

4
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
@ -536,7 +536,7 @@ namespace Avalonia.Win32
return PixelSize.Empty; return PixelSize.Empty;
} }
DwmGetWindowAttribute(_hwnd, (int)DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS, out var clientRect, Marshal.SizeOf(typeof(RECT))); DwmGetWindowAttribute(_hwnd, (int)DwmWindowAttribute.DWMWA_EXTENDED_FRAME_BOUNDS, out var clientRect, Marshal.SizeOf<RECT>());
GetWindowRect(_hwnd, out var frameRect); GetWindowRect(_hwnd, out var frameRect);
var borderWidth = GetSystemMetrics(SystemMetric.SM_CXBORDER); var borderWidth = GetSystemMetrics(SystemMetric.SM_CXBORDER);

1
src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj

@ -3,6 +3,7 @@
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFrameworks>net461;netstandard2.0;net6.0</TargetFrameworks> <TargetFrameworks>net461;netstandard2.0;net6.0</TargetFrameworks>
<DefineConstants>$(DefineConstants);XAMLX_INTERNAL</DefineConstants> <DefineConstants>$(DefineConstants);XAMLX_INTERNAL</DefineConstants>
<IsAotCompatible>false</IsAotCompatible>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Avalonia.DesignerSupport\Avalonia.DesignerSupport.csproj" /> <ProjectReference Include="..\..\Avalonia.DesignerSupport\Avalonia.DesignerSupport.csproj" />

Loading…
Cancel
Save