Prechádzať zdrojové kódy

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.
Steven Kirk 10 rokov pred
rodič
commit
6b19582945

+ 2 - 2
samples/XamlTestApplication/XamlTestApplication.csproj

@@ -157,9 +157,9 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />
-    <Resource Include="Views\MainWindow.xaml">
+    <EmbeddedResource Include="Views\MainWindow.xaml">
       <SubType>Designer</SubType>
-    </Resource>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="..\..\src\Shared\perspex.platform.targets" />

+ 4 - 13
src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs

@@ -111,20 +111,11 @@ namespace Perspex.Markup.Xaml
         /// <returns>The URI.</returns>
         private static IEnumerable<Uri> 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),
+            };
         }
     }
 }

+ 2 - 15
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());
         }
     }
-}
+}