diff --git a/src/Avalonia.Base/Avalonia.Base.csproj b/src/Avalonia.Base/Avalonia.Base.csproj index abc4ed80d8..e10f13d628 100644 --- a/src/Avalonia.Base/Avalonia.Base.csproj +++ b/src/Avalonia.Base/Avalonia.Base.csproj @@ -7,7 +7,9 @@ false - + + false + diff --git a/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs b/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs index d9dc36001c..c7d1e47148 100644 --- a/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs +++ b/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs @@ -9,10 +9,7 @@ using System.Runtime.Serialization.Json; namespace Avalonia.Utilities { - #if !BUILDTASK - public - #endif - static class AvaloniaResourcesIndexReaderWriter + public static class AvaloniaResourcesIndexReaderWriter { private const int LastKnownVersion = 1; public static List Read(Stream stream) diff --git a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj index acaaa34462..6b697a9028 100644 --- a/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj +++ b/src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj @@ -4,6 +4,7 @@ netstandard2.0 tools $(DefineConstants);BUILDTASK + false @@ -15,6 +16,4 @@ - - diff --git a/src/Avalonia.Build.Tasks/BuildEngineErrorCode.cs b/src/Avalonia.Build.Tasks/BuildEngineErrorCode.cs new file mode 100644 index 0000000000..3b8a390881 --- /dev/null +++ b/src/Avalonia.Build.Tasks/BuildEngineErrorCode.cs @@ -0,0 +1,9 @@ +namespace Avalonia.Build.Tasks +{ + public enum BuildEngineErrorCode + { + InvalidXAML = 1, + DuplicateXClass = 2, + LegacyResmScheme = 3, + } +} diff --git a/src/Avalonia.Build.Tasks/Extensions.cs b/src/Avalonia.Build.Tasks/Extensions.cs index d86c5a5b48..faecee0f37 100644 --- a/src/Avalonia.Build.Tasks/Extensions.cs +++ b/src/Avalonia.Build.Tasks/Extensions.cs @@ -4,16 +4,18 @@ namespace Avalonia.Build.Tasks { public static class Extensions { - public static void LogError(this IBuildEngine engine, string file, string message) + static string FormatErrorCode(BuildEngineErrorCode code) => $"AVLN:{(int)code:0000}"; + + public static void LogError(this IBuildEngine engine, BuildEngineErrorCode code, string file, string message) { - engine.LogErrorEvent(new BuildErrorEventArgs("Avalonia", "0000", file ?? "", 0, 0, 0, 0, message, "", - "Avalonia")); + engine.LogErrorEvent(new BuildErrorEventArgs("Avalonia", FormatErrorCode(code), file ?? "", 0, 0, 0, 0, message, + "", "Avalonia")); } - public static void LogWarning(this IBuildEngine engine, string file, string message) + public static void LogWarning(this IBuildEngine engine, BuildEngineErrorCode code, string file, string message) { - engine.LogWarningEvent(new BuildWarningEventArgs("Avalonia", "0000", file ?? "", 0, 0, 0, 0, message, "", - "Avalonia")); + engine.LogWarningEvent(new BuildWarningEventArgs("Avalonia", FormatErrorCode(code), file ?? "", 0, 0, 0, 0, message, + "", "Avalonia")); } } } diff --git a/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs b/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs index 57cde0bf12..98ebb3e7d1 100644 --- a/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs +++ b/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs @@ -67,7 +67,7 @@ namespace Avalonia.Build.Tasks List BuildResourceSources() => Resources.Select(r => new Source(r.ItemSpec, Root)).ToList(); - void Pack(Stream output, List sources) + private void Pack(Stream output, List sources) { var offsets = new Dictionary(); var coffset = 0; @@ -94,7 +94,7 @@ namespace Avalonia.Build.Tasks } } - bool PreProcessXamlFiles(List sources) + private bool PreProcessXamlFiles(List sources) { var typeToXamlIndex = new Dictionary(); @@ -109,7 +109,7 @@ namespace Avalonia.Build.Tasks } catch(Exception e) { - BuildEngine.LogError(s.SystemPath, "File doesn't contain valid XAML: " + e); + BuildEngine.LogError(BuildEngineErrorCode.InvalidXAML, s.SystemPath, "File doesn't contain valid XAML: " + e); return false; } @@ -118,7 +118,7 @@ namespace Avalonia.Build.Tasks if (typeToXamlIndex.ContainsKey(info.XClass)) { - BuildEngine.LogError(s.SystemPath, + BuildEngine.LogError(BuildEngineErrorCode.DuplicateXClass, s.SystemPath, $"Duplicate x:Class directive, {info.XClass} is already used in {typeToXamlIndex[info.XClass]}"); return false; } @@ -140,7 +140,8 @@ namespace Avalonia.Build.Tasks public bool Execute() { foreach(var r in EmbeddedResources.Where(r=>r.ItemSpec.EndsWith(".xaml")||r.ItemSpec.EndsWith(".paml"))) - BuildEngine.LogWarning(r.ItemSpec, "XAML file is packed using legacy EmbeddedResource/resm scheme, relative URIs won't work"); + BuildEngine.LogWarning(BuildEngineErrorCode.LegacyResmScheme, r.ItemSpec, + "XAML file is packed using legacy EmbeddedResource/resm scheme, relative URIs won't work"); var resources = BuildResourceSources(); if (!PreProcessXamlFiles(resources)) diff --git a/src/Shared/PlatformSupport/AssetLoader.cs b/src/Shared/PlatformSupport/AssetLoader.cs index cea607040d..22d702967b 100644 --- a/src/Shared/PlatformSupport/AssetLoader.cs +++ b/src/Shared/PlatformSupport/AssetLoader.cs @@ -296,60 +296,60 @@ namespace Avalonia.Shared.PlatformSupport } class SlicedStream : Stream - { - private readonly Stream _baseStream; - private readonly int _from; - - public SlicedStream(Stream baseStream, int from, int length) - { - Length = length; - _baseStream = baseStream; - _from = from; - _baseStream.Position = from; - } - public override void Flush() - { - } + { + private readonly Stream _baseStream; + private readonly int _from; - public override int Read(byte[] buffer, int offset, int count) - { - return _baseStream.Read(buffer, offset, (int)Math.Min(count, Length - Position)); - } + public SlicedStream(Stream baseStream, int from, int length) + { + Length = length; + _baseStream = baseStream; + _from = from; + _baseStream.Position = from; + } + public override void Flush() + { + } - public override long Seek(long offset, SeekOrigin origin) - { - if (origin == SeekOrigin.Begin) - Position = offset; - if (origin == SeekOrigin.End) - Position = _from + Length + offset; - if (origin == SeekOrigin.Current) - Position = Position + offset; - return Position; - } + public override int Read(byte[] buffer, int offset, int count) + { + return _baseStream.Read(buffer, offset, (int)Math.Min(count, Length - Position)); + } - public override void SetLength(long value) => throw new NotSupportedException(); + public override long Seek(long offset, SeekOrigin origin) + { + if (origin == SeekOrigin.Begin) + Position = offset; + if (origin == SeekOrigin.End) + Position = _from + Length + offset; + if (origin == SeekOrigin.Current) + Position = Position + offset; + return Position; + } - public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException(); + public override void SetLength(long value) => throw new NotSupportedException(); - public override bool CanRead => true; - public override bool CanSeek => _baseStream.CanRead; - public override bool CanWrite => false; - public override long Length { get; } - public override long Position - { - get => _baseStream.Position - _from; - set => _baseStream.Position = value + _from; - } + public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException(); - protected override void Dispose(bool disposing) - { - if (disposing) - _baseStream.Dispose(); - } + public override bool CanRead => true; + public override bool CanSeek => _baseStream.CanRead; + public override bool CanWrite => false; + public override long Length { get; } + public override long Position + { + get => _baseStream.Position - _from; + set => _baseStream.Position = value + _from; + } - public override void Close() => _baseStream.Close(); + protected override void Dispose(bool disposing) + { + if (disposing) + _baseStream.Dispose(); } + public override void Close() => _baseStream.Close(); + } + private class AssemblyDescriptor { public AssemblyDescriptor(Assembly assembly)