Target type | .NET Core 5.0 | .NET Core (Cross-platform) 5.0 | .NET Framework 4.6.1 | .NET Native 1.0 | ASP.NET 5 1.0 | Recommended changes |
System.Net.NetworkInformation.UnicastIPAddressInformationCollection | | | | | | |
GetEnumerator | | | | | | |
  |   |   |   |   |   |   |
System.AppDomain | | | | | | Use object with finalizer stored in static variable, or use app-model specific unload notifications (e.g. Application.Suspending event for modern apps) |
add_DomainUnload(System.EventHandler) | | | | | | Use object with finalizer stored in static variable, or use app-model specific unload notifications (e.g. Application.Suspending event for modern apps) |
GetAssemblies | | | | | | Remove usage |
remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) | | | | | | |
add_AssemblyLoad(System.AssemblyLoadEventHandler) | | | | | | |
add_AssemblyResolve(System.ResolveEventHandler) | | | | | | Remove usage |
ApplyPolicy(System.String) | | | | | | |
get_CurrentDomain | | | | | | Remove usage |
ReflectionOnlyGetAssemblies | | | | | | |
add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) | | | | | | |
  |   |   |   |   |   |   |
System.Management.ManagementObjectSearcher | | | | | | |
#ctor(System.String) | | | | | | |
Get | | | | | | |
  |   |   |   |   |   |   |
System.Type | | | | | | .GetTypeInfo().IsGenericTypeDefinition |
get_IsGenericTypeDefinition | | | | | | .GetTypeInfo().IsGenericTypeDefinition |
get_IsGenericType | | | | | | .GetTypeInfo().IsGenericType |
get_IsVisible | | | | | | .GetTypeInfo().IsVisible |
get_IsValueType | | | | | | .GetTypeInfo().IsValueType |
GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | | | | | | Use GetMethod(string, Type[]) to search for public methods by name and parameter type or filter the results of GetMethods(BindingFlags) using LINQ for other queries. |
get_IsNestedFamily | | | | | | .GetTypeInfo().IsNestedFamily |
get_IsNotPublic | | | | | | .GetTypeInfo().IsNotPublic |
GetConstructor(System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | | | | | | Use GetConstructor(Type[]) to search for public constructors by parameter type or filter the results of GetConstructors(BindingFlags) using LINQ for other queries. |
get_IsClass | | | | | | .GetTypeInfo().IsClass |
get_IsAbstract | | | | | | .GetTypeInfo().IsAbstract |
get_IsPrimitive | | | | | | .GetTypeInfo().IsPrimitive |
get_Assembly | | | | | | .GetTypeInfo().Assembly |
get_IsInterface | | | | | | .GetTypeInfo().IsInterface |
get_IsEnum | | | | | | .GetTypeInfo().IsEnum |
GetInterfaceMap(System.Type) | | | | | | |
ReflectionOnlyGetType(System.String,System.Boolean,System.Boolean) | | | | | | |
get_IsNestedPrivate | | | | | | .GetTypeInfo().IsNestedPrivate |
get_BaseType | | | | | | .GetTypeInfo().BaseType |
get_IsSerializable | | | | | | .GetTypeInfo().IsSerializable |
GetTypeCode(System.Type) | | | | | | Use Type or RuntimeTypeHandle instead. |
get_IsNestedPublic | | | | | | .GetTypeInfo().IsNestedPublic |
get_UnderlyingSystemType | | | | | | |
get_Module | | | | | | Use System.Reflection.AssemblyExtensions.GetModules(), iterate over returned collection. |
  |   |   |   |   |   |   |
System.Reflection.Assembly | | | | | | |
GetReferencedAssemblies | | | | | | |
GetType(System.String,System.Boolean) | | | | | | Use Assembly.GetType(string), throw if you receive null return value. |
get_Location | | | | | | Remove usage |
GetExecutingAssembly | | | | | | typeof(CurrentType).GetTypeInfo().Assembly |
ReflectionOnlyLoadFrom(System.String) | | | | | | |
ReflectionOnlyLoad(System.String) | | | | | | |
GetCustomAttributes(System.Boolean) | | | | | | |
LoadFrom(System.String) | | | | | | Use AssemblyLoadContext |
GetCallingAssembly | | | | | | |
get_ReflectionOnly | | | | | | |
GetEntryAssembly | | | | | | |
  |   |   |   |   |   |   |
System.Security.Cryptography.RandomNumberGenerator | | | | | | |
GetBytes(System.Byte[]) | | | | | | |
Create | | | | | | |
  |   |   |   |   |   |   |
System.Environment | | | | | | Do not use. Choose action based feature availability, not OS / Platform |
get_OSVersion | | | | | | Do not use. Choose action based feature availability, not OS / Platform |
get_Version | | | | | | Do not use. Choose action based feature availability, not OS / Platform |
GetFolderPath(System.Environment.SpecialFolder,System.Environment.SpecialFolderOption) | | | | | | |
get_UserName | | | | | | |
  |   |   |   |   |   |   |
System.AssemblyLoadEventArgs | | | | | | |
get_LoadedAssembly | | | | | | |
  |   |   |   |   |   |   |
System.Activator | | | | | | |
CreateInstance(System.Type,System.Boolean) | | | | | | |
  |   |   |   |   |   |   |
System.ResolveEventArgs | | | | | | Use AssemblyLoadContext |
get_Name | | | | | | Use AssemblyLoadContext |
get_RequestingAssembly | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.CorrelationManager | | | | | | |
set_ActivityId(System.Guid) | | | | | | |
get_ActivityId | | | | | | |
  |   |   |   |   |   |   |
System.Net.Sockets.Socket | | | | | | |
Connect(System.Net.EndPoint) | | | | | | |
Send(System.Collections.Generic.IList{System.ArraySegment{System.Byte}}) | | | | | | |
Disconnect(System.Boolean) | | | | | | |
Receive(System.Collections.Generic.IList{System.ArraySegment{System.Byte}}) | | | | | | |
SetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,System.Boolean) | | | | | | |
EndReceive(System.IAsyncResult) | | | | | | |
BeginReceive(System.Byte[],System.Int32,System.Int32,System.Net.Sockets.SocketFlags,System.AsyncCallback,System.Object) | | | | | | |
set_LingerState(System.Net.Sockets.LingerOption) | | | | | | |
Send(System.Byte[]) | | | | | | |
  |   |   |   |   |   |   |
