소스 검색

Fixed build for Silverlight 4, .NET Framework 3.5, and Windows Phone 7. Cleaned up a few code analysis warnings.

unknown 10 년 전
부모
커밋
699bba3524

+ 6 - 4
Rx.NET/Source/Common.targets

@@ -185,7 +185,7 @@
   </PropertyGroup>
 
   <PropertyGroup Condition=" '$(BuildTarget)' == 'WP7' ">
-    <DefineConstants>$(DefineConstants);USE_SL_DISPATCHER;NO_SERIALIZABLE;NO_REMOTING;NO_CDS;NO_TLS;NO_VARIANCE;NO_TPL;NO_HASHSET;NO_SEMAPHORE;NO_LARGEARITY;NO_EXPRESSIONVISITOR;NO_LAZY;NO_WEAKTABLE;NO_INTERLOCKED_64;WINDOWSPHONE7;NO_WEAKREFOFT;NO_SORTEDDICTIONARY</DefineConstants>
+    <DefineConstants>$(DefineConstants);USE_SL_DISPATCHER;NO_SERIALIZABLE;NO_REMOTING;NO_CDS;NO_TLS;NO_VARIANCE;NO_TPL;NO_HASHSET;NO_SEMAPHORE;NO_LARGEARITY;NO_EXPRESSIONVISITOR;NO_LAZY;NO_WEAKTABLE;NO_INTERLOCKED_64;WINDOWSPHONE7;NO_WEAKREFOFT;NO_SORTEDDICTIONARY;NO_VISITLAMBDAOFT</DefineConstants>
     <TargetFrameworkProfile>WindowsPhone71</TargetFrameworkProfile>
     <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
@@ -260,7 +260,7 @@
 
 
   <PropertyGroup Condition=" '$(BuildTarget)' == '35' ">
-    <DefineConstants>$(DefineConstants);NO_RXINTERFACES;NO_VARIANCE;NO_TPL;NO_LARGEARITY;NO_EXPRESSIONVISITOR;NO_CDS;NO_LAZY;NO_WEAKTABLE;HAS_APTCA</DefineConstants>
+    <DefineConstants>$(DefineConstants);NO_RXINTERFACES;NO_VARIANCE;NO_TPL;NO_LARGEARITY;NO_EXPRESSIONVISITOR;NO_CDS;NO_LAZY;NO_WEAKTABLE;HAS_APTCA;NO_WEAKREFOFT;HAS_MREEXPLICITDISPOSABLE;NO_VISITLAMBDAOFT</DefineConstants>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
     <BuildPlatform>DESKTOPCLR</BuildPlatform>
     <BuildFlavor>DESKTOPCLR20</BuildFlavor>
@@ -277,7 +277,7 @@
   </PropertyGroup>
 
   <PropertyGroup Condition=" '$(BuildTarget)' == 'SL4' ">
-    <DefineConstants>$(DefineConstants);NO_RXINTERFACES;USE_SL_DISPATCHER;NO_SERIALIZABLE;NO_REMOTING;NO_SEMAPHORE;NO_STOPWATCH;NO_CDS;NO_TPL</DefineConstants>
+    <DefineConstants>$(DefineConstants);NO_RXINTERFACES;USE_SL_DISPATCHER;NO_SERIALIZABLE;NO_REMOTING;NO_SEMAPHORE;NO_STOPWATCH;NO_CDS;NO_TPL;NO_WEAKREFOFT;NO_SORTEDDICTIONARY</DefineConstants>
     <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
@@ -360,8 +360,10 @@
     <DefineConstants>$(DefineConstants);STRESS</DefineConstants>
   </PropertyGroup>
   
+  <PropertyGroup Condition=" '$(Sign)' == 'Sign' ">
+    <DefineConstants>$(DefineConstants);SIGNED;NO_INTERNALSTEST</DefineConstants>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(ProductSignAssembly)' == 'true' AND '$(Sign)' == 'Sign' ">
-    <DefineConstants>$(DefineConstants);SIGNED</DefineConstants>
     <SignAssembly>true</SignAssembly>
     <DelaySign>true</DelaySign>
     <AssemblyOriginatorKeyFile>..\35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>

+ 2 - 2
Rx.NET/Source/Import.targets

