diff --git a/build.cake b/build.cake index 6ca5395c4a..aa76c806ea 100644 --- a/build.cake +++ b/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("\"{"))) diff --git a/src/Avalonia.DotNetCoreRuntime/AppBuilder.cs b/src/Avalonia.DotNetCoreRuntime/AppBuilder.cs index 4223f7e10b..5a6b82573b 100644 --- a/src/Avalonia.DotNetCoreRuntime/AppBuilder.cs +++ b/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(); } } \ No newline at end of file diff --git a/src/Avalonia.DotNetCoreRuntime/Avalonia.DotNetCoreRuntime.csproj b/src/Avalonia.DotNetCoreRuntime/Avalonia.DotNetCoreRuntime.csproj index 7fbed97ad4..8a60d5d9c7 100644 --- a/src/Avalonia.DotNetCoreRuntime/Avalonia.DotNetCoreRuntime.csproj +++ b/src/Avalonia.DotNetCoreRuntime/Avalonia.DotNetCoreRuntime.csproj @@ -61,6 +61,14 @@ {eb582467-6abb-43a1-b052-e981ba910e3a} Avalonia.Visuals + + {bb1f7bb5-6ad4-4776-94d9-c09d0a972658} + Avalonia.Gtk3 + + + {7d2d3083-71dd-4cc9-8907-39a0d86fb322} + Avalonia.Skia.Desktop.NetStandard + {40759a76-d0f2-464e-8000-6ff0f5c4bd7c} Avalonia.Win32.NetStandard