diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index cf6afbe620..0ce2a1a992 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -91,6 +91,7 @@ + diff --git a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs index 0419db5d0f..de2a79c54e 100644 --- a/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs +++ b/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoaderPortableXaml.cs @@ -127,7 +127,19 @@ namespace Avalonia.Markup.Xaml using (var stream = assetLocator.Open(uri, baseUri)) { - return Load(stream, rootInstance, uri); + try + { + return Load(stream, rootInstance, uri); + } + catch (Exception e) + { + var uriString = uri.ToString(); + if (!uri.IsAbsoluteUri) + { + uriString = new Uri(baseUri, uri).AbsoluteUri; + } + throw new XamlLoadException("Error loading xaml at " + uriString, e); + } } } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlLoadException.cs b/src/Markup/Avalonia.Markup.Xaml/XamlLoadException.cs new file mode 100644 index 0000000000..e66b8ddf54 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/XamlLoadException.cs @@ -0,0 +1,24 @@ +using System; +using System.Runtime.Serialization; + +namespace Avalonia.Markup.Xaml +{ + public class XamlLoadException: Exception + { + public XamlLoadException() + { + } + + protected XamlLoadException(SerializationInfo info, StreamingContext context): base(info, context) + { + } + + public XamlLoadException(string message): base(message) + { + } + + public XamlLoadException(string message, Exception innerException): base(message, innerException) + { + } + } +} \ No newline at end of file