@@ -2,8 +2,7 @@
 <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
   <!-- Non-Portable Library build -->
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v11.0\Microsoft.Windows.UI.Xaml.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCore' And '$(BuildFlavor)' == 'WINDOWS8' " />
-  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v12.0\Microsoft.Windows.UI.Xaml.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCore' And '$(BuildFlavor)' == 'WINDOWS81' " />
+  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v12.0\Microsoft.Windows.UI.Xaml.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCore' And ('$(BuildFlavor)' == 'WINDOWS81' Or '$(BuildFlavor)' == 'WINDOWS8') " />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' != '.NETPortable' And ('$(BuildPlatform)' == 'DESKTOPCLR' Or '$(BuildPlatform)' == 'XNA') " />
   
   <!-- Silverlight ONLY (i.e., not phone) -->
@@ -53,6 +52,7 @@
         SourceFiles="@(BuiltFilesInOutDir)"
         DestinationFolder="$(OutDir)\.."
         Condition=" '$(TargetFrameworkIdentifier)' == '.NETCore' Or '$(TargetFrameworkIdentifier)' == '.NETPortable' " />
+
   </Target>
   
   <!--  MICROSOFT BCL ASYNC CONFIGURATION -->

+ 3 - 0
Rx.NET/Source/Playground/Program.cs

@@ -7,7 +7,10 @@ using System.Reactive.Disposables;
 using System.Reactive.Linq;
 using System.Reactive.Subjects;
 using System.Threading;
+
+#if !NO_TPL
 using System.Threading.Tasks;
+#endif
 
 namespace Playground
 {

+ 6 - 0
Rx.NET/Source/System.Reactive.Core/Reactive/Disposables/StableCompositeDisposable.cs

@@ -86,13 +86,17 @@ namespace System.Reactive.Disposables
 
             public override void Dispose()
             {
+#pragma warning disable 0420
                 var old1 = Interlocked.Exchange(ref _disposable1, null);
+#pragma warning restore 0420
                 if (old1 != null)
                 {
                     old1.Dispose();
                 }
 
+#pragma warning disable 0420
                 var old2 = Interlocked.Exchange(ref _disposable2, null);
+#pragma warning restore 0420
                 if (old2 != null)
                 {
                     old2.Dispose();
@@ -130,7 +134,9 @@ namespace System.Reactive.Disposables
 
             public override void Dispose()
             {
+#pragma warning disable 0420
                 var old = Interlocked.Exchange(ref _disposables, null);
+#pragma warning restore 0420
                 if (old != null)
                 {
                     foreach (var d in old)

+ 26 - 2
Rx.NET/Source/System.Reactive.Core/Reactive/Internal/SystemClock.cs

@@ -20,7 +20,11 @@ namespace System.Reactive.PlatformServices
     {
         private static Lazy<ISystemClock> s_serviceSystemClock = new Lazy<ISystemClock>(InitializeSystemClock);
         private static Lazy<INotifySystemClockChanged> s_serviceSystemClockChanged = new Lazy<INotifySystemClockChanged>(InitializeSystemClockChanged);
+#if NO_WEAKREFOFT
+        private static readonly HashSet<WeakReference> s_systemClockChanged = new HashSet<WeakReference>();
+#else
         private static readonly HashSet<WeakReference<LocalScheduler>> s_systemClockChanged = new HashSet<WeakReference<LocalScheduler>>();
+#endif
         private static IDisposable s_systemClockChangedHandlerCollector;
 
         private static int _refCount;
@@ -63,9 +67,13 @@ namespace System.Reactive.PlatformServices
             {
                 foreach (var entry in s_systemClockChanged)
                 {
+#if NO_WEAKREFOFT
+                    var scheduler = entry.Target as LocalScheduler;
+                    if (scheduler != null)
+#else
                     var scheduler = default(LocalScheduler);
-
                     if (entry.TryGetTarget(out scheduler))
+#endif
                     {
                         scheduler.SystemClockChanged(sender, e);
                     }
@@ -95,7 +103,11 @@ namespace System.Reactive.PlatformServices
             //
             lock (s_systemClockChanged)
             {
+#if NO_WEAKREFOFT
+                s_systemClockChanged.Add(new WeakReference(scheduler, false));
+#else
                 s_systemClockChanged.Add(new WeakReference<LocalScheduler>(scheduler));
+#endif
 
                 if (s_systemClockChanged.Count == 1)
                 {
@@ -119,17 +131,29 @@ namespace System.Reactive.PlatformServices
             //
             lock (s_systemClockChanged)
             {
+#if NO_WEAKREFOFT
+                var remove = default(HashSet<WeakReference>);
+#else
                 var remove = default(HashSet<WeakReference<LocalScheduler>>);
+#endif
 
                 foreach (var handler in s_systemClockChanged)
                 {
+#if NO_WEAKREFOFT
+                    var scheduler = handler.Target as LocalScheduler;
+                    if (scheduler == null)
+#else
                     var scheduler = default(LocalScheduler);
-
                     if (!handler.TryGetTarget(out scheduler))
+#endif
                     {
                         if (remove == null)
                         {
+#if NO_WEAKREFOFT
+                            remove = new HashSet<WeakReference>();
+#else
                             remove = new HashSet<WeakReference<LocalScheduler>>();
+#endif
                         }
 
                         remove.Add(handler);

+ 4 - 0
Rx.NET/Source/System.Reactive.Core/Reactive/Internal/TaskServices.Default.cs

@@ -1,5 +1,7 @@
 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
 
+#if !NO_TPL
+
 using System.Threading;
 using System.Threading.Tasks;
 
@@ -30,4 +32,6 @@ namespace System.Reactive.PlatformServices
         }
     }
 }
+#endif
+
 #endif

+ 4 - 0
Rx.NET/Source/System.Reactive.Core/Reactive/Internal/TaskServices.cs

@@ -1,5 +1,7 @@
 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
 
+#if !NO_TPL
+
 using System.ComponentModel;
 using System.Reactive.PlatformServices;
 using System.Threading;
@@ -45,3 +47,5 @@ namespace System.Reactive.PlatformServices
         bool TrySetCanceled<T>(TaskCompletionSource<T> tcs, CancellationToken token);
     }
 }
+
+#endif

+ 1 - 1
Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/Observable/Join.cs

@@ -47,7 +47,7 @@ namespace System.Reactive.Linq.ObservableImpl
             private bool _leftDone;
             private int _leftID;
             private SortedDictionary<int, TLeft> _leftMap;
-            
+                   
             private bool _rightDone;
             private int _rightID;
             private SortedDictionary<int, TRight> _rightMap;

+ 5 - 1
Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/QueryLanguage.Blocking.cs

@@ -496,10 +496,14 @@ namespace System.Reactive.Linq
 
             public void Dispose()
             {
+#if HAS_MREEXPLICITDISPOSABLE
+                ((IDisposable)_evt).Dispose();
+#else
                 _evt.Dispose();
+#endif
             }
         }
 
-        #endregion
+#endregion
     }
 }

+ 2 - 0
Rx.NET/Source/System.Reactive.Linq/Reactive/Subjects/ReplaySubject.cs

@@ -980,7 +980,9 @@ namespace System.Reactive.Subjects
         /// <returns>Observer to send terminal notifications to.</returns>
         private IObserver<T> Done()
         {
+#pragma warning disable 0420
             return Interlocked.Exchange(ref _observer, NopObserver<T>.Instance);
+#pragma warning restore 0420
         }
     }
 }

+ 1 - 0
Rx.NET/Source/System.Reactive.Observable.Aliases/System.Reactive.Observable.Aliases.csproj

@@ -19,6 +19,7 @@
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Observable" Condition=" '$(BuildFlavor)' == 'SILVERLIGHTM7' " />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Observable.Aliases.cs" />

+ 4 - 0
Rx.NET/Source/System.Reactive.PlatformServices/Reactive/Internal/TaskServicesImpl.cs

@@ -1,5 +1,7 @@
 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
 
+#if !NO_TPL
+
 using System.Threading;
 using System.Threading.Tasks;
 
@@ -19,4 +21,6 @@ namespace System.Reactive.PlatformServices
         }
     }
 }
