未验证 提交 9414d571 编写于 作者: A Alexander Köplinger 提交者: GitHub

Add NetCoreAppCurrent configuration to three ref projects (#54146)

System.ComponentModel.Composition, System.Diagnostics.PerformanceCounter and System.Runtime.Caching.

Helps with https://github.com/dotnet/runtime/issues/54012
上级 092479e4
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;netstandard2.0</TargetFrameworks> <TargetFrameworks>$(NetCoreAppCurrent);netcoreapp3.1;netstandard2.0</TargetFrameworks>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="System.ComponentModel.Composition.cs" /> <Compile Include="System.ComponentModel.Composition.cs" />
<Compile Include="System.ComponentModel.Composition.Forwards.cs" /> <Compile Include="System.ComponentModel.Composition.Forwards.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
<ProjectReference Include="$(LibrariesProjectRoot)System.Linq.Expressions\ref\System.Linq.Expressions.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'"> <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<Reference Include="System.Linq.Expressions" /> <Reference Include="System.Linq.Expressions" />
<Reference Include="System.Runtime" /> <Reference Include="System.Runtime" />
......
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;netstandard2.0;net461</TargetFrameworks> <TargetFrameworks>$(NetCoreAppCurrent);netcoreapp3.1;netstandard2.0;net461</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Condition="'$(TargetFramework)' != 'net461'" Include="System.Diagnostics.PerformanceCounter.cs" /> <Compile Condition="'$(TargetFramework)' != 'net461'" Include="System.Diagnostics.PerformanceCounter.cs" />
<Compile Condition="'$(TargetFramework)' == 'net461'" Include="System.Diagnostics.PerformanceCounter.net461.cs" /> <Compile Condition="'$(TargetFramework)' == 'net461'" Include="System.Diagnostics.PerformanceCounter.net461.cs" />
</ItemGroup> </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'"> <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<Reference Include="System.Collections.NonGeneric" /> <Reference Include="System.Collections.NonGeneric" />
<Reference Include="System.ComponentModel.Primitives" /> <Reference Include="System.ComponentModel.Primitives" />
......
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <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> </PropertyGroup>
<!-- DesignTimeBuild requires all the TargetFramework Derived Properties to not be present in the first property group. --> <!-- DesignTimeBuild requires all the TargetFramework Derived Properties to not be present in the first property group. -->
<PropertyGroup> <PropertyGroup>
......
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;netstandard2.0</TargetFrameworks> <TargetFrameworks>$(NetCoreAppCurrent);netcoreapp3.1;netstandard2.0</TargetFrameworks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="System.Runtime.Caching.cs" /> <Compile Include="System.Runtime.Caching.cs" />
</ItemGroup> </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'"> <ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<Reference Include="System.Collections" /> <Reference Include="System.Collections" />
<Reference Include="System.Collections.Specialized" /> <Reference Include="System.Collections.Specialized" />
......
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <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> <IncludePlatformAttributes>true</IncludePlatformAttributes>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
......
...@@ -3,9 +3,13 @@ ...@@ -3,9 +3,13 @@
using System; using System;
using System.Configuration; using System.Configuration;
using System.Runtime.Versioning;
namespace System.Runtime.Caching.Configuration namespace System.Runtime.Caching.Configuration
{ {
#if NET5_0_OR_GREATER
[UnsupportedOSPlatform("browser")]
#endif
internal sealed class CachingSectionGroup : ConfigurationSectionGroup internal sealed class CachingSectionGroup : ConfigurationSectionGroup
{ {
public CachingSectionGroup() public CachingSectionGroup()
......
...@@ -4,9 +4,13 @@ ...@@ -4,9 +4,13 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Configuration; using System.Configuration;
using System.Runtime.Versioning;
namespace System.Runtime.Caching.Configuration namespace System.Runtime.Caching.Configuration
{ {
#if NET5_0_OR_GREATER
[UnsupportedOSPlatform("browser")]
#endif
internal sealed class MemoryCacheElement : ConfigurationElement internal sealed class MemoryCacheElement : ConfigurationElement
{ {
private static readonly ConfigurationProperty s_propName = private static readonly ConfigurationProperty s_propName =
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Configuration; using System.Configuration;
using System.Runtime.Caching.Resources; using System.Runtime.Caching.Resources;
using System.Runtime.Versioning;
namespace System.Runtime.Caching.Configuration namespace System.Runtime.Caching.Configuration
{ {
...@@ -20,6 +21,9 @@ namespace System.Runtime.Caching.Configuration ...@@ -20,6 +21,9 @@ namespace System.Runtime.Caching.Configuration
</system.caching> </system.caching>
*/ */
#if NET5_0_OR_GREATER
[UnsupportedOSPlatform("browser")]
#endif
internal sealed class MemoryCacheSection : ConfigurationSection internal sealed class MemoryCacheSection : ConfigurationSection
{ {
private static readonly ConfigurationProperty s_propNamedCaches = new ConfigurationProperty("namedCaches", private static readonly ConfigurationProperty s_propNamedCaches = new ConfigurationProperty("namedCaches",
......
...@@ -3,9 +3,13 @@ ...@@ -3,9 +3,13 @@
using System; using System;
using System.Configuration; using System.Configuration;
using System.Runtime.Versioning;
namespace System.Runtime.Caching.Configuration namespace System.Runtime.Caching.Configuration
{ {
#if NET5_0_OR_GREATER
[UnsupportedOSPlatform("browser")]
#endif
[ConfigurationCollection(typeof(MemoryCacheElement), [ConfigurationCollection(typeof(MemoryCacheElement),
CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap)] CollectionType = ConfigurationElementCollectionType.AddRemoveClearMap)]
internal sealed class MemoryCacheSettingsCollection : ConfigurationElementCollection internal sealed class MemoryCacheSettingsCollection : ConfigurationElementCollection
......
...@@ -5,9 +5,13 @@ ...@@ -5,9 +5,13 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics.Tracing; using System.Diagnostics.Tracing;
using System.Threading; using System.Threading;
using System.Runtime.Versioning;
namespace System.Runtime.Caching namespace System.Runtime.Caching
{ {
#if NET5_0_OR_GREATER
[UnsupportedOSPlatform("browser")]
#endif
internal sealed class Counters : EventSource internal sealed class Counters : EventSource
{ {
#if NETCOREAPP3_1_OR_GREATER #if NETCOREAPP3_1_OR_GREATER
......
...@@ -7,9 +7,13 @@ ...@@ -7,9 +7,13 @@
using System.Collections; using System.Collections;
using System.IO; using System.IO;
using System.Security; using System.Security;
using System.Runtime.Versioning;
namespace System.Runtime.Caching namespace System.Runtime.Caching
{ {
#if NET5_0_OR_GREATER
[UnsupportedOSPlatform("browser")]
#endif
internal sealed class FileChangeNotificationSystem : IFileChangeNotificationSystem internal sealed class FileChangeNotificationSystem : IFileChangeNotificationSystem
{ {
private readonly Hashtable _dirMonitors; private readonly Hashtable _dirMonitors;
......
...@@ -97,6 +97,13 @@ private static void InitFCN() ...@@ -97,6 +97,13 @@ private static void InitFCN()
} }
if (fcn == null) if (fcn == null)
{ {
#if NET5_0_OR_GREATER
if (OperatingSystem.IsBrowser())
{
throw new PlatformNotSupportedException();
}
#endif
fcn = new FileChangeNotificationSystem(); fcn = new FileChangeNotificationSystem();
} }
Interlocked.CompareExchange(ref s_fcn, fcn, null); Interlocked.CompareExchange(ref s_fcn, fcn, null);
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
using System.Security; using System.Security;
using System.Threading; using System.Threading;
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.Versioning;
namespace System.Runtime.Caching namespace System.Runtime.Caching
{ {
...@@ -38,6 +39,12 @@ public class MemoryCache : ObjectCache, IEnumerable, IDisposable ...@@ -38,6 +39,12 @@ public class MemoryCache : ObjectCache, IEnumerable, IDisposable
private bool _useMemoryCacheManager = true; private bool _useMemoryCacheManager = true;
private EventHandler _onAppDomainUnload; private EventHandler _onAppDomainUnload;
private UnhandledExceptionEventHandler _onUnhandledException; 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); } } private bool IsDisposed { get { return (_disposed == 1); } }
internal bool ConfigLess { get { return _configLess; } } internal bool ConfigLess { get { return _configLess; } }
...@@ -196,7 +203,10 @@ private void InitDisposableMembers(NameValueCollection config) ...@@ -196,7 +203,10 @@ private void InitDisposableMembers(NameValueCollection config)
{ {
try try
{ {
_perfCounters = new Counters(_name); if (_countersSupported)
{
_perfCounters = new Counters(_name);
}
} }
catch catch
{ {
...@@ -481,7 +491,10 @@ public void Dispose() ...@@ -481,7 +491,10 @@ public void Dispose()
} }
if (_perfCounters != null) if (_perfCounters != null)
{ {
_perfCounters.Dispose(); if (_countersSupported)
{
_perfCounters.Dispose();
}
} }
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
using System.Globalization; using System.Globalization;
using System.Runtime.Caching.Configuration; using System.Runtime.Caching.Configuration;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security; using System.Security;
using System.Threading; using System.Threading;
...@@ -36,6 +37,12 @@ internal sealed class MemoryCacheStatistics : IDisposable ...@@ -36,6 +37,12 @@ internal sealed class MemoryCacheStatistics : IDisposable
private CacheMemoryMonitor _cacheMemoryMonitor; private CacheMemoryMonitor _cacheMemoryMonitor;
private readonly MemoryCache _memoryCache; private readonly MemoryCache _memoryCache;
private readonly PhysicalMemoryMonitor _physicalMemoryMonitor; 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 // private
...@@ -117,7 +124,7 @@ private int GetPercentToTrim() ...@@ -117,7 +124,7 @@ private int GetPercentToTrim()
private void InitializeConfiguration(NameValueCollection config) private void InitializeConfiguration(NameValueCollection config)
{ {
MemoryCacheElement element = null; MemoryCacheElement element = null;
if (!_memoryCache.ConfigLess) if (!_memoryCache.ConfigLess && _configSupported)
{ {
MemoryCacheSection section = ConfigurationManager.GetSection("system.runtime.caching/memoryCache") as MemoryCacheSection; MemoryCacheSection section = ConfigurationManager.GetSection("system.runtime.caching/memoryCache") as MemoryCacheSection;
if (section != null) if (section != null)
...@@ -126,7 +133,7 @@ private void InitializeConfiguration(NameValueCollection config) ...@@ -126,7 +133,7 @@ private void InitializeConfiguration(NameValueCollection config)
} }
} }
if (element != null) if (element != null && _configSupported)
{ {
_configCacheMemoryLimitMegabytes = element.CacheMemoryLimitMegabytes; _configCacheMemoryLimitMegabytes = element.CacheMemoryLimitMegabytes;
_configPhysicalMemoryLimitPercentage = element.PhysicalMemoryLimitPercentage; _configPhysicalMemoryLimitPercentage = element.PhysicalMemoryLimitPercentage;
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Security; using System.Security;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Runtime.Versioning;
namespace System.Runtime.Caching namespace System.Runtime.Caching
{ {
...@@ -25,6 +26,12 @@ internal sealed class MemoryCacheStore : IDisposable ...@@ -25,6 +26,12 @@ internal sealed class MemoryCacheStore : IDisposable
private volatile bool _useInsertBlock; private volatile bool _useInsertBlock;
private readonly MemoryCache _cache; private readonly MemoryCache _cache;
private readonly Counters _perfCounters; 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) internal MemoryCacheStore(MemoryCache cache, Counters perfCounters)
{ {
...@@ -73,7 +80,7 @@ private void AddToCache(MemoryCacheEntry entry) ...@@ -73,7 +80,7 @@ private void AddToCache(MemoryCacheEntry entry)
} }
entry.CallNotifyOnChanged(); entry.CallNotifyOnChanged();
if (_perfCounters != null) if (_perfCounters != null && _countersSupported)
{ {
_perfCounters.Increment(CounterName.Entries); _perfCounters.Increment(CounterName.Entries);
_perfCounters.Increment(CounterName.Turnover); _perfCounters.Increment(CounterName.Turnover);
...@@ -108,7 +115,7 @@ private void RemoveFromCache(MemoryCacheEntry entry, CacheEntryRemovedReason rea ...@@ -108,7 +115,7 @@ private void RemoveFromCache(MemoryCacheEntry entry, CacheEntryRemovedReason rea
{ {
entry.Release(_cache, reason); entry.Release(_cache, reason);
} }
if (_perfCounters != null) if (_perfCounters != null && _countersSupported)
{ {
_perfCounters.Decrement(CounterName.Entries); _perfCounters.Decrement(CounterName.Entries);
_perfCounters.Increment(CounterName.Turnover); _perfCounters.Increment(CounterName.Turnover);
...@@ -136,7 +143,7 @@ internal void UpdateExpAndUsage(MemoryCacheEntry entry, bool updatePerfCounters ...@@ -136,7 +143,7 @@ internal void UpdateExpAndUsage(MemoryCacheEntry entry, bool updatePerfCounters
// keep the sentinel from expiring, which in turn would force a removal of this entry from the cache. // keep the sentinel from expiring, which in turn would force a removal of this entry from the cache.
entry.UpdateSlidingExpForUpdateSentinel(); entry.UpdateSlidingExpForUpdateSentinel();
if (updatePerfCounters && _perfCounters != null) if (updatePerfCounters && _perfCounters != null && _countersSupported)
{ {
_perfCounters.Increment(CounterName.Hits); _perfCounters.Increment(CounterName.Hits);
_perfCounters.Increment(CounterName.HitRatio); _perfCounters.Increment(CounterName.HitRatio);
...@@ -145,7 +152,7 @@ internal void UpdateExpAndUsage(MemoryCacheEntry entry, bool updatePerfCounters ...@@ -145,7 +152,7 @@ internal void UpdateExpAndUsage(MemoryCacheEntry entry, bool updatePerfCounters
} }
else else
{ {
if (updatePerfCounters && _perfCounters != null) if (updatePerfCounters && _perfCounters != null && _countersSupported)
{ {
_perfCounters.Increment(CounterName.Misses); _perfCounters.Increment(CounterName.Misses);
_perfCounters.Increment(CounterName.HitRatioBase); _perfCounters.Increment(CounterName.HitRatioBase);
...@@ -404,7 +411,7 @@ internal long TrimInternal(int percent) ...@@ -404,7 +411,7 @@ internal long TrimInternal(int percent)
trimmedOrExpired += trimmed; trimmedOrExpired += trimmed;
} }
if (trimmed > 0 && _perfCounters != null) if (trimmed > 0 && _perfCounters != null && _countersSupported)
{ {
// Update values for perfcounters // Update values for perfcounters
_perfCounters.IncrementBy(CounterName.Trims, trimmed); _perfCounters.IncrementBy(CounterName.Trims, trimmed);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册