From 71ccba1492654f8b00a4d1db24e2ce619e2b4abf Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Mon, 8 Jan 2018 14:11:36 +0000 Subject: [PATCH 1/5] Better Support NetStandard --- .../PackagingTest.cs | 58 ++++--------------- .../Xamarin.Android.Common.props.in | 1 + .../Xamarin.Android.Common.targets | 4 ++ .../Xamarin.Android.PCLSupport.targets | 47 +++++++++------ 4 files changed, 45 insertions(+), 65 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs index 939906387e0..bc3058fd9e3 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs @@ -268,6 +268,7 @@ public void NetStandardReferenceTest () using System.Linq; using System.Text; using Newtonsoft.Json; +using System.IO.Packaging; using Xamarin.Forms; @@ -275,9 +276,12 @@ namespace XamFormsSample { public partial class App : Application { + Package package; + public App() { JsonConvert.DeserializeObject(""test""); + var package = Package.Open (""""); InitializeComponent(); } @@ -338,29 +342,13 @@ protected override void OnResume() "Java.Interop.dll", "Mono.Android.dll", "mscorlib.dll", - "mscorlib.dll.mdb", - "System.Collections.Concurrent.dll", - "System.Collections.dll", "System.Core.dll", - "System.Diagnostics.Debug.dll", "System.dll", - "System.Linq.dll", - "System.Reflection.dll", - "System.Reflection.Extensions.dll", - "System.Runtime.dll", - "System.Runtime.Extensions.dll", - "System.Runtime.InteropServices.dll", "System.Runtime.Serialization.dll", - "System.Threading.dll", "System.IO.Packaging.dll", - "System.IO.Compression.dll", - "System.IO.Compression.pdb", "Mono.Android.Export.dll", - "Mono.Android.Export.pdb", "App1.dll", - "App1.pdb", "FormsViewGroup.dll", - "FormsViewGroup.dll.mdb", "Xamarin.Android.Support.Compat.dll", "Xamarin.Android.Support.Core.UI.dll", "Xamarin.Android.Support.Core.Utils.dll", @@ -377,38 +365,14 @@ protected override void OnResume() "Xamarin.Android.Support.Annotations.dll", "Xamarin.Android.Support.v7.CardView.dll", "Xamarin.Forms.Core.dll", - "Xamarin.Forms.Core.dll.mdb", "Xamarin.Forms.Platform.Android.dll", - "Xamarin.Forms.Platform.Android.dll.mdb", "Xamarin.Forms.Platform.dll", "Xamarin.Forms.Xaml.dll", - "Xamarin.Forms.Xaml.dll.mdb", "XamFormsSample.dll", - "XamFormsSample.pdb", - "Mono.Android.pdb", - "System.Core.pdb", - "System.pdb", "Mono.Security.dll", - "Mono.Security.pdb", "System.Xml.dll", - "System.Xml.pdb", - "System.ComponentModel.Composition.dll", - "System.ComponentModel.Composition.pdb", "System.Net.Http.dll", - "System.Net.Http.pdb", - "System.Runtime.Serialization.pdb", "System.ServiceModel.Internals.dll", - "System.ServiceModel.Internals.pdb", - "System.Threading.Tasks.dll", - "System.ObjectModel.dll", - "System.Globalization.dll", - "System.ComponentModel.dll", - "System.Xml.ReaderWriter.dll", - "System.Linq.Expressions.dll", - "System.IO.dll", - "System.Dynamic.Runtime.dll", - "System.Text.RegularExpressions.dll", - "System.Diagnostics.Tools.dll", "Newtonsoft.Json.dll", "Microsoft.CSharp.dll", "System.Numerics.dll", @@ -418,12 +382,12 @@ protected override void OnResume() using (var builder = CreateDllBuilder (Path.Combine (path, netStandardProject.ProjectName), cleanupOnDispose: false)) { if (!Directory.Exists (builder.MicrosoftNetSdkDirectory)) Assert.Ignore ("Microsoft.NET.Sdk not found."); - builder.RequiresMSBuild = true; - builder.Target = "Restore"; - Assert.IsTrue (builder.Build (netStandardProject), "XamFormsSample Nuget packages should have been restored."); - builder.Target = "Build"; - Assert.IsTrue (builder.Build (netStandardProject), "XamFormsSample should have built."); using (var ab = CreateApkBuilder (Path.Combine (path, app.ProjectName), cleanupOnDispose: false)) { + builder.RequiresMSBuild = true; + builder.Target = "Restore"; + Assert.IsTrue (builder.Build (netStandardProject), "XamFormsSample Nuget packages should have been restored."); + builder.Target = "Build"; + Assert.IsTrue (builder.Build (netStandardProject), "XamFormsSample should have built."); ab.RequiresMSBuild = true; ab.Target = "Restore"; Assert.IsTrue (ab.Build (app), "App should have built."); @@ -433,8 +397,8 @@ protected override void OnResume() app.IntermediateOutputPath, "android", "bin", "UnnamedProject.UnnamedProject.apk"); using (var zip = ZipHelper.OpenZip (apk)) { var existingFiles = zip.Where (a => a.FullName.StartsWith ("assemblies/", StringComparison.InvariantCultureIgnoreCase)); - var missingFiles = expectedFiles.Where (x => !zip.ContainsEntry ("assmelbies/" + Path.GetFileName (x))); - Assert.IsTrue (missingFiles.Any (), + var missingFiles = expectedFiles.Where (x => !zip.ContainsEntry ("assemblies/" + Path.GetFileName (x))); + Assert.IsFalse (missingFiles.Any (), string.Format ("The following Expected files are missing. {0}", string.Join (Environment.NewLine, missingFiles))); var additionalFiles = existingFiles.Where (x => !expectedFiles.Contains (Path.GetFileName (x.FullName))); diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in index 9335e0758a1..c677e6362fa 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in @@ -3,6 +3,7 @@ @PACKAGE_VERSION@-@PACKAGE_VERSION_BUILD@ <_JavaInteropReferences>Java.Interop;System.Runtime true + false true true 1.8.0 diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 4b633b48140..783149749b2 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -1567,6 +1567,10 @@ because xbuild doesn't support framework reference assemblies. DependsOnTargets="SetWearAppTargetToPackageForAndroid;Build;_CopyPackage" /> + + + + + true true true @@ -14,32 +15,42 @@ GetReferenceAssemblyPaths + + - + + + <_XACandidateNETStandardReferences Include="@(Reference);@(_ResolvedProjectReferencePaths)" /> + <_XAInboxNETStandardFolders Include="$(TargetFrameworkDirectory)" /> + + <_HasReferenceToSystemRuntime Condition="'$(DependsOnSystemRuntime)' == 'true' or '%(_ResolvedProjectReferencePaths.TargetPlatformIdentifier)' == 'Portable' or '%(ReferenceDependencyPaths.Filename)' == 'System.Runtime'">true + <_XANETStandardInbox Condition="'$(XI_NETStandardInbox)' == '' and Exists('%(XI_InboxNETStandardFolders.Identity)\netstandard.dll')">true - - <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)*.dll"/> - - - - - - - - - + + + + - - <_DesignTimeFacadeAssemblies_Names Remove="@(_ReferencePath_Names)"/> - - + + <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)*.dll"/> + + false false ImplicitlyExpandDesignTimeFacades From b3b4c4ac4dca2c966f44b01cdda347d742382314 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Thu, 18 Jan 2018 11:11:01 +0000 Subject: [PATCH 2/5] ff --- .../Xamarin.Android.Common.targets | 4 ---- .../Xamarin.Android.PCLSupport.targets | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 783149749b2..4b633b48140 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -1567,10 +1567,6 @@ because xbuild doesn't support framework reference assemblies. DependsOnTargets="SetWearAppTargetToPackageForAndroid;Build;_CopyPackage" /> - - - - + + + + + <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)*.dll"/> From 06a3a265ce441db5b3d245661af4d038e9daa370 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Wed, 7 Feb 2018 16:16:25 +0000 Subject: [PATCH 3/5] Removed more comments --- .../Xamarin.Android.PCLSupport.targets | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets index d4cfeb31855..e4d5eb74589 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets @@ -47,11 +47,6 @@ - - - - - <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)*.dll"/> @@ -65,4 +60,4 @@ - \ No newline at end of file + From fee1b94da5dcc15309dd37eaf91cc79b3c97a943 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Fri, 23 Feb 2018 14:59:12 +0000 Subject: [PATCH 4/5] Fixes based on feedback --- .../Xamarin.Android.PCLSupport.targets | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets index e4d5eb74589..cdaa9ab2e78 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.PCLSupport.targets @@ -2,7 +2,7 @@ - true + <_IsXBuild Condition="'$(MSBuildRuntimeVersion)' == ''">true true true @@ -18,7 +18,7 @@ @@ -42,7 +42,7 @@ If $(_HasReferenceToSystemRuntime) is true, then the facades are going to be expanded anyway, so don't run this. --> From 47ef4b37ec28c92d1c4eff50977cfeb5ddaa0b17 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Mon, 26 Feb 2018 16:30:09 +0000 Subject: [PATCH 5/5] Fixed package variable in unit test --- .../Tests/Xamarin.Android.Build.Tests/PackagingTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs index bc3058fd9e3..e77fda6c915 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/PackagingTest.cs @@ -281,7 +281,7 @@ public partial class App : Application public App() { JsonConvert.DeserializeObject(""test""); - var package = Package.Open (""""); + package = Package.Open (""""); InitializeComponent(); }