+#endif
+
 #endif

+ 4 - 0
Rx.NET/Source/System.Reactive.Providers/Reactive/ObservableQuery.cs

@@ -296,7 +296,11 @@ namespace System.Reactive
                 return base.VisitMethodCall(node);
             }
 
+#if NO_VISITLAMBDAOFT
+            protected override Expression VisitLambda(LambdaExpression node)
+#else
             protected override Expression VisitLambda<T>(Expression<T> node)
+#endif
             {
                 return node;
             }

+ 19 - 17
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableAsyncTest.cs

@@ -18,6 +18,7 @@ namespace ReactiveTests.Tests
     [TestClass]
     public partial class ObservableAsyncTest : ReactiveTest
     {
+#if !NO_TPL
         private Task<int> doneTask;
 
         public ObservableAsyncTest()
@@ -27,6 +28,7 @@ namespace ReactiveTests.Tests
             doneTask = tcs.Task;
         }
 
+#endif
         #region FromAsyncPattern
 
         [TestMethod]
@@ -1195,9 +1197,9 @@ namespace ReactiveTests.Tests
             }
         }
 
-        #endregion
+#endregion
 
-        #region Start
+#region Start
 
         [TestMethod]
         public void Start_ArgumentChecking()
@@ -1289,13 +1291,13 @@ namespace ReactiveTests.Tests
             }));
         }
 
