Przeglądaj źródła

Added package for GTK3 and "fixed" platform detector for .NET Core

Nikita Tsukanov 8 lat temu
rodzic
commit
d0e6915542

+ 24 - 1
build.cake

@@ -500,6 +500,23 @@ var nuspecNuGetSettingsDesktop = new []
         OutputDirectory = nugetRoot
     },
     ///////////////////////////////////////////////////////////////////////////////
+    // Avalonia.Gtk3
+    ///////////////////////////////////////////////////////////////////////////////
+    new NuGetPackSettings()
+    {
+        Id = "Avalonia.Gtk3",
+        Dependencies = new []
+        {
+            new NuSpecDependency() { Id = "Avalonia", Version = version }
+        },
+        Files = new []
+        {
+            new NuSpecContent { Source = "Avalonia.Gtk3.dll", Target = "lib/netstandard1.1" }
+        },
+        BasePath = Directory("./src/Gtk/Avalonia.Gtk3/bin/" + dirSuffix),
+        OutputDirectory = nugetRoot
+    },
+    ///////////////////////////////////////////////////////////////////////////////
     // Avalonia.Cairo
     ///////////////////////////////////////////////////////////////////////////////
     new NuGetPackSettings()
@@ -630,7 +647,13 @@ Task("Clean")
 Task("Prepare-XBuild-Solution")
     .Does(() =>
 {
-    var blacklistedProjects = new[]{"Avalonia.Win32.NetStandard", "Avalonia.DotNetCoreRuntime", "Avalonia.Skia.Desktop.NetStandard"};
+    var blacklistedProjects = new[]
+    {
+        "Avalonia.Win32.NetStandard",
+        "Avalonia.DotNetCoreRuntime",
+        "Avalonia.Skia.Desktop.NetStandard",
+        "Avalonia.Gtk3"
+    };
     var blacklistedGuids = System.IO.File.ReadAllLines(MSBuildSolution)
         .Where(l=>l.StartsWith("Project") && blacklistedProjects.Any(p=>l.Contains(p)))
         .Select(l => l.Split(',').Select(part => part.Trim()).FirstOrDefault(part => part.StartsWith("\"{")))

+ 8 - 5
src/Avalonia.DotNetCoreRuntime/AppBuilder.cs

@@ -36,15 +36,18 @@ namespace Avalonia
         {
             //We don't have the ability to load every assembly right now, so we are
             //stuck with manual configuration  here
+            //Helpers are extracted to separate methods to take the advantage of the fact
+            //that CLR doesn't try to load dependencies before referencing method is jitted
             if (RuntimePlatform.GetRuntimeInfo().OperatingSystem == OperatingSystemType.WinNT)
-                this.UseWin32();
+                LoadWin32();
             else
-            {
-                //TODO: Register GTK3
-            }
-            //TODO: Register Skia#
+                LoadGtk3();
+            this.UseSkia();
 
             return this;
         }
+
+        void LoadWin32() => this.UseWin32();
+        void LoadGtk3() => this.UseGtk3();
     }
 }

+ 8 - 0
src/Avalonia.DotNetCoreRuntime/Avalonia.DotNetCoreRuntime.csproj

@@ -61,6 +61,14 @@
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
       <Name>Avalonia.Visuals</Name>
     </ProjectReference>
+    <ProjectReference Include="..\Gtk\Avalonia.Gtk3\Avalonia.Gtk3.csproj">
+      <Project>{bb1f7bb5-6ad4-4776-94d9-c09d0a972658}</Project>
+      <Name>Avalonia.Gtk3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Skia\Avalonia.Skia.Desktop.NetStandard\Avalonia.Skia.Desktop.NetStandard.csproj">
+      <Project>{7d2d3083-71dd-4cc9-8907-39a0d86fb322}</Project>
+      <Name>Avalonia.Skia.Desktop.NetStandard</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Windows\Avalonia.Win32.NetStandard\Avalonia.Win32.NetStandard.csproj">
       <Project>{40759a76-d0f2-464e-8000-6ff0f5c4bd7c}</Project>
       <Name>Avalonia.Win32.NetStandard</Name>