Browse Source

Other changes after review

pull/9537/head
Max Katz 4 years ago
parent
commit
26c54b2301
  1. 5
      src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs
  2. 9
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/GroupTransformers/XamlIncludeGroupTransformer.cs

5
src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions; using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions;
using Avalonia.Platform;
using Microsoft.Build.Framework; using Microsoft.Build.Framework;
using Mono.Cecil; using Mono.Cecil;
using Mono.Cecil.Cil; using Mono.Cecil.Cil;
@ -134,6 +135,10 @@ namespace Avalonia.Build.Tasks
engine.LogMessage("Debugging cancelled.", MessageImportance.Normal); engine.LogMessage("Debugging cancelled.", MessageImportance.Normal);
} }
} }
// Some transformers might need to parse "avares://" Uri.
AssetLoader.RegisterResUriParsers();
var asm = typeSystem.TargetAssemblyDefinition; var asm = typeSystem.TargetAssemblyDefinition;
var avares = new AvaloniaResources(asm, projectDirectory); var avares = new AvaloniaResources(asm, projectDirectory);
if (avares.Resources.Count(CheckXamlName) == 0) if (avares.Resources.Count(CheckXamlName) == 0)

9
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/GroupTransformers/XamlIncludeGroupTransformer.cs

@ -45,22 +45,17 @@ internal class AvaloniaXamlIncludeTransformer : IXamlAstGroupTransformer
return node; return node;
} }
if (originalAssetPath.StartsWith("avares://")) if (originalAssetPath.StartsWith("/"))
{
}
else if (originalAssetPath.StartsWith("/"))
{ {
var baseUrl = context.CurrentDocument.Uri ?? throw new InvalidOperationException("CurrentDocument URI is null."); var baseUrl = context.CurrentDocument.Uri ?? throw new InvalidOperationException("CurrentDocument URI is null.");
originalAssetPath = baseUrl.Substring(0, baseUrl.LastIndexOf('/')) + originalAssetPath; originalAssetPath = baseUrl.Substring(0, baseUrl.LastIndexOf('/')) + originalAssetPath;
} }
else else if (!originalAssetPath.StartsWith("avares://"))
{ {
return context.ParseError( return context.ParseError(
$"Avalonia supports only \"avares://\" sources or relative sources starting with \"/\" on the \"{nodeTypeName}\" node.", $"Avalonia supports only \"avares://\" sources or relative sources starting with \"/\" on the \"{nodeTypeName}\" node.",
node); node);
} }
AssetLoader.RegisterResUriParsers();
originalAssetPath = Uri.UnescapeDataString(new Uri(originalAssetPath).AbsoluteUri); originalAssetPath = Uri.UnescapeDataString(new Uri(originalAssetPath).AbsoluteUri);
var assetPath = originalAssetPath.Replace("avares://", ""); var assetPath = originalAssetPath.Replace("avares://", "");

Loading…
Cancel
Save