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)