System.Net.Dns | | | | | | |
GetHostAddressesAsync(System.String) | | | | | | |
GetHostName | | | | | | |
  |   |   |   |   |   |   |
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | | | | | | |
Serialize(System.IO.Stream,System.Object) | | | | | | |
Deserialize(System.IO.Stream) | | | | | | |
#ctor | | | | | | |
set_Binder(System.Runtime.Serialization.SerializationBinder) | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.Trace | | | | | | |
get_CorrelationManager | | | | | | |
TraceError(System.String,System.Object[]) | | | | | | |
TraceWarning(System.String) | | | | | | |
get_Listeners | | | | | | |
TraceError(System.String) | | | | | | |
TraceInformation(System.String) | | | | | | |
Flush | | | | | | |
WriteLine(System.String) | | | | | | |
  |   |   |   |   |   |   |
System.Management.ManagementObjectCollection.ManagementObjectEnumerator | | | | | | |
MoveNext | | | | | | |
get_Current | | | | | | |
  |   |   |   |   |   |   |
System.Runtime.Remoting.Messaging.CallContext | | | | | | |
FreeNamedDataSlot(System.String) | | | | | | |
LogicalSetData(System.String,System.Object) | | | | | | |
LogicalGetData(System.String) | | | | | | |
  |   |   |   |   |   |   |
System.Threading.Thread | | | | | | |
get_CurrentThread | | | | | | |
set_Name(System.String) | | | | | | |
Start(System.Object) | | | | | | |
Sleep(System.TimeSpan) | | | | | | |
get_ManagedThreadId | | | | | | |
ResetAbort | | | | | | This is only reliable in SQL Server. Elsewhere, don't use it. |
Abort(System.Object) | | | | | | This is only reliable in SQL Server. Elsewhere, don't use it. |
set_IsBackground(System.Boolean) | | | | | | |
#ctor(System.Threading.ParameterizedThreadStart) | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.FileVersionInfo | | | | | | Currently there is no workaround, but we are working on it. Please check back. |
GetVersionInfo(System.String) | | | | | | Currently there is no workaround, but we are working on it. Please check back. |
get_ProductVersion | | | | | | |
get_FileVersion | | | | | | Currently there is no workaround, but we are working on it. Please check back. |
  |   |   |   |   |   |   |
System.Threading.WaitCallback | | | | | | |
#ctor(System.Object,System.IntPtr) | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.PerformanceCounterCategory | | | | | | |
GetInstanceNames | | | | | | |
#ctor(System.String) | | | | | | |
GetCounters(System.String) | | | | | | |
  |   |   |   |   |   |   |
System.Net.Sockets.SocketOptionName | | | | | | |
  |   |   |   |   |   |   |
System.Reflection.PropertyInfo | | | | | | Use PropertyInfo.SetMethod property |
GetSetMethod | | | | | | Use PropertyInfo.SetMethod property |
  |   |   |   |   |   |   |