-        #endregion
+#endregion
 
-        #region StartAsync
+#region StartAsync
 
 #if !NO_TPL
 
-        #region Func
+#region Func
 
         [TestMethod]
         public void StartAsync_Func_ArgumentChecking()
@@ -1496,9 +1498,9 @@ namespace ReactiveTests.Tests
         }
 #endif
 
-        #endregion
+#endregion
 
-        #region Action
+#region Action
 
         [TestMethod]
         public void StartAsync_Action_ArgumentChecking()
@@ -1684,17 +1686,17 @@ namespace ReactiveTests.Tests
         }
 #endif
 
-        #endregion
+#endregion
 
 #endif
 
-        #endregion
+#endregion
 
-        #region FromAsync
+#region FromAsync
 
 #if !NO_TPL
 
-        #region Func
+#region Func
 
         [TestMethod]
         public void FromAsync_Func_ArgumentChecking()
@@ -1882,9 +1884,9 @@ namespace ReactiveTests.Tests
         }
 #endif
 
-        #endregion
+#endregion
 
-        #region Action
+#region Action
 
         [TestMethod]
         public void FromAsync_Action_ArgumentChecking()
@@ -2062,13 +2064,13 @@ namespace ReactiveTests.Tests
         }
 #endif
 
-        #endregion
+#endregion
 
 #endif
 
-        #endregion
+#endregion
 
-        #region ToAsync
+#region ToAsync
 
         [TestMethod]
         public void ToAsync_ArgumentChecking()
@@ -2703,6 +2705,6 @@ namespace ReactiveTests.Tests
         }
 #endif
 
-        #endregion
+#endregion
     }
 }

+ 40 - 39
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableTimeTest.cs

@@ -2714,12 +2714,13 @@ namespace ReactiveTests.Tests
         {
             var scheduler = new TestScheduler();
             var observer = scheduler.CreateObserver<long>();
-            var completed = new ManualResetEventSlim();
 
-            Observable.Interval(TimeSpan.Zero).TakeWhile(i => i < 10).Subscribe(observer.OnNext, completed.Set);
+            var completed = new ManualResetEvent(false);
+
+            Observable.Interval(TimeSpan.Zero).TakeWhile(i => i < 10).Subscribe(observer.OnNext, () => completed.Set());
+
+            completed.WaitOne();
 
-            completed.Wait();
-            
             Assert.AreEqual(10, observer.Messages.Count);
         }
 
@@ -2754,9 +2755,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(Observable.Interval(TimeSpan.FromMilliseconds(1)).ToEnumerable().Take(3).SequenceEqual(new[] { 0L, 1L, 2L }));
         }
 
-        #endregion
+#endregion
 
-        #region + Sample +
+#region + Sample +
 
         [TestMethod]
         public void Sample_ArgumentChecking()
@@ -3295,9 +3296,9 @@ namespace ReactiveTests.Tests
         }
 #endif
 
-        #endregion
+#endregion
 
-        #region + Skip +
+#region + Skip +
 
         [TestMethod]
         public void Skip_ArgumentChecking()
@@ -3519,9 +3520,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(lst.Count == 0);
         }
 
-        #endregion
+#endregion
 
-        #region + SkipLast +
+#region + SkipLast +
 
         [TestMethod]
         public void SkipLast_ArgumentChecking()
@@ -3801,9 +3802,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(lst.SequenceEqual(Enumerable.Range(0, 10)));
         }
 
-        #endregion
+#endregion
 
-        #region + SkipUntil +
+#region + SkipUntil +
 
         [TestMethod]
         public void SkipUntil_ArgumentChecking()
@@ -4023,9 +4024,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(lst.Count == 0);
         }
 
-        #endregion
+#endregion
 
-        #region + Take +
+#region + Take +
 
         [TestMethod]
         public void Take_ArgumentChecking()
@@ -4250,9 +4251,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(lst.SequenceEqual(Enumerable.Range(0, 10)));
         }
 
-        #endregion
+#endregion
 
-        #region + TakeLast +
+#region + TakeLast +
 
         [TestMethod]
         public void TakeLast_ArgumentChecking()
@@ -4835,9 +4836,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(Enumerable.Range(0, 10).SequenceEqual(lst));
         }
 
-        #endregion
+#endregion
 
-        #region + TakeLastBuffer +
+#region + TakeLastBuffer +
 
         [TestMethod]
         public void TakeLastBuffer_ArgumentChecking()
@@ -5167,9 +5168,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(lst.Count == 0);
         }
 
-        #endregion
+#endregion
 
