diff --git a/Agents/Xamarin.Interactive.Android/AndroidAgent.cs b/Agents/Xamarin.Interactive.Android/AndroidAgent.cs
index b79461ecf..05d948541 100644
--- a/Agents/Xamarin.Interactive.Android/AndroidAgent.cs
+++ b/Agents/Xamarin.Interactive.Android/AndroidAgent.cs
@@ -36,7 +36,6 @@ class AndroidAgent : Agent, IViewHierarchyHandler
AG.Point displaySize;
int contentId;
- string deviceIpAddress;
public IActivityTracker ActivityTracker { get; set; }
internal int ContentId => contentId;
diff --git a/Agents/Xamarin.Interactive.Android/InspectorSupport.cs b/Agents/Xamarin.Interactive.Android/InspectorSupport.cs
index c48b0e290..a583dede2 100644
--- a/Agents/Xamarin.Interactive.Android/InspectorSupport.cs
+++ b/Agents/Xamarin.Interactive.Android/InspectorSupport.cs
@@ -5,6 +5,8 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using System;
+using System.Runtime.CompilerServices;
using System.Threading;
using Android.App;
@@ -14,13 +16,14 @@
namespace Xamarin
{
- public static partial class InspectorSupport
+ public static class InspectorSupport
{
static readonly SynchronizationContext mainContext = Application.SynchronizationContext;
static Timer timer;
static readonly ActivityTrackerWrapper activityTracker = new ActivityTrackerWrapper ();
+ static Agent agent;
- static partial void CreateAgent (AgentStartOptions startOptions)
+ static void CreateAgent (AgentStartOptions startOptions)
{
mainContext.Post (
s => {
@@ -44,5 +47,32 @@ internal static void StartBreakdance ()
1000,
Timeout.Infinite);
}
+
+ static void Start ()
+ {
+ try {
+ CreateAgent (new AgentStartOptions {
+ AgentStarted = AgentStarted,
+ });
+ } catch (Exception e) {
+ Console.Error.WriteLine (e);
+ }
+ }
+
+ internal static void Stop ()
+ {
+ agent?.Dispose ();
+ agent = null;
+ }
+
+ [MethodImpl (MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
+ static void BreakdanceStep ()
+ {
+ }
+
+ [MethodImpl (MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
+ internal static void AgentStarted (string agentConnectUri)
+ {
+ }
}
}
diff --git a/Agents/Xamarin.Interactive.Android/Xamarin.Interactive.Android.csproj b/Agents/Xamarin.Interactive.Android/Xamarin.Interactive.Android.csproj
index 31efb6036..424c1a255 100644
--- a/Agents/Xamarin.Interactive.Android/Xamarin.Interactive.Android.csproj
+++ b/Agents/Xamarin.Interactive.Android/Xamarin.Interactive.Android.csproj
@@ -69,8 +69,6 @@
Xamarin.Interactive
-
-
diff --git a/Agents/Xamarin.Interactive.Console/Xamarin.Interactive.Console.csproj b/Agents/Xamarin.Interactive.Console/Xamarin.Interactive.Console.csproj
index 2549156dc..6950f79a1 100644
--- a/Agents/Xamarin.Interactive.Console/Xamarin.Interactive.Console.csproj
+++ b/Agents/Xamarin.Interactive.Console/Xamarin.Interactive.Console.csproj
@@ -9,8 +9,7 @@
Xamarin.Interactive.Console
Xamarin.Interactive.Console
v4.6.1
-
- False
+ true
true
@@ -55,11 +54,6 @@
Xamarin.Interactive
-
-
-
-
-
diff --git a/Agents/Xamarin.Interactive.DotNetCore/Xamarin.Interactive.DotNetCore.csproj b/Agents/Xamarin.Interactive.DotNetCore/Xamarin.Interactive.DotNetCore.csproj
index b85fff9b7..61bf112a3 100644
--- a/Agents/Xamarin.Interactive.DotNetCore/Xamarin.Interactive.DotNetCore.csproj
+++ b/Agents/Xamarin.Interactive.DotNetCore/Xamarin.Interactive.DotNetCore.csproj
@@ -6,7 +6,7 @@
-
+
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Facades/Facades.cs b/Agents/Xamarin.Interactive.Facades/Facades.cs
deleted file mode 100644
index 666b2d807..000000000
--- a/Agents/Xamarin.Interactive.Facades/Facades.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// Author:
-// Aaron Bockover
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-namespace System
-{
- [AttributeUsage (
- AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate,
- Inherited = false)]
- sealed class SerializableAttribute : Attribute
- {
- }
-}
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Facades/Xamarin.Interactive.Facades.csproj b/Agents/Xamarin.Interactive.Facades/Xamarin.Interactive.Facades.csproj
deleted file mode 100644
index 894e0057d..000000000
--- a/Agents/Xamarin.Interactive.Facades/Xamarin.Interactive.Facades.csproj
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- true
- Library
- Xamarin.Interactive.Facades
- Xamarin.Interactive.Facades
- v4.5
- Profile111
-
-
- true
- full
- false
- bin\Debug
- DEBUG;PCL_FACADE_ASSEMBLY
- prompt
- 4
-
-
- true
- bin\Release
- PCL_FACADE_ASSEMBLY
- prompt
- 4
- pdbonly
- true
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsAgentIntegration.cs b/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsAgentIntegration.cs
index f55ed40af..f91b8791c 100644
--- a/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsAgentIntegration.cs
+++ b/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsAgentIntegration.cs
@@ -87,7 +87,7 @@ void ResetStateHandler ()
{
var activity = realAgent.ActivityTracker?.StartedActivities?.FirstOrDefault ();
var formsView = Xamarin.Forms.Application.Current.MainPage;
- var nativeViewGroup = Platform.GetRenderer (formsView).ViewGroup;
+ var nativeViewGroup = Platform.GetRenderer (formsView).View;
var parentToRestore = (ViewGroup) nativeViewGroup.Parent;
while (parentToRestore.Parent != null)
diff --git a/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsInspectView.cs b/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsInspectView.cs
index 02e172613..879f638d4 100644
--- a/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsInspectView.cs
+++ b/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsInspectView.cs
@@ -118,7 +118,7 @@ public AndroidFormsInspectView (Page page, bool useNativeViewBounds = false, boo
PopulateTypeInformationFromObject (page);
// TODO: Pull the ClassId or some user-set property as the description?
- var nativeView = Platform.GetRenderer (page).ViewGroup;
+ var nativeView = Platform.GetRenderer (page).View;
if (!useNativeViewBounds) {
Transform = XIVR.GetViewTransform (nativeView);
if (Transform == null) {
@@ -169,7 +169,7 @@ public AndroidFormsInspectView (Element element, bool withSubviews = true)
var velement = element as VisualElement;
if (velement != null) {
- var nativeView = Platform.GetRenderer (velement).ViewGroup;
+ var nativeView = Platform.GetRenderer (velement).View;
DisplayName = element.GetType ().Name;
try {
@@ -206,7 +206,7 @@ protected override void UpdateCapturedImage ()
// If the VisualElement is a view and is not a layout, snapshot its children,
// as we've reached the leaf of the tree. Otherwise, skip children.
var skipChildren = !(ve is View && !(ve is Layout));
- var nativeView = Platform.GetRenderer (ve).ViewGroup;
+ var nativeView = Platform.GetRenderer (ve).View;
if (nativeView != null)
CapturedImage = XIVR.RenderAsPng (nativeView, skipChildren);
}
diff --git a/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsViewHierarchyHandler.cs b/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsViewHierarchyHandler.cs
index da6571fb7..50204ad2d 100644
--- a/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsViewHierarchyHandler.cs
+++ b/Agents/Xamarin.Interactive.Forms.Android/AndroidFormsViewHierarchyHandler.cs
@@ -30,7 +30,7 @@ public AndroidFormsViewHierarchyHandler (AndroidAgent agent)
Rectangle GetNativeViewBounds (VisualElement visualElement)
{
- var nativeView = Platform.GetRenderer (visualElement).ViewGroup;
+ var nativeView = Platform.GetRenderer (visualElement).View;
var location = new int [2];
nativeView.GetLocationOnScreen (location);
@@ -54,7 +54,7 @@ void ResetHighlightOnView ()
void DrawHighlightOnView (VisualElement element)
{
- var view = Platform.GetRenderer (element).ViewGroup;
+ var view = Platform.GetRenderer (element).View;
highlightedView = view;
highlightedViewOriginalBackground = highlightedView.Background;
diff --git a/Agents/Xamarin.Interactive.Forms.Android/Xamarin.Interactive.Forms.Android.csproj b/Agents/Xamarin.Interactive.Forms.Android/Xamarin.Interactive.Forms.Android.csproj
index 8e0699f38..5b975a1cd 100644
--- a/Agents/Xamarin.Interactive.Forms.Android/Xamarin.Interactive.Forms.Android.csproj
+++ b/Agents/Xamarin.Interactive.Forms.Android/Xamarin.Interactive.Forms.Android.csproj
@@ -49,7 +49,7 @@
- 2.3.4.231
+ 2.4.0.38779
diff --git a/Agents/Xamarin.Interactive.Forms.iOS/Xamarin.Interactive.Forms.iOS.csproj b/Agents/Xamarin.Interactive.Forms.iOS/Xamarin.Interactive.Forms.iOS.csproj
index c2b25d551..cbc8fcc0b 100644
--- a/Agents/Xamarin.Interactive.Forms.iOS/Xamarin.Interactive.Forms.iOS.csproj
+++ b/Agents/Xamarin.Interactive.Forms.iOS/Xamarin.Interactive.Forms.iOS.csproj
@@ -50,7 +50,7 @@
- 2.3.4.231
+ 2.4.0.38779
diff --git a/Agents/Xamarin.Interactive.Forms/Xamarin.Interactive.Forms.csproj b/Agents/Xamarin.Interactive.Forms/Xamarin.Interactive.Forms.csproj
index 1b8db5f4a..c4bf5875b 100644
--- a/Agents/Xamarin.Interactive.Forms/Xamarin.Interactive.Forms.csproj
+++ b/Agents/Xamarin.Interactive.Forms/Xamarin.Interactive.Forms.csproj
@@ -1,59 +1,15 @@
-
-
+
- Debug
- AnyCPU
- 8.0.30703
- {932D2C61-5DBE-4D82-A4D6-1EA7401F10D3}
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- true
- Library
- Xamarin.Interactive.Forms
- Xamarin.Interactive.Forms
- v4.5
- Profile111
-
-
+ netstandard2.0
-
- true
- portable
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- true
-
-
- true
- bin\Release
- prompt
- 4
- true
- portable
- true
-
-
-
-
-
-
-
- 2.3.4.231
-
-
+
-
-
-
+
+
-
- {955F473A-04EC-4716-B75E-509BA892499B}
- Xamarin.Interactive
-
+
-
+
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Mac.Desktop/Xamarin.Interactive.Mac.Desktop.csproj b/Agents/Xamarin.Interactive.Mac.Desktop/Xamarin.Interactive.Mac.Desktop.csproj
index f77d61550..6fd194853 100644
--- a/Agents/Xamarin.Interactive.Mac.Desktop/Xamarin.Interactive.Mac.Desktop.csproj
+++ b/Agents/Xamarin.Interactive.Mac.Desktop/Xamarin.Interactive.Mac.Desktop.csproj
@@ -52,8 +52,6 @@
-
-
diff --git a/Agents/Xamarin.Interactive.Mac.Mobile/Xamarin.Interactive.Mac.Mobile.csproj b/Agents/Xamarin.Interactive.Mac.Mobile/Xamarin.Interactive.Mac.Mobile.csproj
index 5d4310c65..0083f14bc 100644
--- a/Agents/Xamarin.Interactive.Mac.Mobile/Xamarin.Interactive.Mac.Mobile.csproj
+++ b/Agents/Xamarin.Interactive.Mac.Mobile/Xamarin.Interactive.Mac.Mobile.csproj
@@ -52,8 +52,6 @@
-
-
diff --git a/Agents/Xamarin.Interactive.Mac/MacAgent.cs b/Agents/Xamarin.Interactive.Mac/MacAgent.cs
index 4f0327179..a756f20d6 100644
--- a/Agents/Xamarin.Interactive.Mac/MacAgent.cs
+++ b/Agents/Xamarin.Interactive.Mac/MacAgent.cs
@@ -23,6 +23,7 @@
using Xamarin.Interactive.Inspection;
using Xamarin.Interactive.Logging;
using Xamarin.Interactive.Remote;
+using Xamarin.Interactive.Unified;
namespace Xamarin.Interactive.Mac
{
@@ -51,6 +52,7 @@ public MacAgent ()
NSBundle.MainBundle.InfoDictionary ["CFBundleName"] as NSString);
RepresentationManager.AddProvider (new MacRepresentationProvider ());
+ new UnifiedNativeHelper ().Initialize ();
ViewHierarchyHandlerManager.AddViewHierarchyHandler ("AppKit", this);
}
diff --git a/Agents/Xamarin.Interactive/NativeExceptionHandler.cs b/Agents/Xamarin.Interactive.Mac/NativeExceptionHandler.cs
similarity index 88%
rename from Agents/Xamarin.Interactive/NativeExceptionHandler.cs
rename to Agents/Xamarin.Interactive.Mac/NativeExceptionHandler.cs
index fc6768a6e..901011a0a 100644
--- a/Agents/Xamarin.Interactive/NativeExceptionHandler.cs
+++ b/Agents/Xamarin.Interactive.Mac/NativeExceptionHandler.cs
@@ -7,17 +7,12 @@
// Licensed under the MIT License.
using System;
-
-#if IOS || MAC
-
using System.Runtime.InteropServices;
using ObjCRuntime;
using Foundation;
-#endif
-
-namespace Xamarin.Interactive
+namespace Xamarin.Interactive.Unified
{
static class NativeExceptionHandler
{
@@ -28,18 +23,15 @@ struct Disposable : IDisposable
public class TrappedNativeException : Exception
{
-#if IOS || MAC
public NSException NativeException { get; }
- public TrappedNativeException (NSException realException) :
- base ($"A native exception was thrown: {realException.Description}")
+ public TrappedNativeException (NSException realException) :
+ base ($"A native exception was thrown: {realException.Description}")
{
NativeException = realException;
}
-#endif
}
-#if IOS || MAC
[DllImport (Constants.ObjectiveCLibrary)]
static extern IntPtr objc_setExceptionPreprocessor (IntPtr handler);
@@ -73,13 +65,5 @@ public static void Release ()
originalHandler = IntPtr.Zero;
}
}
-#else
- public static IDisposable Trap ()
- => new Disposable ();
-
- public static void Release ()
- {
- }
-#endif
}
}
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Mac/UnifiedInspectorSupport.cs b/Agents/Xamarin.Interactive.Mac/UnifiedInspectorSupport.cs
index 12cfa7dda..77ee35c68 100644
--- a/Agents/Xamarin.Interactive.Mac/UnifiedInspectorSupport.cs
+++ b/Agents/Xamarin.Interactive.Mac/UnifiedInspectorSupport.cs
@@ -7,9 +7,8 @@
// Licensed under the MIT License.
using System;
-using System.Linq;
-using System.IO;
using System.Reflection;
+using System.Runtime.CompilerServices;
using Xamarin.Interactive;
using Xamarin.Interactive.Core;
@@ -22,23 +21,12 @@
namespace Xamarin
{
- // WARNING: this type must not _directly_ reference any type in the PCL!
- // Doing so will break live inspection since this type implements the
- // PCL loading (so _directly_ referencing a type in the PCL will cause
- // the debugger to fail to load the type because the loader cannot load)
- public static partial class InspectorSupport
+ public static class InspectorSupport
{
- #if IOS
- const string netProfilesPath = "/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono";
- #elif MAC
- const string netProfilesPath = "/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono";
- #endif
-
- static bool environmentDetected;
- static AssemblyName pclInteractiveAssemblyName;
- static string fxPath;
-
static IntPtr breakdanceTimerSource;
+ static Agent agent;
+
+ internal static Action AgentStartedHandler;
internal static void StartBreakdance ()
{
@@ -54,12 +42,10 @@ static void StopBreakdance ()
}
}
- static partial void CreateAgent (AgentStartOptions startOptions)
+ static void CreateAgent (AgentStartOptions startOptions)
{
StopBreakdance ();
- AppDomain.CurrentDomain.AssemblyResolve += HandleAssemblyResolve;
-
var source = IntPtr.Zero;
source = Dispatch.ScheduleRepeatingTimer (TimeSpan.FromSeconds (0), userdata => {
Dispatch.Cancel (source);
@@ -67,52 +53,35 @@ static partial void CreateAgent (AgentStartOptions startOptions)
});
}
- static void DetectEnvironment ()
+ static void Start ()
{
- if (environmentDetected)
- return;
-
- environmentDetected = true;
-
- var runningCorlibVersion = typeof (object).Assembly.GetName ().Version;
-
- foreach (var profilePath in new DirectoryInfo (netProfilesPath).EnumerateDirectories ()) {
- var corlibPath = Path.Combine (profilePath.FullName, "mscorlib.dll");
- if (File.Exists (corlibPath) &&
- AssemblyName.GetAssemblyName (corlibPath)?.Version == runningCorlibVersion) {
- fxPath = profilePath.FullName;
- break;
- }
+ try {
+ CreateAgent (new AgentStartOptions {
+ AgentStarted = AgentStarted,
+ });
+ } catch (Exception e) {
+ Console.Error.WriteLine (e);
}
-
- pclInteractiveAssemblyName = Assembly
- .GetExecutingAssembly ()
- .GetReferencedAssemblies ()
- .FirstOrDefault (a => a.Name == "Xamarin.Interactive");
}
- static Assembly HandleAssemblyResolve (object sender, ResolveEventArgs e)
+ internal static void Stop ()
{
- DetectEnvironment ();
-
- if (pclInteractiveAssemblyName == null || !Directory.Exists (fxPath))
- return null;
-
- var requestingAssemblyName = e.RequestingAssembly?.GetName ();
-
- if (requestingAssemblyName?.FullName != pclInteractiveAssemblyName.FullName)
- return null;
-
- var assemblyFileName = new AssemblyName (e.Name).Name + ".dll";
+ agent?.Dispose ();
+ agent = null;
+ }
- var assemblyPath = Path.Combine (fxPath, assemblyFileName);
- if (!File.Exists (assemblyPath)) {
- assemblyPath = Path.Combine (fxPath, "Facades", assemblyFileName);
- if (!File.Exists (assemblyPath))
- return null;
- }
+ [MethodImpl (MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
+ static void BreakdanceStep ()
+ {
+ }
- return Assembly.LoadFrom (assemblyPath);
+ [MethodImpl (MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
+ internal static void AgentStarted (string agentConnectUri)
+ {
+ // This handler is only ever used by the inspector support test.
+ // In normal use, the Inspector extension retrieves the URI by
+ // setting a breakpoint on the AgentStarted method.
+ AgentStartedHandler?.Invoke (agentConnectUri);
}
}
}
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Mac/UnifiedNativeHelper.cs b/Agents/Xamarin.Interactive.Mac/UnifiedNativeHelper.cs
new file mode 100644
index 000000000..dbe342d16
--- /dev/null
+++ b/Agents/Xamarin.Interactive.Mac/UnifiedNativeHelper.cs
@@ -0,0 +1,49 @@
+//
+// Author:
+// Aaron Bockover
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Reflection;
+
+using ObjCRuntime;
+using Foundation;
+
+using Xamarin.Interactive.Representations.Reflection;
+
+namespace Xamarin.Interactive.Unified
+{
+ sealed class UnifiedNativeHelper : NativeHelper
+ {
+ public override IDisposable TrapNativeExceptions () => NativeExceptionHandler.Trap ();
+
+ public override string CheckProperty (
+ PropertyInfo property,
+ object target,
+ RepresentedType declaringType)
+ {
+ if (!typeof (NSObject).IsAssignableFrom (declaringType.ResolvedType))
+ return null;
+
+ var selName = property
+ ?.GetGetMethod (true)
+ ?.GetCustomAttribute ()
+ ?.Selector;
+ if (selName == null)
+ return null;
+
+ var objCSelector = new Selector (selName);
+ if (objCSelector == null || objCSelector.Handle == IntPtr.Zero)
+ return null;
+
+ var nso = target as NSObject;
+ if (nso == null || nso.RespondsToSelector (objCSelector))
+ return null;
+
+ return string.Format ("{0} instance 0x{1:x} does not respond to selector {2}",
+ target.GetType (), nso.Handle, objCSelector.Name);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Mac/Xamarin.Interactive.Mac.projitems b/Agents/Xamarin.Interactive.Mac/Xamarin.Interactive.Mac.projitems
index 8de99e6fa..f833a570c 100644
--- a/Agents/Xamarin.Interactive.Mac/Xamarin.Interactive.Mac.projitems
+++ b/Agents/Xamarin.Interactive.Mac/Xamarin.Interactive.Mac.projitems
@@ -19,5 +19,7 @@
+
+
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.NetStandard/Xamarin.Interactive.NetStandard.csproj b/Agents/Xamarin.Interactive.NetStandard/Xamarin.Interactive.NetStandard.csproj
deleted file mode 100644
index 06faa1b2d..000000000
--- a/Agents/Xamarin.Interactive.NetStandard/Xamarin.Interactive.NetStandard.csproj
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
- netstandard2.0
- Xamarin.Interactive
- Xamarin.Interactive
- True
- True
-
-
- true
-
-
- true
-
-
-
- /Library/Frameworks/Mono.framework/Versions/Current/Commands/mono-cil-strip
- ..\..\Tools\ILFixer\ILFixer.csproj
- $(OutputPath)$(AssemblyName).dll
- $(OutputPath)ref\$(AssemblyName).dll
- $(OutputPath)ref-$(AssemblyName).dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.Wpf/InspectorSupport.cs b/Agents/Xamarin.Interactive.Wpf/InspectorSupport.cs
index c804b9fd4..c72932398 100644
--- a/Agents/Xamarin.Interactive.Wpf/InspectorSupport.cs
+++ b/Agents/Xamarin.Interactive.Wpf/InspectorSupport.cs
@@ -15,21 +15,19 @@
namespace Xamarin
{
- public static partial class InspectorSupport
+ public static class InspectorSupport
{
+ static Agent agent;
static string connectionInfoPipeHandle;
- static partial void CreateAgent (AgentStartOptions startOptions)
- {
- // NOTE: This needs to be called from the main thread
- agent = new WpfAgent ().Start (startOptions);
- }
-
public static void Start (string connectionInfoPipeHandle)
{
InspectorSupport.connectionInfoPipeHandle = connectionInfoPipeHandle;
- Start ();
+ // NOTE: This needs to be called from the main thread
+ agent = new WpfAgent ().Start (new AgentStartOptions {
+ AgentStarted = AgentStarted,
+ });
}
internal static void AgentStarted (string agentConnectUri)
diff --git a/Agents/Xamarin.Interactive.Wpf/Xamarin.Interactive.Wpf.csproj b/Agents/Xamarin.Interactive.Wpf/Xamarin.Interactive.Wpf.csproj
index 92cfe0865..a28c210d0 100644
--- a/Agents/Xamarin.Interactive.Wpf/Xamarin.Interactive.Wpf.csproj
+++ b/Agents/Xamarin.Interactive.Wpf/Xamarin.Interactive.Wpf.csproj
@@ -53,17 +53,15 @@
+
+
+
{955f473a-04ec-4716-b75e-509ba892499b}
Xamarin.Interactive
-
-
-
-
-
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive.iOS/Xamarin.Interactive.iOS.csproj b/Agents/Xamarin.Interactive.iOS/Xamarin.Interactive.iOS.csproj
index 00b92eef7..83f427623 100644
--- a/Agents/Xamarin.Interactive.iOS/Xamarin.Interactive.iOS.csproj
+++ b/Agents/Xamarin.Interactive.iOS/Xamarin.Interactive.iOS.csproj
@@ -43,8 +43,6 @@
-
-
@@ -56,6 +54,12 @@
UnifiedExtensions.cs
+
+ UnifiedNativeHelper.cs
+
+
+ NativeExceptionHandler.cs
+
UnifiedEvaluationContextGlobalObject.cs
diff --git a/Agents/Xamarin.Interactive.iOS/iOSAgent.cs b/Agents/Xamarin.Interactive.iOS/iOSAgent.cs
index d46fda4f0..a2f1f5eab 100644
--- a/Agents/Xamarin.Interactive.iOS/iOSAgent.cs
+++ b/Agents/Xamarin.Interactive.iOS/iOSAgent.cs
@@ -22,6 +22,7 @@
using Xamarin.Interactive.Core;
using Xamarin.Interactive.Inspection;
using Xamarin.Interactive.Remote;
+using Xamarin.Interactive.Unified;
namespace Xamarin.Interactive.iOS
{
@@ -39,6 +40,7 @@ public iOSAgent ()
screenHeight: (int)UIScreen.MainScreen.Bounds.Height);
RepresentationManager.AddProvider (new iOSRepresentationProvider ());
+ new UnifiedNativeHelper ().Initialize ();
ViewHierarchyHandlerManager.AddViewHierarchyHandler ("UIKit", this);
}
diff --git a/Agents/Xamarin.Interactive/API/Xamarin.Interactive.api.cs b/Agents/Xamarin.Interactive/API/Xamarin.Interactive.api.cs
index ba85cba61..7bd4a8658 100644
--- a/Agents/Xamarin.Interactive/API/Xamarin.Interactive.api.cs
+++ b/Agents/Xamarin.Interactive/API/Xamarin.Interactive.api.cs
@@ -1,4 +1,7 @@
+[assembly: AssemblyConfiguration ("Release")]
[assembly: AssemblyCopyright ("Copyright 2016-2017 Microsoft. All rights reserved.\nCopyright 2014-2016 Xamarin Inc. All rights reserved.")]
+[assembly: AssemblyProduct ("Xamarin.Interactive")]
+[assembly: AssemblyTitle ("Xamarin.Interactive")]
[assembly: InternalsVisibleTo ("Xamarin.Interactive.DotNetCore")]
[assembly: InternalsVisibleTo ("Xamarin.Interactive.Android")]
[assembly: InternalsVisibleTo ("Xamarin.Interactive.iOS")]
@@ -30,7 +33,7 @@
[assembly: InternalsVisibleTo ("Xamarin.Workbooks.Client.Android")]
[assembly: InternalsVisibleTo ("Xamarin.Interactive.XS")]
[assembly: InternalsVisibleTo ("Xamarin.Interactive.VS")]
-[assembly: TargetFramework (".NETPortable,Version=v4.5,Profile=Profile111", FrameworkDisplayName = ".NET Portable Subset")]
+[assembly: TargetFramework (".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: BuildInfo]
namespace Xamarin.Interactive
{
@@ -87,6 +90,24 @@ public interface IAgentSynchronizationContext
SynchronizationContext PushContext (SynchronizationContext context);
}
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public static class InteractiveCulture
+ {
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public static CultureInfo CurrentCulture {
+ get;
+ set;
+ }
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public static CultureInfo CurrentUICulture {
+ get;
+ set;
+ }
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public static void Initialize ();
+ }
}
namespace Xamarin.Interactive.CodeAnalysis
{
@@ -105,6 +126,56 @@ public struct CodeCellId : IEquatable
public override string ToString ();
}
+ public class EvaluationContextGlobalObject
+ {
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Clear all previous REPL results", ShowReturnType = false, LiveInspectOnly = true)]
+ public static readonly Guid clear;
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Get or set the current thread culture")]
+ public static CultureInfo CurrentCulture {
+ get;
+ set;
+ }
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Get or set the current thread culture by name")]
+ public static string CurrentCultureName {
+ get;
+ set;
+ }
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "This help text", ShowReturnType = false)]
+ public object help {
+ get;
+ }
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Direct public access to the agent powering the interactive session")]
+ public IAgent InteractiveAgent {
+ get;
+ }
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public T __AssignmentMonitor (T value, string symbolName, string nodeType, int spanStart, int spanEnd);
+
+ public T GetObject (long handle);
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Shows declared global variables", ShowReturnType = false)]
+ public object GetVars ();
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Render an image from a path or URI")]
+ public static Image Image (Uri uri);
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Render an image from a path or URI, or SVG data")]
+ public static Image Image (string uriOrTextData);
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Render an image from raw data")]
+ public static Image Image (byte[] data);
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Render an image from a stream")]
+ public static Task ImageAsync (Stream stream);
+
+ [EvaluationContextGlobalObject.InteractiveHelpAttribute (Description = "Uses a Stopwatch to time the specified action delegate")]
+ public static TimeSpan Time (Action action);
+ }
public struct EvaluationContextId : IEquatable
{
public static bool operator == (EvaluationContextId a, EvaluationContextId b);
diff --git a/Bootstrap/Xamarin.Interactive.Bootstrap/ClientSessionKind.cs b/Agents/Xamarin.Interactive/ClientSessionKind.cs
similarity index 100%
rename from Bootstrap/Xamarin.Interactive.Bootstrap/ClientSessionKind.cs
rename to Agents/Xamarin.Interactive/ClientSessionKind.cs
diff --git a/Bootstrap/Xamarin.Interactive.Bootstrap/ClientSessionUri.cs b/Agents/Xamarin.Interactive/ClientSessionUri.cs
similarity index 100%
rename from Bootstrap/Xamarin.Interactive.Bootstrap/ClientSessionUri.cs
rename to Agents/Xamarin.Interactive/ClientSessionUri.cs
diff --git a/Agents/Xamarin.Interactive/CodeAnalysis/EvaluationContextGlobalObject.cs b/Agents/Xamarin.Interactive/CodeAnalysis/EvaluationContextGlobalObject.cs
index 73f6e4a35..96f852075 100644
--- a/Agents/Xamarin.Interactive/CodeAnalysis/EvaluationContextGlobalObject.cs
+++ b/Agents/Xamarin.Interactive/CodeAnalysis/EvaluationContextGlobalObject.cs
@@ -103,8 +103,8 @@ ReplHelp GetCachedHelp ()
return cachedHelp;
}
- [InteractiveHelp (Description = "This help text")]
- public ReplHelp help => GetCachedHelp ();
+ [InteractiveHelp (Description = "This help text", ShowReturnType = false)]
+ public object help => GetCachedHelp ();
[InteractiveHelp (Description = "Direct public access to the agent powering the interactive session")]
public IAgent InteractiveAgent => agent;
diff --git a/Agents/Xamarin.Interactive/Core/Agent.cs b/Agents/Xamarin.Interactive/Core/Agent.cs
index d04f6411a..1617502e6 100644
--- a/Agents/Xamarin.Interactive/Core/Agent.cs
+++ b/Agents/Xamarin.Interactive/Core/Agent.cs
@@ -257,8 +257,7 @@ public Agent Start (AgentStartOptions startOptions = null)
Identity.Host,
Identity.Port);
- InspectorSupport.AgentStarted (ClientSessionUri);
- InspectorSupport.AgentStartedHandler?.Invoke (this);
+ startOptions?.AgentStarted?.Invoke (ClientSessionUri);
try {
var identifyAgentRequest = GetIdentifyAgentRequest ();
diff --git a/Agents/Xamarin.Interactive/Core/AgentStartOptions.cs b/Agents/Xamarin.Interactive/Core/AgentStartOptions.cs
index 940f6e92a..c13bd25df 100644
--- a/Agents/Xamarin.Interactive/Core/AgentStartOptions.cs
+++ b/Agents/Xamarin.Interactive/Core/AgentStartOptions.cs
@@ -5,13 +5,18 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using System;
+
using Xamarin.Interactive.Client;
namespace Xamarin.Interactive.Core
{
- public class AgentStartOptions
+ sealed class AgentStartOptions
{
internal ClientSessionKind? ClientSessionKind { get; set; }
+
public ushort? Port { get; set; }
+
+ public Action AgentStarted { get; set; }
}
}
\ No newline at end of file
diff --git a/Agents/Xamarin.Interactive/Core/TypeSpec.cs b/Agents/Xamarin.Interactive/Core/TypeSpec.cs
index beec8f860..c06602586 100644
--- a/Agents/Xamarin.Interactive/Core/TypeSpec.cs
+++ b/Agents/Xamarin.Interactive/Core/TypeSpec.cs
@@ -13,7 +13,7 @@
namespace Xamarin.Interactive.Core
{
[Serializable]
- public sealed class TypeSpec
+ sealed class TypeSpec
{
[Serializable]
public struct TypeName : IEquatable
diff --git a/Agents/Xamarin.Interactive/DebuggingSupport.cs b/Agents/Xamarin.Interactive/DebuggingSupport.cs
index 70080bd56..a307b5b37 100644
--- a/Agents/Xamarin.Interactive/DebuggingSupport.cs
+++ b/Agents/Xamarin.Interactive/DebuggingSupport.cs
@@ -26,7 +26,7 @@ static class DebuggingSupport
public static void LaunchClientAppForDebugging (Agent agent)
{
-#if !NETSTANDARD2_0 && DEBUG
+#if DEBUG
if (!Debugger.IsAttached)
return;
diff --git a/Bootstrap/Xamarin.Interactive.Bootstrap/FrameworkNames.cs b/Agents/Xamarin.Interactive/FrameworkNames.cs
similarity index 100%
rename from Bootstrap/Xamarin.Interactive.Bootstrap/FrameworkNames.cs
rename to Agents/Xamarin.Interactive/FrameworkNames.cs
diff --git a/Agents/Xamarin.Interactive/InspectorSupport.cs b/Agents/Xamarin.Interactive/InspectorSupport.cs
deleted file mode 100644
index 4f0f94000..000000000
--- a/Agents/Xamarin.Interactive/InspectorSupport.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// Author:
-// Aaron Bockover
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-using System;
-using System.Runtime.CompilerServices;
-
-using Xamarin.Interactive.Core;
-
-namespace Xamarin
-{
- public static partial class InspectorSupport
- {
- static Agent agent;
-
- static partial void CreateAgent (AgentStartOptions startOptions);
-
- internal static Action
- 1.0.0-rc4
+ 1.0.0-rc5
@@ -198,8 +198,8 @@
-
-
+
+
@@ -233,14 +233,19 @@
+
+
+
+
+
+
-
@@ -276,10 +281,6 @@
SkipUnchangedFiles="true"
SourceFiles="@(DotNetCoreAgentFiles)"
DestinationFolder="$(FrameworkInstallDir)Agents\DotNetCore"/>
-
@@ -395,8 +396,8 @@
- $(MSBuildThisFileDirectory)Agents\Xamarin.Interactive\bin\$(Configuration)\Xamarin.Interactive.dll
- $(MSBuildThisFileDirectory)Agents\Xamarin.Interactive\bin\$(Configuration)\Xamarin.Interactive.Stripped.dll
+ $(MSBuildThisFileDirectory)Agents\Xamarin.Interactive\bin\$(Configuration)\netstandard2.0\Xamarin.Interactive.dll
+ $(MSBuildThisFileDirectory)Agents\Xamarin.Interactive\bin\$(Configuration)\netstandard2.0\Xamarin.Interactive.Stripped.dll
@@ -473,7 +474,7 @@
Projects="Tools\ApiDump\ApiDump.csproj;Agents\Xamarin.Interactive\Xamarin.Interactive.csproj"
Properties="Configuration=Release"
Targets="Build"/>
-
+
UnifiedExtensions.cs
+
+ NativeExceptionHandler.cs
+
diff --git a/Clients/Xamarin.Interactive.Client.Mac/Xamarin.Mac/NSWindowExtensions.cs b/Clients/Xamarin.Interactive.Client.Mac/Xamarin.Mac/NSWindowExtensions.cs
index 3a6af3dfd..aeca8d94a 100644
--- a/Clients/Xamarin.Interactive.Client.Mac/Xamarin.Mac/NSWindowExtensions.cs
+++ b/Clients/Xamarin.Interactive.Client.Mac/Xamarin.Mac/NSWindowExtensions.cs
@@ -12,6 +12,7 @@
using ObjCRuntime;
using Xamarin.Interactive.Logging;
+using Xamarin.Interactive.Unified;
namespace Xamarin.Interactive.Client.Mac
{
diff --git a/Clients/Xamarin.Interactive.Client.Windows/Views/VisualTree.xaml b/Clients/Xamarin.Interactive.Client.Windows/Views/VisualTree.xaml
index a22a9370f..9f01eea02 100644
--- a/Clients/Xamarin.Interactive.Client.Windows/Views/VisualTree.xaml
+++ b/Clients/Xamarin.Interactive.Client.Windows/Views/VisualTree.xaml
@@ -4,7 +4,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:remote="clr-namespace:Xamarin.Interactive.Remote;assembly=Xamarin.Interactive.Client"
+ xmlns:remote="clr-namespace:Xamarin.Interactive.Remote;assembly=Xamarin.Interactive"
xmlns:views="clr-namespace:Xamarin.Interactive.Client.Windows.Views"
xmlns:converters="clr-namespace:Xamarin.Interactive.Client.Windows.Converters"
mc:Ignorable="d"
diff --git a/Clients/Xamarin.Interactive.Client/ClientApp.cs b/Clients/Xamarin.Interactive.Client/ClientApp.cs
index 9b02462c2..02d7f6ebb 100644
--- a/Clients/Xamarin.Interactive.Client/ClientApp.cs
+++ b/Clients/Xamarin.Interactive.Client/ClientApp.cs
@@ -12,6 +12,8 @@
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Win32;
+
using Xamarin.Interactive.Client;
using Xamarin.Interactive.Client.Updater;
using Xamarin.Interactive.Core;
@@ -136,9 +138,15 @@ public void Initialize (
if (asSharedInstance)
SharedInstance = this;
+ // Support both Mac and Windows installation paths in the base class
+ // so that ConsoleClientApp does not need to be built differently on
+ // different platforms.
InteractiveInstallation.InitializeDefault (
Host.IsMac,
- DevEnvironment.RepositoryRootDirectory);
+ DevEnvironment.RepositoryRootDirectory,
+ Host.IsMac
+ ? GetMacInstallationPaths ()
+ : GetWindowsInstallationPaths ());
new Telemetry.Events.AppSessionStart ().Post ();
@@ -322,5 +330,43 @@ public async Task WriteIssueReportForClipboardAsync (TextWriter writer)
}
}
}
+
+ static InteractiveInstallationPaths GetWindowsInstallationPaths ()
+ {
+ using (var clientExeKey = RegistryKey.OpenBaseKey (RegistryHive.LocalMachine, RegistryView.Registry32)
+ .OpenSubKey (@"Software\Xamarin\Workbooks\")) {
+ var clientExePath = clientExeKey?.GetValue ("location") as string;
+ if (String.IsNullOrEmpty (clientExePath))
+ return null;
+
+ var clientInstallPath = Path.GetDirectoryName (clientExePath);
+ var frameworkInstallPath = Path.GetDirectoryName (clientInstallPath);
+
+ return new InteractiveInstallationPaths (
+ workbooksClientInstallPath: clientInstallPath,
+ inspectorClientInstallPath: clientInstallPath,
+ agentsInstallPath: frameworkInstallPath,
+ workbookAppsInstallPath: frameworkInstallPath,
+ toolsInstallPath: Path.Combine (frameworkInstallPath, "Tools"));
+ }
+ }
+
+ static InteractiveInstallationPaths GetMacInstallationPaths ()
+ {
+ const string MacFrameworkInstallPath = "Library/Frameworks/Xamarin.Interactive.framework/Versions/Current";
+
+ var installRootPath = "/";
+
+ var frameworkInstallPath = Path.Combine (
+ installRootPath,
+ MacFrameworkInstallPath);
+
+ return new InteractiveInstallationPaths (
+ workbooksClientInstallPath: Path.Combine (installRootPath, "Applications"),
+ inspectorClientInstallPath: Path.Combine (frameworkInstallPath, "InspectorClient"),
+ agentsInstallPath: frameworkInstallPath,
+ workbookAppsInstallPath: frameworkInstallPath,
+ toolsInstallPath: Path.Combine (frameworkInstallPath, "Tools"));
+ }
}
}
\ No newline at end of file
diff --git a/Clients/Xamarin.Interactive.Client/Compilation/CompilationWorkspaceFactory.cs b/Clients/Xamarin.Interactive.Client/Compilation/CompilationWorkspaceFactory.cs
index 6bd2cf397..42f08a63e 100644
--- a/Clients/Xamarin.Interactive.Client/Compilation/CompilationWorkspaceFactory.cs
+++ b/Clients/Xamarin.Interactive.Client/Compilation/CompilationWorkspaceFactory.cs
@@ -164,17 +164,14 @@ static InteractiveDependencyResolver CreateDependencyResolver (
return dependencyResolver;
}
+ static Assembly netStandardAssembly;
+ static Assembly xiAssembly;
+
static Type ResolveHostObjectType (
InteractiveDependencyResolver dependencyResolver,
TargetCompilationConfiguration configuration,
AgentType agentType)
{
- if (agentType == AgentType.DotNetCore) {
- return Assembly
- .ReflectionOnlyLoadFrom (InteractiveInstallation.Default.LocateNetStandardRefAssembly ())
- .GetType (configuration.GlobalStateTypeName);
- }
-
using (var assemblyContext = new EvaluationAssemblyContext ()) {
string globalStateAssemblyCachePath = null;
if (configuration.GlobalStateAssembly.Content.PEImage != null)
@@ -188,15 +185,31 @@ static Type ResolveHostObjectType (
assemblyContext.AddRange (resolvedAssemblies);
- var globalStateAssembly = resolvedAssemblies.First (
+ var globalStateAssemblyDef = resolvedAssemblies.First (
assembly => ResolvedAssembly.NameEqualityComparer.Default.Equals (
assembly.Name,
configuration.GlobalStateAssembly.Name));
- return Assembly
- .ReflectionOnlyLoadFrom (
- globalStateAssemblyCachePath ?? globalStateAssembly.Content.Location)
- .GetType (configuration.GlobalStateTypeName);
+ netStandardAssembly = netStandardAssembly ??
+ Assembly.ReflectionOnlyLoadFrom (
+ new FilePath (Assembly.GetExecutingAssembly ().Location)
+ .ParentDirectory
+ .Combine ("netstandard.dll"));
+
+ xiAssembly = xiAssembly ??
+ Assembly.ReflectionOnlyLoadFrom (
+ new FilePath (Assembly.GetExecutingAssembly ().Location)
+ .ParentDirectory
+ .Combine ("Xamarin.Interactive.dll"));
+
+ Assembly globalStateAssembly;
+ if (globalStateAssemblyDef.Name.Name == "Xamarin.Interactive")
+ globalStateAssembly = xiAssembly;
+ else
+ globalStateAssembly = Assembly.ReflectionOnlyLoadFrom (
+ globalStateAssemblyCachePath ?? globalStateAssemblyDef.Content.Location);
+
+ return globalStateAssembly.GetType (configuration.GlobalStateTypeName);
}
}
}
diff --git a/Clients/Xamarin.Interactive.Client/NuGet/InteractivePackageManager.cs b/Clients/Xamarin.Interactive.Client/NuGet/InteractivePackageManager.cs
index 6ec9ffcdc..b93f943bd 100644
--- a/Clients/Xamarin.Interactive.Client/NuGet/InteractivePackageManager.cs
+++ b/Clients/Xamarin.Interactive.Client/NuGet/InteractivePackageManager.cs
@@ -41,7 +41,7 @@ sealed class InteractivePackageManager : INotifyPropertyChanged
internal static readonly PackageIdentity FixedXamarinFormsPackageIdentity = new PackageIdentity (
"Xamarin.Forms",
- new NuGetVersion (2, 3, 4, 231));
+ new NuGetVersion (2, 4, 0, 38779));
readonly NuGetPackageManager packageManager;
readonly InteractivePackageProjectContext projectContext;
diff --git a/Clients/Xamarin.Interactive.Client/Xamarin.Interactive.Client.csproj b/Clients/Xamarin.Interactive.Client/Xamarin.Interactive.Client.csproj
index fdf675bfa..2f4e5cd53 100644
--- a/Clients/Xamarin.Interactive.Client/Xamarin.Interactive.Client.csproj
+++ b/Clients/Xamarin.Interactive.Client/Xamarin.Interactive.Client.csproj
@@ -41,7 +41,5 @@
-
-
\ No newline at end of file
diff --git a/Package/Windows/AgentAppFiles.wxs b/Package/Windows/AgentAppFiles.wxs
index 14a5082ea..b2ded691b 100644
--- a/Package/Windows/AgentAppFiles.wxs
+++ b/Package/Windows/AgentAppFiles.wxs
@@ -15,6 +15,291 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Package/Windows/AgentFiles.wxs b/Package/Windows/AgentFiles.wxs
index a306ed090..704b8f49b 100644
--- a/Package/Windows/AgentFiles.wxs
+++ b/Package/Windows/AgentFiles.wxs
@@ -1,56 +1,340 @@
-
+
-
+
-
+
-
+
-
-
+
-
+
+
+
+
-
-
+
-
+
-
-
+
-
+
+
+
+
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
@@ -64,69 +348,63 @@
-
-
-
-
-
-
+
-
+
-
-
+
-
+
-
-
+
-
+
-
-
+
-
+
+
+
+
-
-
+
-
+
-
-
+
-
+
-
-
+
-
+
-
-
+
-
+
+
+
+
diff --git a/Package/Windows/AndroidAgentAppAssemblies.wxs b/Package/Windows/AndroidAgentAppAssemblies.wxs
index 05ed7d4f2..212cc4028 100644
--- a/Package/Windows/AndroidAgentAppAssemblies.wxs
+++ b/Package/Windows/AndroidAgentAppAssemblies.wxs
@@ -240,8 +240,8 @@
-
-
+
+
@@ -662,11 +662,32 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Package/Windows/ClientFiles.wxs b/Package/Windows/ClientFiles.wxs
index 5dd6a5fbd..433cb129a 100644
--- a/Package/Windows/ClientFiles.wxs
+++ b/Package/Windows/ClientFiles.wxs
@@ -1,6 +1,7 @@
+
@@ -25,8 +26,9 @@
+
-
+
@@ -175,9 +177,6 @@
-
-
-
@@ -223,7 +222,244 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Package/Windows/Xamarin.Interactive.Windows.Installer.wixproj b/Package/Windows/Xamarin.Interactive.Windows.Installer.wixproj
index ecb2152d5..6f97ae764 100644
--- a/Package/Windows/Xamarin.Interactive.Windows.Installer.wixproj
+++ b/Package/Windows/Xamarin.Interactive.Windows.Installer.wixproj
@@ -197,13 +197,6 @@
Binaries;Content;Satellites
INSTALLFOLDER
-
- Xamarin.Interactive.NetStandard
- True
- True
- Binaries;Content;Satellites
- INSTALLFOLDER
-
diff --git a/Package/Windows/iOSWorkbookAppFiles.wxs b/Package/Windows/iOSWorkbookAppFiles.wxs
index c425a92f0..850ec8058 100644
--- a/Package/Windows/iOSWorkbookAppFiles.wxs
+++ b/Package/Windows/iOSWorkbookAppFiles.wxs
@@ -61,9 +61,6 @@
-
-
-
@@ -79,33 +76,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -124,21 +106,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
@@ -151,21 +121,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -211,6 +166,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Main.cs b/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Main.cs
index e16b6ea5e..4ca24d58e 100644
--- a/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Main.cs
+++ b/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Main.cs
@@ -52,22 +52,26 @@ static void StartInspectorIntegration ()
Console.WriteLine ($" path: {agentAssemblyPath}");
Console.WriteLine ($" mtime: {File.GetLastWriteTime (agentAssemblyPath)}");
+ Assembly.LoadFrom (Path.Combine (
+ Path.GetDirectoryName (InteractiveInstallation.Default.LocateAgentAssembly (AgentType.Console)),
+ "netstandard.dll"));
+
inspectorSupportType = Assembly
.LoadFrom (agentAssemblyPath)
.GetType ("Xamarin.InspectorSupport");
inspectorSupportType
.GetField ("AgentStartedHandler", bindingFlags)
- .SetValue (null, new Action (AgentStarted));
+ .SetValue (null, new Action (AgentStarted));
inspectorSupportType
.GetMethod ("Start", bindingFlags)
.Invoke (null, null);
}
- static void AgentStarted (object agent)
+ static void AgentStarted (string agentConnectUri)
{
- Console.WriteLine ($"AgentStarted invoked: {agent}. Success.");
+ Console.WriteLine ($"AgentStarted invoked: {agentConnectUri}. Success.");
exit (0);
}
}
diff --git a/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Xamarin.Interactive.Tests.InspectorSupport.Mac.csproj b/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Xamarin.Interactive.Tests.InspectorSupport.Mac.csproj
index 3d513d658..cd199b4d9 100644
--- a/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Xamarin.Interactive.Tests.InspectorSupport.Mac.csproj
+++ b/Tests/Xamarin.Interactive.Tests.InspectorSupport.Mac/Xamarin.Interactive.Tests.InspectorSupport.Mac.csproj
@@ -72,10 +72,13 @@
-
+
InteractiveInstallation.cs
-
+
+ InteractiveInstallationPaths.cs
+
+
ClientSessionKind.cs
diff --git a/Tests/Xamarin.Interactive.Tests/ApiDiffTests.cs b/Tests/Xamarin.Interactive.Tests/ApiDiffTests.cs
index 2714eceb4..3404a43b6 100644
--- a/Tests/Xamarin.Interactive.Tests/ApiDiffTests.cs
+++ b/Tests/Xamarin.Interactive.Tests/ApiDiffTests.cs
@@ -29,6 +29,7 @@ public void EnsureNoApiDifferenceAndLint (
basePath,
"bin",
TestHelpers.Configuration,
+ "netstandard2.0",
assemblyFileName);
apiReference = Path.Combine (basePath, apiReference);
diff --git a/Tests/Xamarin.Interactive.Tests/NuGetTests.cs b/Tests/Xamarin.Interactive.Tests/NuGetTests.cs
index f19623d3b..4b2023379 100644
--- a/Tests/Xamarin.Interactive.Tests/NuGetTests.cs
+++ b/Tests/Xamarin.Interactive.Tests/NuGetTests.cs
@@ -69,8 +69,8 @@ static InteractivePackageManager CreatePackageManager (FrameworkName targetFrame
},
new PackageInstallData {
Id = "Xamarin.Forms",
- VersionToInstall = new NuGetVersion (2, 3, 4, 231),
- ExpectedInstalled = new NuGetVersion (2, 3, 4, 231),
+ VersionToInstall = InteractivePackageManager.FixedXamarinFormsPackageIdentity.Version,
+ ExpectedInstalled = InteractivePackageManager.FixedXamarinFormsPackageIdentity.Version,
},
new PackageInstallData {
Id = "Newtonsoft.Json",
@@ -80,12 +80,12 @@ static InteractivePackageManager CreatePackageManager (FrameworkName targetFrame
new PackageInstallData {
Id = "Xamarin.Forms",
VersionToInstall = new NuGetVersion (2, 3, 3, 180),
- ExpectedInstalled = new NuGetVersion (2, 3, 4, 231),
+ ExpectedInstalled = InteractivePackageManager.FixedXamarinFormsPackageIdentity.Version,
},
new PackageInstallData {
Id = "Xamarin.Forms",
- VersionToInstall = new NuGetVersion (2, 3, 5, 233, "pre1", string.Empty),
- ExpectedInstalled = new NuGetVersion (2, 3, 4, 231),
+ VersionToInstall = new NuGetVersion (2, 5, 0, 19271, "pre2", string.Empty),
+ ExpectedInstalled = InteractivePackageManager.FixedXamarinFormsPackageIdentity.Version,
},
new PackageInstallData {
Id = "semver",
diff --git a/Tools/ApiDump/LintTool.cs b/Tools/ApiDump/LintTool.cs
index b83b98b3e..923ea7f66 100644
--- a/Tools/ApiDump/LintTool.cs
+++ b/Tools/ApiDump/LintTool.cs
@@ -48,7 +48,8 @@ public override void VisitTypeDeclaration (TypeDeclaration typeDeclaration)
typeDeclaration.Modifiers.HasFlag (Modifiers.Public) &&
!typeDeclaration.Modifiers.HasFlag (Modifiers.Sealed) &&
!typeDeclaration.Modifiers.HasFlag (Modifiers.Static) &&
- !typeDeclaration.Modifiers.HasFlag (Modifiers.Abstract)) {
+ !typeDeclaration.Modifiers.HasFlag (Modifiers.Abstract) &&
+ typeDeclaration.Name != "EvaluationContextGlobalObject") {
var clone = (TypeDeclaration)typeDeclaration.Clone ();
clone.Members.Clear ();
issues.Add (new Issue (
diff --git a/Tools/ApiDump/PublicAstVisitor.cs b/Tools/ApiDump/PublicAstVisitor.cs
index 56824aae6..9f9a00073 100644
--- a/Tools/ApiDump/PublicAstVisitor.cs
+++ b/Tools/ApiDump/PublicAstVisitor.cs
@@ -30,7 +30,11 @@ public override void VisitAttribute (Attribute attribute)
{
var section = (AttributeSection)attribute.Parent;
- switch (((SimpleType)attribute.Type).Identifier) {
+ // Equivalent to SimpleType.Identifier and MemberType.MemberName
+ // (attribute.Type is a MemberType in the case of inner classes)
+ var attributeName = attribute.Type.GetChildByRole (Roles.Identifier).Name;
+
+ switch (attributeName) {
case "CompilationRelaxations":
case "RuntimeCompatibility":
case "SecurityPermission":
diff --git a/WorkbookApps/Xamarin.Workbooks.Android/Xamarin.Workbooks.Android.csproj b/WorkbookApps/Xamarin.Workbooks.Android/Xamarin.Workbooks.Android.csproj
index 5cd7fde44..902dba870 100644
--- a/WorkbookApps/Xamarin.Workbooks.Android/Xamarin.Workbooks.Android.csproj
+++ b/WorkbookApps/Xamarin.Workbooks.Android/Xamarin.Workbooks.Android.csproj
@@ -60,7 +60,7 @@
- 2.3.4.231
+ 2.4.0.38779
diff --git a/WorkbookApps/Xamarin.Workbooks.Wpf/Xamarin.Workbooks.Wpf.csproj b/WorkbookApps/Xamarin.Workbooks.Wpf/Xamarin.Workbooks.Wpf.csproj
index 961bc913e..2f07d49c3 100644
--- a/WorkbookApps/Xamarin.Workbooks.Wpf/Xamarin.Workbooks.Wpf.csproj
+++ b/WorkbookApps/Xamarin.Workbooks.Wpf/Xamarin.Workbooks.Wpf.csproj
@@ -14,6 +14,7 @@
{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
4
+ true
AnyCPU
diff --git a/Xamarin.Interactive.sln b/Xamarin.Interactive.sln
index 4bc026f67..6a54df0a6 100644
--- a/Xamarin.Interactive.sln
+++ b/Xamarin.Interactive.sln
@@ -1,12 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26730.16
+VisualStudioVersion = 15.0.27004.2005
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Interactive.Shared", "Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.shproj", "{0B64FF4D-4589-438B-A18C-9DA1DE8A2653}"
-EndProject
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Interactive.Bootstrap", "Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.shproj", "{2ECF1997-1B8A-4C03-8CA9-9710A820C4FC}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Clients", "Clients", "{1918A3C3-EAE4-4F9F-BF6B-83CB94AAF7E9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Client.Mac", "Clients\Xamarin.Interactive.Client.Mac\Xamarin.Interactive.Client.Mac.csproj", "{B813E9C0-FAEF-4661-ABCE-8F3322D451D2}"
@@ -57,9 +53,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Build", "Build\Xama
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Workbooks.Mac", "WorkbookApps\Xamarin.Workbooks.Mac\Xamarin.Workbooks.Mac.csproj", "{88DA1F82-8CA2-46A7-B339-8D96C9138515}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive", "Agents\Xamarin.Interactive\Xamarin.Interactive.csproj", "{955F473A-04EC-4716-B75E-509BA892499B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Facades", "Agents\Xamarin.Interactive.Facades\Xamarin.Interactive.Facades.csproj", "{0CB32DEF-71E4-489A-AECE-AFBFCC06854C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Interactive", "Agents\Xamarin.Interactive\Xamarin.Interactive.csproj", "{955F473A-04EC-4716-B75E-509BA892499B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forms", "Forms", "{88765549-56E0-4B66-BA2D-F49E1446EF94}"
EndProject
@@ -67,7 +61,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Forms.i
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Forms.Android", "Agents\Xamarin.Interactive.Forms.Android\Xamarin.Interactive.Forms.Android.csproj", "{159A14A0-F8C7-460F-ADF7-967D60E63689}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Forms", "Agents\Xamarin.Interactive.Forms\Xamarin.Interactive.Forms.csproj", "{932D2C61-5DBE-4D82-A4D6-1EA7401F10D3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Interactive.Forms", "Agents\Xamarin.Interactive.Forms\Xamarin.Interactive.Forms.csproj", "{932D2C61-5DBE-4D82-A4D6-1EA7401F10D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Console", "Agents\Xamarin.Interactive.Console\Xamarin.Interactive.Console.csproj", "{7A522415-E2F7-4E4B-8E11-3D7CF9A854A8}"
EndProject
@@ -85,8 +79,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApiDump", "Tools\ApiDump\Ap
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Interactive.DotNetCore", "Agents\Xamarin.Interactive.DotNetCore\Xamarin.Interactive.DotNetCore.csproj", "{CDF223B4-DD43-42BE-96BB-C1EEC464796C}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Interactive.NetStandard", "Agents\Xamarin.Interactive.NetStandard\Xamarin.Interactive.NetStandard.csproj", "{7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Workbooks.DotNetCore", "WorkbookApps\Xamarin.Workbooks.DotNetCore\Xamarin.Workbooks.DotNetCore.csproj", "{5CBBD924-8B0D-4C35-A39B-751DCF9D234D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Interactive.Wpf", "Agents\Xamarin.Interactive.Wpf\Xamarin.Interactive.Wpf.csproj", "{8DFCE7A8-BA80-475D-97C1-DFBCCE17C8E3}"
@@ -121,24 +113,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Interactive.Client.
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{0b64ff4d-4589-438b-a18c-9da1de8a2653}*SharedItemsImports = 13
Agents\Xamarin.Interactive.Mac\Xamarin.Interactive.Mac.projitems*{0be4e82e-2409-4425-811d-bc7c8b134320}*SharedItemsImports = 13
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{22fd0fae-d093-446c-9adb-4b59a97f413e}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{22fd0fae-d093-446c-9adb-4b59a97f413e}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{2ecf1997-1b8a-4c03-8ca9-9710a820c4fc}*SharedItemsImports = 13
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{32a8ebc6-bab4-403b-9a8b-89f836cfe95a}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{32a8ebc6-bab4-403b-9a8b-89f836cfe95a}*SharedItemsImports = 4
Agents\Xamarin.Interactive.Mac\Xamarin.Interactive.Mac.projitems*{50e9c7dc-4ff9-44b2-bcce-85a00e3d967e}*SharedItemsImports = 4
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{50e9c7dc-4ff9-44b2-bcce-85a00e3d967e}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{50e9c7dc-4ff9-44b2-bcce-85a00e3d967e}*SharedItemsImports = 4
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{7a522415-e2f7-4e4b-8e11-3d7cf9a854a8}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{7a522415-e2f7-4e4b-8e11-3d7cf9a854a8}*SharedItemsImports = 4
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{8dfce7a8-ba80-475d-97c1-dfbcce17c8e3}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{8dfce7a8-ba80-475d-97c1-dfbcce17c8e3}*SharedItemsImports = 4
Clients\Xamarin.Interactive.MTouch\Xamarin.Interactive.MTouch.projitems*{a31ddded-f400-41be-92ba-6931763c27e7}*SharedItemsImports = 13
Agents\Xamarin.Interactive.Mac\Xamarin.Interactive.Mac.projitems*{af7b7abd-84d4-46b2-80e4-9ca457c513bc}*SharedItemsImports = 4
- Agents\Xamarin.Interactive\Xamarin.Interactive.Shared.projitems*{af7b7abd-84d4-46b2-80e4-9ca457c513bc}*SharedItemsImports = 4
- Bootstrap\Xamarin.Interactive.Bootstrap\Xamarin.Interactive.Bootstrap.projitems*{af7b7abd-84d4-46b2-80e4-9ca457c513bc}*SharedItemsImports = 4
Clients\Xamarin.Interactive.MTouch\Xamarin.Interactive.MTouch.projitems*{b813e9c0-faef-4661-abce-8f3322d451d2}*SharedItemsImports = 4
Clients\Xamarin.Interactive.MTouch\Xamarin.Interactive.MTouch.projitems*{d495e2ae-bf3e-444b-b3d6-91ef14293831}*SharedItemsImports = 4
EndGlobalSection
@@ -283,16 +261,6 @@ Global
{955F473A-04EC-4716-B75E-509BA892499B}.Release|macOS.Build.0 = Release|Any CPU
{955F473A-04EC-4716-B75E-509BA892499B}.Release|Windows.ActiveCfg = Release|Any CPU
{955F473A-04EC-4716-B75E-509BA892499B}.Release|Windows.Build.0 = Release|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Debug|macOS.ActiveCfg = Debug|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Debug|macOS.Build.0 = Debug|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Debug|Windows.ActiveCfg = Debug|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Debug|Windows.Build.0 = Debug|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Release|macOS.ActiveCfg = Release|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Release|macOS.Build.0 = Release|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Release|Windows.ActiveCfg = Release|Any CPU
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C}.Release|Windows.Build.0 = Release|Any CPU
{A534BEA1-1A39-4355-B6EF-F6A3EF7E65FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A534BEA1-1A39-4355-B6EF-F6A3EF7E65FC}.Debug|macOS.ActiveCfg = Debug|Any CPU
{A534BEA1-1A39-4355-B6EF-F6A3EF7E65FC}.Debug|macOS.Build.0 = Debug|Any CPU
@@ -393,16 +361,6 @@ Global
{CDF223B4-DD43-42BE-96BB-C1EEC464796C}.Release|macOS.Build.0 = Release|Any CPU
{CDF223B4-DD43-42BE-96BB-C1EEC464796C}.Release|Windows.ActiveCfg = Release|Any CPU
{CDF223B4-DD43-42BE-96BB-C1EEC464796C}.Release|Windows.Build.0 = Release|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Debug|macOS.ActiveCfg = Debug|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Debug|macOS.Build.0 = Debug|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Debug|Windows.ActiveCfg = Debug|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Debug|Windows.Build.0 = Debug|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Release|macOS.ActiveCfg = Release|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Release|macOS.Build.0 = Release|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Release|Windows.ActiveCfg = Release|Any CPU
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D}.Release|Windows.Build.0 = Release|Any CPU
{5CBBD924-8B0D-4C35-A39B-751DCF9D234D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5CBBD924-8B0D-4C35-A39B-751DCF9D234D}.Debug|macOS.ActiveCfg = Debug|Any CPU
{5CBBD924-8B0D-4C35-A39B-751DCF9D234D}.Debug|macOS.Build.0 = Debug|Any CPU
@@ -538,8 +496,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {0B64FF4D-4589-438B-A18C-9DA1DE8A2653} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
- {2ECF1997-1B8A-4C03-8CA9-9710A820C4FC} = {0D5D807C-DEBE-498D-B2D8-D75E6C60D15B}
{B813E9C0-FAEF-4661-ABCE-8F3322D451D2} = {1918A3C3-EAE4-4F9F-BF6B-83CB94AAF7E9}
{32A8EBC6-BAB4-403B-9A8B-89F836CFE95A} = {ED62D731-5B6C-45F6-9A62-B9992E874E27}
{0BE4E82E-2409-4425-811D-BC7C8B134320} = {1281F1A8-EB27-4D6C-8E0A-03FBFAA63746}
@@ -560,7 +516,6 @@ Global
{056196F4-3E6B-43E5-886E-D9C8E9BEACBB} = {0D5D807C-DEBE-498D-B2D8-D75E6C60D15B}
{88DA1F82-8CA2-46A7-B339-8D96C9138515} = {5EF281AE-893E-49E8-BBA9-DBE86493BB39}
{955F473A-04EC-4716-B75E-509BA892499B} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
- {0CB32DEF-71E4-489A-AECE-AFBFCC06854C} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
{88765549-56E0-4B66-BA2D-F49E1446EF94} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
{A534BEA1-1A39-4355-B6EF-F6A3EF7E65FC} = {88765549-56E0-4B66-BA2D-F49E1446EF94}
{159A14A0-F8C7-460F-ADF7-967D60E63689} = {88765549-56E0-4B66-BA2D-F49E1446EF94}
@@ -572,7 +527,6 @@ Global
{1601EA3E-485F-4710-9937-DCD4C46728CE} = {E3972EA9-3073-4251-AD90-87B4C90147FC}
{B44E528A-584A-4BAF-A398-6E2245AA8ED2} = {E3972EA9-3073-4251-AD90-87B4C90147FC}
{CDF223B4-DD43-42BE-96BB-C1EEC464796C} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
- {7835BCA4-2F06-4AB8-B5E5-AD7934FFBA2D} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
{5CBBD924-8B0D-4C35-A39B-751DCF9D234D} = {5EF281AE-893E-49E8-BBA9-DBE86493BB39}
{8DFCE7A8-BA80-475D-97C1-DFBCCE17C8E3} = {AE0C9371-285B-4540-AB1D-F5141FA66D19}
{F98CCE56-C44F-4096-A2FA-7298F339F846} = {5EF281AE-893E-49E8-BBA9-DBE86493BB39}
diff --git a/dependencies.json b/dependencies.json
index c16ae11dd..16b25451c 100644
--- a/dependencies.json
+++ b/dependencies.json
@@ -91,7 +91,7 @@
{
"Kind": "NuGet",
"Name": "Xamarin.Forms",
- "Version": "2.3.4.231",
+ "Version": "2.4.0.38779",
"DependentProjects": [
"Xamarin.Interactive.Forms.Android",
"Xamarin.Interactive.Forms.iOS",