未验证 提交 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">
<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" />
......
<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" />
......
<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>
......
<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" />
......
<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>
......
......@@ -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()
......
......@@ -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 =
......
......@@ -5,6 +5,7 @@
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",
......
......@@ -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
......
......@@ -5,9 +5,13 @@
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
......
......@@ -7,9 +7,13 @@
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;
......
......@@ -97,6 +97,13 @@ private static void InitFCN()
}
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);
......
......@@ -13,6 +13,7 @@
using System.Security;
using System.Threading;
using System.Diagnostics;
using System.Runtime.Versioning;
namespace System.Runtime.Caching
{
......@@ -38,6 +39,12 @@ public class MemoryCache : ObjectCache, IEnumerable, IDisposable
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; } }
......@@ -195,9 +202,12 @@ private void InitDisposableMembers(NameValueCollection config)
try
{
try
{
if (_countersSupported)
{
_perfCounters = new Counters(_name);
}
}
catch
{
// ignore exceptions from perf counters
......@@ -480,9 +490,12 @@ public void Dispose()
}
}
if (_perfCounters != null)
{
if (_countersSupported)
{
_perfCounters.Dispose();
}
}
GC.SuppressFinalize(this);
}
}
......
......@@ -8,6 +8,7 @@
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 @@ internal sealed class MemoryCacheStatistics : IDisposable
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 @@ private int GetPercentToTrim()
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 @@ private void InitializeConfiguration(NameValueCollection config)
}
}
if (element != null)
if (element != null && _configSupported)
{
_configCacheMemoryLimitMegabytes = element.CacheMemoryLimitMegabytes;
_configPhysicalMemoryLimitPercentage = element.PhysicalMemoryLimitPercentage;
......
......@@ -8,6 +8,7 @@
using System.Diagnostics;
using System.Security;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.Versioning;
namespace System.Runtime.Caching
{
......@@ -25,6 +26,12 @@ internal sealed class MemoryCacheStore : IDisposable
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 @@ private void AddToCache(MemoryCacheEntry entry)
}
entry.CallNotifyOnChanged();
if (_perfCounters != null)
if (_perfCounters != null && _countersSupported)
{
_perfCounters.Increment(CounterName.Entries);
_perfCounters.Increment(CounterName.Turnover);
......@@ -108,7 +115,7 @@ private void RemoveFromCache(MemoryCacheEntry entry, CacheEntryRemovedReason rea
{
entry.Release(_cache, reason);
}
if (_perfCounters != null)
if (_perfCounters != null && _countersSupported)
{
_perfCounters.Decrement(CounterName.Entries);
_perfCounters.Increment(CounterName.Turnover);
......@@ -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.
entry.UpdateSlidingExpForUpdateSentinel();
if (updatePerfCounters && _perfCounters != null)
if (updatePerfCounters && _perfCounters != null && _countersSupported)
{
_perfCounters.Increment(CounterName.Hits);
_perfCounters.Increment(CounterName.HitRatio);
......@@ -145,7 +152,7 @@ internal void UpdateExpAndUsage(MemoryCacheEntry entry, bool updatePerfCounters
}
else
{
if (updatePerfCounters && _perfCounters != null)
if (updatePerfCounters && _perfCounters != null && _countersSupported)
{
_perfCounters.Increment(CounterName.Misses);
_perfCounters.Increment(CounterName.HitRatioBase);
......@@ -404,7 +411,7 @@ internal long TrimInternal(int percent)
trimmedOrExpired += trimmed;
}
if (trimmed > 0 && _perfCounters != null)
if (trimmed > 0 && _perfCounters != null && _countersSupported)
{
// Update values for perfcounters
_perfCounters.IncrementBy(CounterName.Trims, trimmed);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册