Add NetCoreAppCurrent configuration to three ref projects (#54146)
authorAlexander Köplinger <alex.koeplinger@outlook.com>
Tue, 15 Jun 2021 09:46:34 +0000 (11:46 +0200)
committerGitHub <noreply@github.com>
Tue, 15 Jun 2021 09:46:34 +0000 (11:46 +0200)
System.ComponentModel.Composition, System.Diagnostics.PerformanceCounter and System.Runtime.Caching.

Helps with https://github.com/dotnet/runtime/issues/54012

15 files changed:
src/libraries/System.ComponentModel.Composition/ref/System.ComponentModel.Composition.csproj
src/libraries/System.Diagnostics.PerformanceCounter/ref/System.Diagnostics.PerformanceCounter.csproj
src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj
src/libraries/System.Runtime.Caching/ref/System.Runtime.Caching.csproj
src/libraries/System.Runtime.Caching/src/System.Runtime.Caching.csproj
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Configuration/CachingSectionGroup.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Configuration/MemoryCacheElement.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Configuration/MemoryCacheSection.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Configuration/MemoryCacheSettingsCollection.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/Counters.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/FileChangeNotificationSystem.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/HostFileChangeMonitor.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCache.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheStatistics.cs
src/libraries/System.Runtime.Caching/src/System/Runtime/Caching/MemoryCacheStore.cs

index c0fcd79..5b6fcbd 100644 (file)
@@ -1,12 +1,15 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <TargetFrameworks>netcoreapp3.1;netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>$(NetCoreAppCurrent);netcoreapp3.1;netstandard2.0</TargetFrameworks>
     <Nullable>enable</Nullable>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="System.ComponentModel.Composition.cs" />
     <Compile Include="System.ComponentModel.Composition.Forwards.cs" />
   </ItemGroup>
+  <ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
+    <ProjectReference Include="$(LibrariesProjectRoot)System.Linq.Expressions\ref\System.Linq.Expressions.csproj" />
+  </ItemGroup>
   <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
     <Reference Include="System.Linq.Expressions" />
     <Reference Include="System.Runtime" />
index 8e37074..b01b83e 100644 (file)
@@ -1,12 +1,17 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <TargetFrameworks>netcoreapp3.1;netstandard2.0;net461</TargetFrameworks>
+    <TargetFrameworks>$(NetCoreAppCurrent);netcoreapp3.1;netstandard2.0;net461</TargetFrameworks>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>
   <ItemGroup>
     <Compile Condition="'$(TargetFramework)' != 'net461'" Include="System.Diagnostics.PerformanceCounter.cs" />
     <Compile Condition="'$(TargetFramework)' == 'net461'" Include="System.Diagnostics.PerformanceCounter.net461.cs" />
   </ItemGroup>
+  <ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
+    <ProjectReference Include="$(LibrariesProjectRoot)System.Collections.NonGeneric\ref\System.Collections.NonGeneric.csproj" />
+    <ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel.Primitives\ref\System.ComponentModel.Primitives.csproj" />
+    <ProjectReference Include="$(LibrariesProjectRoot)System.Runtime.InteropServices\ref\System.Runtime.InteropServices.csproj" />
+  </ItemGroup>
   <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
     <Reference Include="System.Collections.NonGeneric" />
     <Reference Include="System.ComponentModel.Primitives" />
index 3265bc1..598ae83 100644 (file)
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <TargetFrameworks>$(NetCoreAppCurrent)-windows;netcoreapp3.1-windows;netcoreapp3.1;netstandard2.0;net461</TargetFrameworks>
+    <TargetFrameworks>$(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent);netcoreapp3.1-windows;netcoreapp3.1;netstandard2.0;net461</TargetFrameworks>
   </PropertyGroup>
   <!-- DesignTimeBuild requires all the TargetFramework Derived Properties to not be present in the first property group. -->
   <PropertyGroup>
index 32f5458..2083b82 100644 (file)
@@ -1,10 +1,15 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <TargetFrameworks>netcoreapp3.1;netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>$(NetCoreAppCurrent);netcoreapp3.1;netstandard2.0</TargetFrameworks>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="System.Runtime.Caching.cs" />
   </ItemGroup>
+  <ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
+    <ProjectReference Include="$(LibrariesProjectRoot)System.Collections\ref\System.Collections.csproj" />
+    <ProjectReference Include="$(LibrariesProjectRoot)System.Collections.Specialized\ref\System.Collections.Specialized.csproj" />
+    <ProjectReference Include="$(LibrariesProjectRoot)System.ComponentModel\ref\System.ComponentModel.csproj" />
+  </ItemGroup>
   <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
     <Reference Include="System.Collections" />
     <Reference Include="System.Collections.Specialized" />
index 49cecf4..f9977c0 100644 (file)
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <TargetFrameworks>$(NetCoreAppCurrent)-windows;netcoreapp3.1-windows;netcoreapp3.1;netstandard2.0-windows;netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>$(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent);netcoreapp3.1-windows;netcoreapp3.1;netstandard2.0-windows;netstandard2.0</TargetFrameworks>
     <IncludePlatformAttributes>true</IncludePlatformAttributes>
   </PropertyGroup>
   <ItemGroup>
index 3452f76..02f8559 100644 (file)
@@ -3,9 +3,13 @@
 
 using System;
 using System.Configuration;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching.Configuration
 {
+#if NET5_0_OR_GREATER
+    [UnsupportedOSPlatform("browser")]
+#endif
     internal sealed class CachingSectionGroup : ConfigurationSectionGroup
     {
         public CachingSectionGroup()
index 26d0880..cf798f2 100644 (file)
@@ -4,9 +4,13 @@
 using System;
 using System.ComponentModel;
 using System.Configuration;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching.Configuration
 {
+#if NET5_0_OR_GREATER
+    [UnsupportedOSPlatform("browser")]
+#endif
     internal sealed class MemoryCacheElement : ConfigurationElement
     {
         private static readonly ConfigurationProperty s_propName =
index 563f3cc..df535cd 100644 (file)
@@ -5,6 +5,7 @@ using System;
 using System.Collections.Specialized;
 using System.Configuration;
 using System.Runtime.Caching.Resources;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching.Configuration
 {
@@ -20,6 +21,9 @@ namespace System.Runtime.Caching.Configuration
        </system.caching>
     */
 
+#if NET5_0_OR_GREATER
+    [UnsupportedOSPlatform("browser")]
+#endif
     internal sealed class MemoryCacheSection : ConfigurationSection
     {
         private static readonly ConfigurationProperty s_propNamedCaches = new ConfigurationProperty("namedCaches",
index 7a34adf..8c08a0b 100644 (file)
@@ -3,9 +3,13 @@
 
 using System;
 using System.Configuration;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching.Configuration
 {
+#if NET5_0_OR_GREATER
+    [UnsupportedOSPlatform("browser")]
+#endif
     [ConfigurationCollection(typeof(MemoryCacheElement),
     CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap)]
     internal sealed class MemoryCacheSettingsCollection : ConfigurationElementCollection
index a6845ec..5e8a371 100644 (file)
@@ -5,9 +5,13 @@ using System;
 using System.Collections.Generic;
 using System.Diagnostics.Tracing;
 using System.Threading;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching
 {
+#if NET5_0_OR_GREATER
+    [UnsupportedOSPlatform("browser")]
+#endif
     internal sealed class Counters : EventSource
     {
 #if NETCOREAPP3_1_OR_GREATER
index 339169a..497017c 100644 (file)
@@ -7,9 +7,13 @@ using System.Runtime.Caching.Resources;
 using System.Collections;
 using System.IO;
 using System.Security;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching
 {
+#if NET5_0_OR_GREATER
+    [UnsupportedOSPlatform("browser")]
+#endif
     internal sealed class FileChangeNotificationSystem : IFileChangeNotificationSystem
     {
         private readonly Hashtable _dirMonitors;
index c354604..c80daaa 100644 (file)
@@ -97,6 +97,13 @@ namespace System.Runtime.Caching
                 }
                 if (fcn == null)
                 {
+#if NET5_0_OR_GREATER
+                    if (OperatingSystem.IsBrowser())
+                    {
+                        throw new PlatformNotSupportedException();
+                    }
+#endif
+
                     fcn = new FileChangeNotificationSystem();
                 }
                 Interlocked.CompareExchange(ref s_fcn, fcn, null);
index 31d3db6..72d9211 100644 (file)
@@ -13,6 +13,7 @@ using System.Diagnostics.CodeAnalysis;
 using System.Security;
 using System.Threading;
 using System.Diagnostics;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching
 {
@@ -38,6 +39,12 @@ namespace System.Runtime.Caching
         private bool _useMemoryCacheManager = true;
         private EventHandler _onAppDomainUnload;
         private UnhandledExceptionEventHandler _onUnhandledException;
+#if NET5_0_OR_GREATER
+        [UnsupportedOSPlatformGuard("browser")]
+        private static bool _countersSupported => !OperatingSystem.IsBrowser();
+#else
+        private static bool _countersSupported => true;
+#endif
 
         private bool IsDisposed { get { return (_disposed == 1); } }
         internal bool ConfigLess { get { return _configLess; } }
@@ -196,7 +203,10 @@ namespace System.Runtime.Caching
             {
                 try
                 {
-                    _perfCounters = new Counters(_name);
+                    if (_countersSupported)
+                    {
+                        _perfCounters = new Counters(_name);
+                    }
                 }
                 catch
                 {
@@ -481,7 +491,10 @@ namespace System.Runtime.Caching
                 }
                 if (_perfCounters != null)
                 {
-                    _perfCounters.Dispose();
+                    if (_countersSupported)
+                    {
+                        _perfCounters.Dispose();
+                    }
                 }
                 GC.SuppressFinalize(this);
             }
index b5cb20d..107c46f 100644 (file)
@@ -8,6 +8,7 @@ using System.Diagnostics.CodeAnalysis;
 using System.Globalization;
 using System.Runtime.Caching.Configuration;
 using System.Runtime.InteropServices;
+using System.Runtime.Versioning;
 using System.Security;
 using System.Threading;
 
@@ -36,6 +37,12 @@ namespace System.Runtime.Caching
         private CacheMemoryMonitor _cacheMemoryMonitor;
         private readonly MemoryCache _memoryCache;
         private readonly PhysicalMemoryMonitor _physicalMemoryMonitor;
+#if NET5_0_OR_GREATER
+        [UnsupportedOSPlatformGuard("browser")]
+        private static bool _configSupported => !OperatingSystem.IsBrowser();
+#else
+        private static bool _configSupported => true;
+#endif
 
         // private
 
@@ -117,7 +124,7 @@ namespace System.Runtime.Caching
         private void InitializeConfiguration(NameValueCollection config)
         {
             MemoryCacheElement element = null;
-            if (!_memoryCache.ConfigLess)
+            if (!_memoryCache.ConfigLess && _configSupported)
             {
                 MemoryCacheSection section = ConfigurationManager.GetSection("system.runtime.caching/memoryCache") as MemoryCacheSection;
                 if (section != null)
@@ -126,7 +133,7 @@ namespace System.Runtime.Caching
                 }
             }
 
-            if (element != null)
+            if (element != null && _configSupported)
             {
                 _configCacheMemoryLimitMegabytes = element.CacheMemoryLimitMegabytes;
                 _configPhysicalMemoryLimitPercentage = element.PhysicalMemoryLimitPercentage;
index 47e5de9..047bc8f 100644 (file)
@@ -8,6 +8,7 @@ using System.Threading;
 using System.Diagnostics;
 using System.Security;
 using System.Diagnostics.CodeAnalysis;
+using System.Runtime.Versioning;
 
 namespace System.Runtime.Caching
 {
@@ -25,6 +26,12 @@ namespace System.Runtime.Caching
         private volatile bool _useInsertBlock;
         private readonly MemoryCache _cache;
         private readonly Counters _perfCounters;
+#if NET5_0_OR_GREATER
+        [UnsupportedOSPlatformGuard("browser")]
+        private static bool _countersSupported => !OperatingSystem.IsBrowser();
+#else
+        private static bool _countersSupported => true;
+#endif
 
         internal MemoryCacheStore(MemoryCache cache, Counters perfCounters)
         {
@@ -73,7 +80,7 @@ namespace System.Runtime.Caching
             }
 
             entry.CallNotifyOnChanged();
-            if (_perfCounters != null)
+            if (_perfCounters != null && _countersSupported)
             {
                 _perfCounters.Increment(CounterName.Entries);
                 _perfCounters.Increment(CounterName.Turnover);
@@ -108,7 +115,7 @@ namespace System.Runtime.Caching
                 {
                     entry.Release(_cache, reason);
                 }
-                if (_perfCounters != null)
+                if (_perfCounters != null && _countersSupported)
                 {
                     _perfCounters.Decrement(CounterName.Entries);
                     _perfCounters.Increment(CounterName.Turnover);
@@ -136,7 +143,7 @@ namespace System.Runtime.Caching
                 // keep the sentinel from expiring, which in turn would force a removal of this entry from the cache.
                 entry.UpdateSlidingExpForUpdateSentinel();
 
-                if (updatePerfCounters && _perfCounters != null)
+                if (updatePerfCounters && _perfCounters != null && _countersSupported)
                 {
                     _perfCounters.Increment(CounterName.Hits);
                     _perfCounters.Increment(CounterName.HitRatio);
@@ -145,7 +152,7 @@ namespace System.Runtime.Caching
             }
             else
             {
-                if (updatePerfCounters && _perfCounters != null)
+                if (updatePerfCounters && _perfCounters != null && _countersSupported)
                 {
                     _perfCounters.Increment(CounterName.Misses);
                     _perfCounters.Increment(CounterName.HitRatioBase);
@@ -404,7 +411,7 @@ namespace System.Runtime.Caching
                 trimmedOrExpired += trimmed;
             }
 
-            if (trimmed > 0 && _perfCounters != null)
+            if (trimmed > 0 && _perfCounters != null && _countersSupported)
             {
                 // Update values for perfcounters
                 _perfCounters.IncrementBy(CounterName.Trims, trimmed);