-        #region + TakeUntil +
+#region + TakeUntil +
 
         [TestMethod]
         public void TakeUntil_ArgumentChecking()
@@ -5392,9 +5393,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(lst.SequenceEqual(Enumerable.Range(0, 10)));
         }
 
-        #endregion
+#endregion
 
-        #region + Throttle +
+#region + Throttle +
 
         [TestMethod]
         public void Throttle_ArgumentChecking()
@@ -6028,9 +6029,9 @@ namespace ReactiveTests.Tests
             );
         }
 
-        #endregion
+#endregion
 
-        #region + TimeInterval +
+#region + TimeInterval +
 
         [TestMethod]
         public void TimeInterval_ArgumentChecking()
@@ -6253,9 +6254,9 @@ namespace ReactiveTests.Tests
             );
         }
 
-        #endregion
+#endregion
 
-        #region + Timeout +
+#region + Timeout +
 
         [TestMethod]
         public void Timeout_ArgumentChecking()
@@ -7411,9 +7412,9 @@ namespace ReactiveTests.Tests
             );
         }
 
-        #endregion
+#endregion
 
-        #region + Timer +
+#region + Timer +
 
         [TestMethod]
         public void OneShotTimer_TimeSpan_ArgumentChecking()
@@ -7465,11 +7466,11 @@ namespace ReactiveTests.Tests
         {
             var scheduler = new TestScheduler();
             var observer = scheduler.CreateObserver<long>();
-            var completed = new ManualResetEventSlim();
+            var completed = new ManualResetEvent(false);
 
-            Observable.Timer(TimeSpan.Zero).Subscribe(observer.OnNext, completed.Set);
+            Observable.Timer(TimeSpan.Zero).Subscribe(observer.OnNext, () => completed.Set());
 
-            completed.Wait();
+            completed.WaitOne();
             
             Assert.AreEqual(1, observer.Messages.Count);
         }
@@ -7596,11 +7597,11 @@ namespace ReactiveTests.Tests
         {
             var scheduler = new TestScheduler();
             var observer = scheduler.CreateObserver<long>();
-            var completed = new ManualResetEventSlim();
+            var completed = new ManualResetEvent(false);
 
-            Observable.Timer(TimeSpan.Zero, TimeSpan.Zero).TakeWhile(i => i < 10).Subscribe(observer.OnNext, completed.Set);
+            Observable.Timer(TimeSpan.Zero, TimeSpan.Zero).TakeWhile(i => i < 10).Subscribe(observer.OnNext, () => completed.Set());
 
-            completed.Wait();
+            completed.WaitOne();
 
             Assert.AreEqual(10, observer.Messages.Count);
         }
@@ -8293,9 +8294,9 @@ namespace ReactiveTests.Tests
             }
         }
 
-        #endregion
+#endregion
 
-        #region + Timestamp +
+#region + Timestamp +
 
         [TestMethod]
         public void Timestamp_ArgumentChecking()
@@ -8416,9 +8417,9 @@ namespace ReactiveTests.Tests
             Assert.IsTrue(Observable.Return(1).Timestamp().Count().First() == 1);
         }
 
-        #endregion
+#endregion
 
-        #region + Window +
+#region + Window +
 
         [TestMethod]
         public void Window_Time_Basic()
@@ -8973,6 +8974,6 @@ namespace ReactiveTests.Tests
             Observable.Range(1, 10).Window(TimeSpan.FromDays(1), 3).Skip(1).First().SequenceEqual(Observable.Range(4, 3));
         }
 
-        #endregion
+#endregion
     }
 }

+ 4 - 0
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/QbservableTest.cs

@@ -1874,7 +1874,11 @@ namespace ReactiveTests.Tests
         [TestMethod]
         public void Qbservable_HigherOrder()
         {
+#if NO_VARIANCE
+            var res = Qbservable.Return(Qbservable.Provider, 42).Select(_ => (IObservable<int>)Qbservable.Return(Qbservable.Provider, 42)).Switch().Single();
+#else
             var res = Qbservable.Return(Qbservable.Provider, 42).Select(_ => Qbservable.Return(Qbservable.Provider, 42)).Switch().Single();
+#endif
             Assert.AreEqual(42, res);
         }
     }

+ 2 - 0
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/Subjects/ReplaySubjectTest.cs

@@ -1846,6 +1846,7 @@ namespace ReactiveTests.Tests
             }));
         }
 
+#if !NO_INTERNALSTEST
         [TestMethod]
         public void FastImmediateObserver_Simple1()
         {
@@ -2039,5 +2040,6 @@ namespace ReactiveTests.Tests
 
             return ns;
         }
+#endif
     }
 }