From 6b19582945d584e4c4cdd5ff8fec8251c02ad1a2 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 19 Sep 2015 14:44:19 +0200 Subject: [PATCH 1/2] Store XAML in embedded resources. Instead of "Build Action: Resource" as xbuild on mono doesn't support this. We may change back later if we can get it supported. --- .../XamlTestApplication.csproj | 4 ++-- .../Perspex.Markup.Xaml/PerspexXamlLoader.cs | 17 ++++------------- src/Windows/Perspex.Win32/AssetLoader.cs | 17 ++--------------- 3 files changed, 8 insertions(+), 30 deletions(-) diff --git a/samples/XamlTestApplication/XamlTestApplication.csproj b/samples/XamlTestApplication/XamlTestApplication.csproj index b6f38e3b9d..66ec3c93d5 100644 --- a/samples/XamlTestApplication/XamlTestApplication.csproj +++ b/samples/XamlTestApplication/XamlTestApplication.csproj @@ -157,9 +157,9 @@ - + Designer - + diff --git a/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs b/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs index 3ebfaa3bcc..1d234058bb 100644 --- a/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs +++ b/src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs @@ -111,20 +111,11 @@ namespace Perspex.Markup.Xaml /// The URI. private static IEnumerable GetUrisFor(Type type) { - if (type.Namespace != null) + return new[] { - var toRemove = type.GetTypeInfo().Assembly.GetName().Name; - var substracted = toRemove.Length < type.Namespace.Length ? type.Namespace.Remove(0, toRemove.Length + 1) : ""; - var replace = substracted.Replace('.', '/'); - - if (replace != string.Empty) - { - replace = replace + "/"; - } - - foreach (var ext in new[] {".xaml", ".paml"}) - yield return new Uri(replace + type.Name + ext, UriKind.Relative); - } + new Uri(type.FullName + ".xaml", UriKind.Relative), + new Uri(type.FullName + ".paml", UriKind.Relative), + }; } } } diff --git a/src/Windows/Perspex.Win32/AssetLoader.cs b/src/Windows/Perspex.Win32/AssetLoader.cs index 843f0b8317..632c1612a2 100644 --- a/src/Windows/Perspex.Win32/AssetLoader.cs +++ b/src/Windows/Perspex.Win32/AssetLoader.cs @@ -26,20 +26,7 @@ namespace Perspex.Win32 public Stream Open(Uri uri) { var assembly = Assembly.GetEntryAssembly(); - var resourceName = assembly.GetName().Name + ".g"; - var manager = new ResourceManager(resourceName, assembly); - - using (var resourceSet = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true)) - { - var stream = (Stream)resourceSet.GetObject(uri.ToString(), true); - - if (stream == null) - { - throw new FileNotFoundException($"The requested asset could not be found: {uri}"); - } - - return stream; - } + return assembly.GetManifestResourceStream(uri.ToString()); } } -} +} \ No newline at end of file From 52a135c3b1bb3497e3c99c144d37a5f47c3f5e3e Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 19 Sep 2015 14:51:31 +0200 Subject: [PATCH 2/2] Load from embedded resources on GTK too. --- src/Gtk/Perspex.Gtk/AssetLoader.cs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/Gtk/Perspex.Gtk/AssetLoader.cs b/src/Gtk/Perspex.Gtk/AssetLoader.cs index d39b27d088..15aeb52d18 100644 --- a/src/Gtk/Perspex.Gtk/AssetLoader.cs +++ b/src/Gtk/Perspex.Gtk/AssetLoader.cs @@ -26,20 +26,7 @@ namespace Perspex.Gtk public Stream Open(Uri uri) { var assembly = Assembly.GetEntryAssembly(); - var resourceName = assembly.GetName().Name + ".g"; - var manager = new ResourceManager(resourceName, assembly); - - using (var resourceSet = manager.GetResourceSet(CultureInfo.CurrentCulture, true, true)) - { - var stream = (Stream)resourceSet.GetObject(uri.ToString(), true); - - if (stream == null) - { - throw new FileNotFoundException($"The requested asset could not be found: {uri}"); - } - - return stream; - } + return assembly.GetManifestResourceStream(uri.ToString()); } } }