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