System.Management.PropertyDataCollection | | | | | | |
get_Item(System.String) | | | | | | |
  |   |   |   |   |   |   |
System.Net.NetworkInformation.NetworkInterface | | | | | | |
GetAllNetworkInterfaces | | | | | | |
GetIPProperties | | | | | | |
get_Name | | | | | | |
get_LoopbackInterfaceIndex | | | | | | |
get_OperationalStatus | | | | | | |
  |   |   |   |   |   |   |
System.AssemblyLoadEventHandler | | | | | | |
#ctor(System.Object,System.IntPtr) | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.Process | | | | | | Use System.Diagnostics.Process.SafeHandle |
get_Handle | | | | | | Use System.Diagnostics.Process.SafeHandle |
GetCurrentProcess | | | | | | |
get_ProcessName | | | | | | |
get_Id | | | | | | |
  |   |   |   |   |   |   |
System.Security.Cryptography.SHA256 | | | | | | |
Create | | | | | | |
  |   |   |   |   |   |   |
System.Threading.ThreadPool | | | | | | Change code to not depend on the size of the ThreadPool for functionality. Portable code needs to be able to run correctly on multiple different ThreadPool implementations, not all of which support this method. |
GetMinThreads(System.Int32@,System.Int32@) | | | | | | Change code to not depend on the size of the ThreadPool for functionality. Portable code needs to be able to run correctly on multiple different ThreadPool implementations, not all of which support this method. |
GetAvailableThreads(System.Int32@,System.Int32@) | | | | | | |
GetMaxThreads(System.Int32@,System.Int32@) | | | | | | Change code to not depend on the size of the ThreadPool for functionality. Portable code needs to be able to run correctly on multiple different ThreadPool implementations, not all of which support this method. |
QueueUserWorkItem(System.Threading.WaitCallback,System.Object) | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute | | | | | | |
#ctor | | | | | | |
  |   |   |   |   |   |   |
System.Net.NetworkInformation.IPAddressInformation | | | | | | |
get_Address | | | | | | |
  |   |   |   |   |   |   |
