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