From a5467c31e574010bd09644372b4c396dc8d7ef09 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 31 Jan 2017 20:47:00 +0300 Subject: [PATCH] Downgrade to .NETStandard1.5 --- build.cake | 5 +-- .../NetCoreRuntimePlatform.cs | 40 +++++++++---------- src/Avalonia.DotNetCoreRuntime/project.json | 10 ++--- 3 files changed, 25 insertions(+), 30 deletions(-) diff --git a/build.cake b/build.cake index 9311c3e20e..9ece1f85ba 100644 --- a/build.cake +++ b/build.cake @@ -311,8 +311,7 @@ var nuspecNuGetSettingsCore = new [] new NuSpecDependency() { Id = "Sprache", Version = SpracheVersion }, new NuSpecDependency() { Id = "System.Reactive", Version = SystemReactiveVersion }, new NuSpecDependency() { Id = "System.Threading.ThreadPool", TargetFramework = "netcoreapp1.0", Version = "4.3.0" }, - new NuSpecDependency() { Id = "Microsoft.Extensions.DependencyModel", TargetFramework = "netcoreapp1.0", Version = "1.1.0" }, - new NuSpecDependency() { Id = "NETStandard.Library", TargetFramework = "netcoreapp1.0", Version = "1.6.1" }, + new NuSpecDependency() { Id = "NETStandard.Library", TargetFramework = "netcoreapp1.0", Version = "1.6.0" }, new NuSpecDependency() { Id = "Microsoft.NETCore.Portable.Compatibility", TargetFramework = "netcoreapp1.0", Version = "1.0.1" } }, Files = coreLibrariesNuSpecContent @@ -792,7 +791,7 @@ Task("Zip-Files") }); Task("Create-NuGet-Packages") - //.IsDependentOn("Build") + .IsDependentOn("Run-Unit-Tests") .Does(() => { foreach(var nuspec in nuspecNuGetSettings) diff --git a/src/Avalonia.DotNetCoreRuntime/NetCoreRuntimePlatform.cs b/src/Avalonia.DotNetCoreRuntime/NetCoreRuntimePlatform.cs index fef2b90c1f..971663fad9 100644 --- a/src/Avalonia.DotNetCoreRuntime/NetCoreRuntimePlatform.cs +++ b/src/Avalonia.DotNetCoreRuntime/NetCoreRuntimePlatform.cs @@ -5,8 +5,6 @@ using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; -using Microsoft.DotNet.PlatformAbstractions; -using Microsoft.Extensions.DependencyModel; namespace Avalonia.Shared.PlatformSupport { @@ -14,31 +12,33 @@ namespace Avalonia.Shared.PlatformSupport { public Assembly[] GetLoadedAssemblies() { - List assemblies = new List(); - // Mostly copy-pasted from (MIT): - // https://github.com/StefH/System.AppDomain.Core/blob/0b35e676c2721aa367b96e62eb52c97ee0b43a70/src/System.AppDomain.NetCoreApp/AppDomain.cs - foreach (var assemblyName in DependencyContext.Default.GetRuntimeAssemblyNames(RuntimeEnvironment.GetRuntimeIdentifier())) + + var rv = new List(); + var entry = Assembly.GetEntryAssembly(); + rv.Add(entry); + var queue = new Queue(entry.GetReferencedAssemblies()); + var aset = new HashSet(queue.Select(r => r.ToString())); + + while (queue.Count > 0) { + Assembly asm; try { - try - { - var assembly = Assembly.Load(assemblyName); - // just load all types and skip this assembly if one or more types cannot be resolved - assembly.DefinedTypes.ToArray(); - assemblies.Add(assembly); - } - catch (Exception ex) - { - Debug.Write(ex.Message); - } + asm = Assembly.Load(queue.Dequeue()); + } + catch (Exception e) + { + Debug.Write(e.ToString()); + continue; } - catch (Exception ex) + rv.Add(asm); + foreach (var r in asm.GetReferencedAssemblies()) { - Debug.Write(ex.Message); + if (aset.Add(r.ToString())) + queue.Enqueue(r); } } - return assemblies.OrderBy(a => a.FullName).ToArray(); + return rv.Distinct().ToArray(); } } } diff --git a/src/Avalonia.DotNetCoreRuntime/project.json b/src/Avalonia.DotNetCoreRuntime/project.json index cb1eadede4..d6ae90b33b 100644 --- a/src/Avalonia.DotNetCoreRuntime/project.json +++ b/src/Avalonia.DotNetCoreRuntime/project.json @@ -2,14 +2,10 @@ "supports": {}, "dependencies": { "Microsoft.NETCore.Portable.Compatibility": "1.0.1", - "NETStandard.Library": "1.6.1" + "NETStandard.Library": "1.6.0", + "System.Threading.ThreadPool": "4.3.0" }, "frameworks": { - "netstandard1.6": { - "dependencies": { - "System.Threading.ThreadPool": "4.3.0", - "Microsoft.Extensions.DependencyModel": "1.1.0" - } - } + "netstandard1.5": {} } } \ No newline at end of file