System.Runtime.Serialization.SerializationInfo | | | | | | either 1) Delete Serialization info from exceptions (since this can't be remoted) or 2) Use a different serialization technology if not for exceptions. |
GetValue(System.String,System.Type) | | | | | | either 1) Delete Serialization info from exceptions (since this can't be remoted) or 2) Use a different serialization technology if not for exceptions. |
GetString(System.String) | | | | | | Remove serialization constructors on custom Exception types |
AddValue(System.String,System.Object) | | | | | | Remove serialization constructors on custom Exception types |
AddValue(System.String,System.Object,System.Type) | | | | | | either 1) Delete Serialization info from exceptions (since this can't be remoted) or 2) Use a different serialization technology if not for exceptions. |
GetBoolean(System.String) | | | | | | either 1) Delete Serialization info from exceptions (since this can't be remoted) or 2) Use a different serialization technology if not for exceptions. |
  |   |   |   |   |   |   |
System.Diagnostics.TraceListenerCollection | | | | | | |
get_Count | | | | | | |
GetEnumerator | | | | | | |
Add(System.Diagnostics.TraceListener) | | | | | | |
  |   |   |   |   |   |   |
System.ResolveEventHandler | | | | | | Use AssemblyLoadContext |
#ctor(System.Object,System.IntPtr) | | | | | | Use AssemblyLoadContext |
  |   |   |   |   |   |   |
System.Diagnostics.DefaultTraceListener | | | | | | |
#ctor | | | | | | |
  |   |   |   |   |   |   |
System.MarshalByRefObject | | | | | | Remove usage: Remoting is no longer available |
#ctor | | | | | | Remove usage |
  |   |   |   |   |   |   |
System.Reflection.CustomAttributeData | | | | | | |
GetCustomAttributes(System.Reflection.MemberInfo) | | | | | | |
  |   |   |   |   |   |   |
System.Security.Cryptography.HashAlgorithm | | | | | | |
ComputeHash(System.Byte[]) | | | | | | |
Dispose | | | | | | |
  |   |   |   |   |   |   |
System.Threading.ParameterizedThreadStart | | | | | | |
#ctor(System.Object,System.IntPtr) | | | | | | |
  |   |   |   |   |   |   |
System.Runtime.Serialization.SerializationBinder | | | | | | |
#ctor | | | | | | |
  |   |   |   |   |   |   |
System.Management.ManagementObjectCollection | | | | | | |
GetEnumerator | | | | | | |
  |   |   |   |   |   |   |
System.Console | | | | | | |
ResetColor | | | | | | |
set_Title(System.String) | | | | | | |
WriteLine(System.String,System.Object,System.Object) | | | | | | |
set_ForegroundColor(System.ConsoleColor) | | | | | | Currently there is no workaround, but we are working on it. Please check back. |
WriteLine(System.String,System.Object[]) | | | | | | |
WriteLine(System.String) | | | | | | |
WriteLine(System.String,System.Object) | | | | | | |
  |   |   |   |   |   |   |
System.Environment.SpecialFolder | | | | | | |
  |   |   |   |   |   |   |
System.Environment.SpecialFolderOption | | | | | | |
  |   |   |   |   |   |   |
System.OperatingSystem | | | | | | Do not use. Couple behavior to feature availability, not OS version or Platform. |
  |   |   |   |   |   |   |
System.Net.NetworkInformation.IPInterfaceProperties | | | | | | |
get_UnicastAddresses | | | | | | |
  |   |   |   |   |   |   |
System.Exception | | | | | | Remove. Getting rid of other usage of SerializationInfo will remove the need for this method. |
GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | | | | | | Remove. Getting rid of other usage of SerializationInfo will remove the need for this method. |
GetType | | | | | | False positive (GetType() from Object is sufficient) |
#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | | | | | | Remove. Ctor overload taking SerializationInfo is not applicable in new surface area |
  |   |   |   |   |   |   |
System.Diagnostics.PerformanceCounter | | | | | | |
get_RawValue | | | | | | |
get_CounterName | | | | | | |
#ctor(System.String,System.String,System.String,System.Boolean) | | | | | | |
#ctor(System.String,System.String,System.Boolean) | | | | | | |
NextValue | | | | | | |
  |   |   |   |   |   |   |
System.Net.Sockets.LingerOption | | | | | | |
#ctor(System.Boolean,System.Int32) | | | | | | |
  |   |   |   |   |   |   |
System.Net.Sockets.SocketOptionLevel | | | | | | |
  |   |   |   |   |   |   |
System.Net.NetworkInformation.OperationalStatus | | | | | | |
  |   |   |   |   |   |   |
System.Net.Sockets.SocketFlags | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.StackTrace | | | | | | Currently there is no workaround, but we are working on it. Please check back. |
#ctor(System.Boolean) | | | | | | |
  |   |   |   |   |   |   |
System.Runtime.Serialization.ISerializable | | | | | | |
  |   |   |   |   |   |   |
System.Reflection.ParameterModifier | | | | | | Use an overload that does not take a ParameterModifier array. |
  |   |   |   |   |   |   |
System.Reflection.AssemblyName | | | | | | |
GetAssemblyName(System.String) | | | | | | |
  |   |   |   |   |   |   |
System.Reflection.Binder | | | | | | Use an overload that does not take a Binder. |
  |   |   |   |   |   |   |
System.Management.PropertyData | | | | | | |
get_Value | | | | | | |
  |   |   |   |   |   |   |
System.Delegate | | | | | | Use System.Reflection.RuntimeReflectionExtensions.GetMethodInfo |
get_Method | | | | | | Use System.Reflection.RuntimeReflectionExtensions.GetMethodInfo |
  |   |   |   |   |   |   |
System.Net.NetworkInformation.UnicastIPAddressInformation | | | | | | |
  |   |   |   |   |   |   |
System.Management.ManagementBaseObject | | | | | | |
get_Properties | | | | | | |
  |   |   |   |   |   |   |
System.Threading.ThreadState | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.ConsoleTraceListener | | | | | | useErrorStream ? new TextWriterTraceListener(Console.Error) : new TextWriterTraceListener(Console.Out) |
  |   |   |   |   |   |   |
System.Runtime.Serialization.FormatterServices | | | | | | |
GetUninitializedObject(System.Type) | | | | | | |
  |   |   |   |   |   |   |
System.Xml.XmlNode | | | | | | |
SelectNodes(System.String,System.Xml.XmlNamespaceManager) | | | | | | |
  |   |   |   |   |   |   |
System.ConsoleColor | | | | | | Currently there is no workaround, but we are working on it. Please check back. |
  |   |   |   |   |   |   |
System.Diagnostics.TraceListener | | | | | | |
  |   |   |   |   |   |   |
System.Diagnostics.DebuggableAttribute | | | | | | |
get_IsJITTrackingEnabled | | | | | | |
  |   |   |   |   |   |   |
System.Threading.ThreadAbortException | | | | | | Do not use: exception cannot be caught since it is not thrown by framework, never throw this type. Thread.Abort is only reliable in SQL Server. Elsewhere, don't use it. |
  |   |   |   |   |   |   |
System.Management.ManagementObject | | | | | | |
  |   |   |   |   |   |   |