# .NET Portability Report

## Summary

Assembly | .NET Core 5.0
--- | ---
Orleans | 91.36%
OrleansAzureUtils | 98.45%
OrleansCounterControl | 96.23%
OrleansEventSourcing | 100%
OrleansHost | 96.7%
OrleansManager | 99.42%
OrleansProviders | 98.37%
OrleansRuntime | 95.78%
OrleansTestingHost | 87.32%
OrleansZooKeeperUtils | 100%

### Orleans

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.CodeDom.CodeTypeParameterCollection |  |
Add(System.CodeDom.CodeTypeParameter) |  |
#ctor |  |
System.Management.ManagementObject |  |
System.Data.DataRow |  |
get_Item(System.String) |  |
System.Data.IDataParameter |  |
set_Direction(System.Data.ParameterDirection) |  |
set_ParameterName(System.String) |  |
set_DbType(System.Data.DbType) |  |
set_Value(System.Object) |  |
System.AppDomain |  | Remove Usage
remove_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove Usage
get_CurrentDomain |  | Remove usage
remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ApplyPolicy(System.String) |  |
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)
get_SetupInformation |  | Remove usage of AppDomain. Use alternate means for managing configuration information.
add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ReflectionOnlyGetAssemblies |  |
Unload(System.AppDomain) |  | Remove usage
add_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove usage
add_AssemblyResolve(System.ResolveEventHandler) |  | Remove usage
add_ProcessExit(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
CreateInstanceFromAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) |  |
CreateDomain(System.String,System.Security.Policy.Evidence,System.AppDomainSetup) |  | Remove usage
add_AssemblyLoad(System.AssemblyLoadEventHandler) |  |
System.Type |  | .GetTypeInfo().IsGenericType
get_IsGenericType |  | .GetTypeInfo().IsGenericType
get_IsSerializable |  | .GetTypeInfo().IsSerializable
get_IsPrimitive |  | .GetTypeInfo().IsPrimitive
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.
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_ContainsGenericParameters |  | .GetTypeInfo().ContainsGenericParameters
ReflectionOnlyGetType(System.String,System.Boolean,System.Boolean) |  |
get_IsEnum |  | .GetTypeInfo().IsEnum
get_IsNestedPrivate |  | .GetTypeInfo().IsNestedPrivate
get_IsAbstract |  | .GetTypeInfo().IsAbstract
get_IsNestedFamily |  | .GetTypeInfo().IsNestedFamily
get_IsNotPublic |  | .GetTypeInfo().IsNotPublic
get_Module |  | Use System.Reflection.AssemblyExtensions.GetModules(), iterate over returned collection.
get_IsNestedPublic |  | .GetTypeInfo().IsNestedPublic
get_GenericParameterAttributes |  |
GetGenericParameterConstraints |  | .GetTypeInfo().GetGenericParameterConstraints()
get_Assembly |  | .GetTypeInfo().Assembly
get_UnderlyingSystemType |  |
GetInterfaceMap(System.Type) |  |
get_IsGenericTypeDefinition |  | .GetTypeInfo().IsGenericTypeDefinition
get_BaseType |  | .GetTypeInfo().BaseType
get_IsInterface |  | .GetTypeInfo().IsInterface
GetTypeCode(System.Type) |  | Use Type or RuntimeTypeHandle instead.
get_IsValueType |  | .GetTypeInfo().IsValueType
get_IsClass |  | .GetTypeInfo().IsClass
System.Transactions.TransactionOptions |  |
set_Timeout(System.TimeSpan) |  |
set_IsolationLevel(System.Transactions.IsolationLevel) |  |
System.Xml.XmlTextWriter |  |
#ctor(System.IO.TextWriter) |  |
System.AssemblyLoadEventArgs |  |
get_LoadedAssembly |  |
System.Runtime.Serialization.FormatterServices |  |
GetUninitializedObject(System.Type) |  |
System.Data.InternalDataCollectionBase |  |
GetEnumerator |  |
System.SerializableAttribute |  | Remove this attribute
System.Diagnostics.PerformanceCounter |  |
#ctor(System.String,System.String,System.String,System.Boolean) |  |
#ctor(System.String,System.String,System.Boolean) |  |
get_CounterName |  |
NextValue |  |
get_RawValue |  |
set_RawValue(System.Int64) |  |
System.Diagnostics.PerformanceCounterCategory |  |
#ctor(System.String) |  |
Exists(System.String) |  |
GetInstanceNames |  |
GetCounters(System.String) |  |
Delete(System.String) |  |
Create(System.String,System.String,System.Diagnostics.PerformanceCounterCategoryType,System.Diagnostics.CounterCreationDataCollection) |  |
System.Transactions.TransactionManager |  |
get_MaximumTimeout |  |
System.Management.ManagementObjectCollection.ManagementObjectEnumerator |  |
get_Current |  |
MoveNext |  |
System.Management.ManagementObjectCollection |  |
GetEnumerator |  |
System.Reflection.Assembly |  |
GetCustomAttributes(System.Boolean) |  |
LoadWithPartialName(System.String) |  |
GetExecutingAssembly |  | typeof(CurrentType).GetTypeInfo().Assembly
get_CodeBase |  |
GetEntryAssembly |  |
get_ReflectionOnly |  |
ReflectionOnlyLoadFrom(System.String) |  |
get_Location |  | Remove usage
ReflectionOnlyLoad(System.String) |  |
GetTypes |  | Use Assembly.DefinedTypes
LoadFrom(System.String) |  | Use AssemblyLoadContext
CreateInstance(System.String) |  | Use System.Activator.CreateInstance(Assembly.GetType()) on type you are interested in.
Load(System.String) |  | use Assembly.Load(new AssemblyName(string))
GetType(System.String,System.Boolean) |  | Use Assembly.GetType(string), throw if you receive null return value.
GetCallingAssembly |  |
System.Data.Common.DbProviderFactories |  |
GetFactory(System.String) |  |
GetFactoryClasses |  |
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |  |
Deserialize(System.IO.Stream) |  |
#ctor |  |
set_Binder(System.Runtime.Serialization.SerializationBinder) |  |
Serialize(System.IO.Stream,System.Object) |  |
System.Net.Dns |  |
GetHostAddresses(System.String) |  |
System.Environment |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_Is64BitOperatingSystem |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_MachineName |  | Remove, or use Environment.GetEnvironmentVariable("COMPUTERNAME")
get_UserName |  |
GetFolderPath(System.Environment.SpecialFolder) |  |
GetFolderPath(System.Environment.SpecialFolder,System.Environment.SpecialFolderOption) |  |
get_Version |  | Do not use. Choose action based feature availability, not OS / Platform
get_CommandLine |  |
GetCommandLineArgs |  |
get_OSVersion |  | Do not use. Choose action based feature availability, not OS / Platform
Exit(System.Int32) |  | Use Environment.FailFast(string, Exception)
get_CurrentDirectory |  | Use Directory.GetCurrentDirectory()
System.Data.IDbDataParameter |  |
set_Size(System.Int32) |  |
System.Data.IDataRecord |  |
get_Item(System.String) |  |
GetBoolean(System.Int32) |  |
GetOrdinal(System.String) |  |
IsDBNull(System.Int32) |  |
GetValue(System.Int32) |  |
System.OperatingSystem |  | Do not use. Couple behavior to feature availability, not OS version or Platform.
System.Xml.XmlNode |  |
SelectNodes(System.String,System.Xml.XmlNamespaceManager) |  |
System.Data.DataTable |  |
get_Rows |  |
System.Reflection.CustomAttributeData |  |
GetCustomAttributes(System.Reflection.MemberInfo) |  |
System.Reflection.AssemblyName |  |
GetAssemblyName(System.String) |  |
System.Exception |  | False positive (GetType() from Object is sufficient)
GetType |  | False positive (GetType() from Object is sufficient)
GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |  | Remove. Getting rid of other usage of SerializationInfo will remove the need for this method.
#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |  | Remove. Ctor overload taking SerializationInfo is not applicable in new surface area
System.Management.ManagementObjectSearcher |  |
#ctor(System.String) |  |
Get |  |
System.Diagnostics.Trace |  |
get_CorrelationManager |  |
System.Threading.ThreadPool |  |
GetAvailableThreads(System.Int32@,System.Int32@) |  |
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.
SetMinThreads(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.
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.
System.Runtime.Serialization.ISerializable |  |
System.CodeDom.CodeTypeReference |  |
#ctor(System.String) |  |
System.AssemblyLoadEventHandler |  |
#ctor(System.Object,System.IntPtr) |  |
System.Runtime.Serialization.SerializationBinder |  |
#ctor |  |
System.Diagnostics.DebuggableAttribute |  |
get_IsJITTrackingEnabled |  |
System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute |  |
#ctor |  |
System.CodeDom.CodeTypeParameter |  |
set_HasConstructorConstraint(System.Boolean) |  |
get_Constraints |  |
#ctor(System.String) |  |
System.Management.PropertyDataCollection |  |
get_Item(System.String) |  |
System.ResolveEventHandler |  | Use AssemblyLoadContext
#ctor(System.Object,System.IntPtr) |  | Use AssemblyLoadContext
System.Transactions.TransactionScope |  |
#ctor(System.Transactions.TransactionScopeOption,System.Transactions.TransactionOptions) |  |
System.Diagnostics.StackTrace |  | Currently there is no workaround, but we are working on it. Please check back.
#ctor |  | Currently there is no workaround, but we are working on it. Please check back.
#ctor(System.Boolean) |  |
#ctor(System.Int32) |  |
System.Data.IDataReader |  |
System.Threading.Thread |  | This is only reliable in SQL Server. Elsewhere, don't use it.
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.
System.Data.IDbCommand |  |
CreateParameter |  |
get_Parameters |  |
System.Diagnostics.ConsoleTraceListener |  | useErrorStream ? new TextWriterTraceListener(Console.Error) : new TextWriterTraceListener(Console.Out)
System.CodeDom.CodeTypeReferenceCollection |  |
Add(System.CodeDom.CodeTypeReference) |  |
Add(System.String) |  |
System.Runtime.Remoting.Messaging.CallContext |  |
LogicalGetData(System.String) |  |
FreeNamedDataSlot(System.String) |  |
LogicalSetData(System.String,System.Object) |  |
System.String |  | Use CultureInfo.TextInfo.ToLower(String) instead
ToLower(System.Globalization.CultureInfo) |  | Use CultureInfo.TextInfo.ToLower(String) instead
ToString(System.IFormatProvider) |  | Remove usage (does nothing)
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.
get_ExceptionState |  |
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.
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.
AddValue(System.String,System.Object) |  | Remove serialization constructors on custom Exception types
GetString(System.String) |  | Remove serialization constructors on custom Exception types
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.
System.UriTypeConverter |  |
#ctor |  |
System.MarshalByRefObject |  | Remove usage
#ctor |  | Remove usage
System.Transactions.TransactionScopeOption |  |
System.Data.DataRowCollection |  |
System.Reflection.ParameterModifier |  | Use an overload that does not take a ParameterModifier array.
System.Activator |  |
CreateInstance(System.Type,System.Boolean) |  |
System.Reflection.Binder |  | Use an overload that does not take a Binder.
System.Diagnostics.CorrelationManager |  |
get_ActivityId |  |
set_ActivityId(System.Guid) |  |
System.Delegate |  | Use System.Reflection.RuntimeReflectionExtensions.GetMethodInfo
get_Method |  | Use System.Reflection.RuntimeReflectionExtensions.GetMethodInfo
System.Transactions.IsolationLevel |  |
System.Console |  |
set_Title(System.String) |  |
ReadKey |  |
System.Management.PropertyData |  |
get_Value |  |
System.Environment.SpecialFolderOption |  |
System.Management.ManagementBaseObject |  |
get_Properties |  |
System.ResolveEventArgs |  |
get_RequestingAssembly |  |
get_Name |  | Use AssemblyLoadContext
System.Data.IDataParameterCollection |  |
System.Diagnostics.Process |  | Use System.Diagnostics.Process.SafeHandle
get_Handle |  | Use System.Diagnostics.Process.SafeHandle
System.Environment.SpecialFolder |  |

Back to summary

### OrleansAzureUtils

Missing assemblies
Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
Microsoft.WindowsAzure.Storage, Version=4.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.AppDomain |  | Remove Usage
remove_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove Usage
get_CurrentDomain |  | Remove usage
remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ApplyPolicy(System.String) |  |
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)
get_SetupInformation |  | Remove usage of AppDomain. Use alternate means for managing configuration information.
add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ReflectionOnlyGetAssemblies |  |
Unload(System.AppDomain) |  | Remove usage
add_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove usage
add_AssemblyResolve(System.ResolveEventHandler) |  | Remove usage
add_ProcessExit(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
CreateInstanceFromAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) |  |
CreateDomain(System.String,System.Security.Policy.Evidence,System.AppDomainSetup) |  | Remove usage
add_AssemblyLoad(System.AssemblyLoadEventHandler) |  |
System.Web.HttpServerUtility |  |
MapPath(System.String) |  |
System.Reflection.Assembly |  |
GetCustomAttributes(System.Boolean) |  |
LoadWithPartialName(System.String) |  |
GetExecutingAssembly |  | typeof(CurrentType).GetTypeInfo().Assembly
get_CodeBase |  |
GetEntryAssembly |  |
get_ReflectionOnly |  |
ReflectionOnlyLoadFrom(System.String) |  |
get_Location |  | Remove usage
ReflectionOnlyLoad(System.String) |  |
GetTypes |  | Use Assembly.DefinedTypes
LoadFrom(System.String) |  | Use AssemblyLoadContext
CreateInstance(System.String) |  | Use System.Activator.CreateInstance(Assembly.GetType()) on type you are interested in.
Load(System.String) |  | use Assembly.Load(new AssemblyName(string))
GetType(System.String,System.Boolean) |  | Use Assembly.GetType(string), throw if you receive null return value.
GetCallingAssembly |  |
System.Reflection.EventInfo |  |
GetRemoveMethod |  |
GetAddMethod |  |
System.Exception |  | False positive (GetType() from Object is sufficient)
GetType |  | False positive (GetType() from Object is sufficient)
GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |  | Remove. Getting rid of other usage of SerializationInfo will remove the need for this method.
#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |  | Remove. Ctor overload taking SerializationInfo is not applicable in new surface area
System.Web.HttpContext |  |
get_Current |  |
get_Server |  |
System.Web.Hosting.HostingEnvironment |  |
MapPath(System.String) |  |

Back to summary

### OrleansCounterControl

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.Reflection.Assembly |  |
GetCustomAttributes(System.Boolean) |  |
LoadWithPartialName(System.String) |  |
GetExecutingAssembly |  | typeof(CurrentType).GetTypeInfo().Assembly
get_CodeBase |  |
GetEntryAssembly |  |
get_ReflectionOnly |  |
ReflectionOnlyLoadFrom(System.String) |  |
get_Location |  | Remove usage
ReflectionOnlyLoad(System.String) |  |
GetTypes |  | Use Assembly.DefinedTypes
LoadFrom(System.String) |  | Use AssemblyLoadContext
CreateInstance(System.String) |  | Use System.Activator.CreateInstance(Assembly.GetType()) on type you are interested in.
Load(System.String) |  | use Assembly.Load(new AssemblyName(string))
GetType(System.String,System.Boolean) |  | Use Assembly.GetType(string), throw if you receive null return value.
GetCallingAssembly |  |
System.Console |  |
set_Title(System.String) |  |
ReadKey |  |
System.ConsoleKeyInfo |  |

Back to summary

### OrleansHost

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.Environment |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_Is64BitOperatingSystem |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_MachineName |  | Remove, or use Environment.GetEnvironmentVariable("COMPUTERNAME")
get_UserName |  |
GetFolderPath(System.Environment.SpecialFolder) |  |
GetFolderPath(System.Environment.SpecialFolder,System.Environment.SpecialFolderOption) |  |
get_Version |  | Do not use. Choose action based feature availability, not OS / Platform
get_CommandLine |  |
GetCommandLineArgs |  |
get_OSVersion |  | Do not use. Choose action based feature availability, not OS / Platform
Exit(System.Int32) |  | Use Environment.FailFast(string, Exception)
get_CurrentDirectory |  | Use Directory.GetCurrentDirectory()

Back to summary

### OrleansManager

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.Environment |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_Is64BitOperatingSystem |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_MachineName |  | Remove, or use Environment.GetEnvironmentVariable("COMPUTERNAME")
get_UserName |  |
GetFolderPath(System.Environment.SpecialFolder) |  |
GetFolderPath(System.Environment.SpecialFolder,System.Environment.SpecialFolderOption) |  |
get_Version |  | Do not use. Choose action based feature availability, not OS / Platform
get_CommandLine |  |
GetCommandLineArgs |  |
get_OSVersion |  | Do not use. Choose action based feature availability, not OS / Platform
Exit(System.Int32) |  | Use Environment.FailFast(string, Exception)
get_CurrentDirectory |  | Use Directory.GetCurrentDirectory()

Back to summary

### OrleansProviders

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.Runtime.Serialization.FormatterServices |  |
GetUninitializedObject(System.Type) |  |
System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute |  |
#ctor |  |
System.MarshalByRefObject |  | Remove usage
#ctor |  | Remove usage

Back to summary

### OrleansRuntime

Missing assemblies
Microsoft.Framework.DependencyInjection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38575508bf0a2155
Microsoft.Framework.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=38575508bf0a2155

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.AppDomain |  | Remove Usage
remove_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove Usage
get_CurrentDomain |  | Remove usage
remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ApplyPolicy(System.String) |  |
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)
get_SetupInformation |  | Remove usage of AppDomain. Use alternate means for managing configuration information.
add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ReflectionOnlyGetAssemblies |  |
Unload(System.AppDomain) |  | Remove usage
add_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove usage
add_AssemblyResolve(System.ResolveEventHandler) |  | Remove usage
add_ProcessExit(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
CreateInstanceFromAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) |  |
CreateDomain(System.String,System.Security.Policy.Evidence,System.AppDomainSetup) |  | Remove usage
add_AssemblyLoad(System.AssemblyLoadEventHandler) |  |
System.Type |  | .GetTypeInfo().IsGenericType
get_IsGenericType |  | .GetTypeInfo().IsGenericType
get_IsSerializable |  | .GetTypeInfo().IsSerializable
get_IsPrimitive |  | .GetTypeInfo().IsPrimitive
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.
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_ContainsGenericParameters |  | .GetTypeInfo().ContainsGenericParameters
ReflectionOnlyGetType(System.String,System.Boolean,System.Boolean) |  |
get_IsEnum |  | .GetTypeInfo().IsEnum
get_IsNestedPrivate |  | .GetTypeInfo().IsNestedPrivate
get_IsAbstract |  | .GetTypeInfo().IsAbstract
get_IsNestedFamily |  | .GetTypeInfo().IsNestedFamily
get_IsNotPublic |  | .GetTypeInfo().IsNotPublic
get_Module |  | Use System.Reflection.AssemblyExtensions.GetModules(), iterate over returned collection.
get_IsNestedPublic |  | .GetTypeInfo().IsNestedPublic
get_GenericParameterAttributes |  |
GetGenericParameterConstraints |  | .GetTypeInfo().GetGenericParameterConstraints()
get_Assembly |  | .GetTypeInfo().Assembly
get_UnderlyingSystemType |  |
GetInterfaceMap(System.Type) |  |
get_IsGenericTypeDefinition |  | .GetTypeInfo().IsGenericTypeDefinition
get_BaseType |  | .GetTypeInfo().BaseType
get_IsInterface |  | .GetTypeInfo().IsInterface
GetTypeCode(System.Type) |  | Use Type or RuntimeTypeHandle instead.
get_IsValueType |  | .GetTypeInfo().IsValueType
get_IsClass |  | .GetTypeInfo().IsClass
System.Xml.XmlTextWriter |  |
#ctor(System.IO.TextWriter) |  |
System.Diagnostics.CounterCreationDataCollection |  |
#ctor |  |
AddRange(System.Diagnostics.CounterCreationData[]) |  |
System.AssemblyLoadEventArgs |  |
get_LoadedAssembly |  |
System.Runtime.Serialization.FormatterServices |  |
GetUninitializedObject(System.Type) |  |
System.Diagnostics.PerformanceCounter |  |
#ctor(System.String,System.String,System.String,System.Boolean) |  |
#ctor(System.String,System.String,System.Boolean) |  |
get_CounterName |  |
NextValue |  |
get_RawValue |  |
set_RawValue(System.Int64) |  |
System.Diagnostics.PerformanceCounterCategory |  |
#ctor(System.String) |  |
Exists(System.String) |  |
GetInstanceNames |  |
GetCounters(System.String) |  |
Delete(System.String) |  |
Create(System.String,System.String,System.Diagnostics.PerformanceCounterCategoryType,System.Diagnostics.CounterCreationDataCollection) |  |
System.Configuration.Install.InstallContext |  |
LogMessage(System.String) |  |
System.Configuration.Install.Installer |  |
#ctor |  |
get_Context |  |
get_Installers |  |
System.Net.ServicePointManager |  |
set_Expect100Continue(System.Boolean) |  |
set_DefaultConnectionLimit(System.Int32) |  |
set_UseNagleAlgorithm(System.Boolean) |  |
System.Reflection.Assembly |  |
GetCustomAttributes(System.Boolean) |  |
LoadWithPartialName(System.String) |  |
GetExecutingAssembly |  | typeof(CurrentType).GetTypeInfo().Assembly
get_CodeBase |  |
GetEntryAssembly |  |
get_ReflectionOnly |  |
ReflectionOnlyLoadFrom(System.String) |  |
get_Location |  | Remove usage
ReflectionOnlyLoad(System.String) |  |
GetTypes |  | Use Assembly.DefinedTypes
LoadFrom(System.String) |  | Use AssemblyLoadContext
CreateInstance(System.String) |  | Use System.Activator.CreateInstance(Assembly.GetType()) on type you are interested in.
Load(System.String) |  | use Assembly.Load(new AssemblyName(string))
GetType(System.String,System.Boolean) |  | Use Assembly.GetType(string), throw if you receive null return value.
GetCallingAssembly |  |
System.Environment |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_Is64BitOperatingSystem |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_MachineName |  | Remove, or use Environment.GetEnvironmentVariable("COMPUTERNAME")
get_UserName |  |
GetFolderPath(System.Environment.SpecialFolder) |  |
GetFolderPath(System.Environment.SpecialFolder,System.Environment.SpecialFolderOption) |  |
get_Version |  | Do not use. Choose action based feature availability, not OS / Platform
get_CommandLine |  |
GetCommandLineArgs |  |
get_OSVersion |  | Do not use. Choose action based feature availability, not OS / Platform
Exit(System.Int32) |  | Use Environment.FailFast(string, Exception)
get_CurrentDirectory |  | Use Directory.GetCurrentDirectory()
System.OperatingSystem |  | Do not use. Couple behavior to feature availability, not OS version or Platform.
System.Exception |  | False positive (GetType() from Object is sufficient)
GetType |  | False positive (GetType() from Object is sufficient)
GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |  | Remove. Getting rid of other usage of SerializationInfo will remove the need for this method.
#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) |  | Remove. Ctor overload taking SerializationInfo is not applicable in new surface area
System.ComponentModel.RunInstallerAttribute |  |
#ctor(System.Boolean) |  |
System.Threading.ThreadPool |  |
GetAvailableThreads(System.Int32@,System.Int32@) |  |
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.
SetMinThreads(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.
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.
System.Runtime.Serialization.ISerializable |  |
System.AssemblyLoadEventHandler |  |
#ctor(System.Object,System.IntPtr) |  |
System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute |  |
#ctor |  |
System.ResolveEventHandler |  | Use AssemblyLoadContext
#ctor(System.Object,System.IntPtr) |  | Use AssemblyLoadContext
System.Diagnostics.CounterCreationData |  |
#ctor(System.String,System.String,System.Diagnostics.PerformanceCounterType) |  |
System.Diagnostics.StackTrace |  | Currently there is no workaround, but we are working on it. Please check back.
#ctor |  | Currently there is no workaround, but we are working on it. Please check back.
#ctor(System.Boolean) |  |
#ctor(System.Int32) |  |
System.Diagnostics.PerformanceCounterInstaller |  |
#ctor |  |
set_CategoryName(System.String) |  |
get_Counters |  |
set_CategoryType(System.Diagnostics.PerformanceCounterCategoryType) |  |
System.Threading.Thread |  | This is only reliable in SQL Server. Elsewhere, don't use it.
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.
System.Configuration.Install.InstallerCollection |  |
Add(System.Configuration.Install.Installer) |  |
System.Data.InvalidExpressionException |  |
#ctor(System.String) |  |
System.String |  | Use CultureInfo.TextInfo.ToLower(String) instead
ToLower(System.Globalization.CultureInfo) |  | Use CultureInfo.TextInfo.ToLower(String) instead
ToString(System.IFormatProvider) |  | Remove usage (does nothing)
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.
get_ExceptionState |  |
System.UnhandledExceptionEventArgs |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
get_ExceptionObject |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
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.
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.
AddValue(System.String,System.Object) |  | Remove serialization constructors on custom Exception types
GetString(System.String) |  | Remove serialization constructors on custom Exception types
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.
System.MarshalByRefObject |  | Remove usage
#ctor |  | Remove usage
System.SystemException |  |
#ctor(System.String) |  |
System.Diagnostics.PerformanceCounterCategoryType |  |
System.Delegate |  | Use System.Reflection.RuntimeReflectionExtensions.GetMethodInfo
get_Method |  | Use System.Reflection.RuntimeReflectionExtensions.GetMethodInfo
System.Diagnostics.PerformanceCounterType |  |
System.UnhandledExceptionEventHandler |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
#ctor(System.Object,System.IntPtr) |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
System.ResolveEventArgs |  |
get_RequestingAssembly |  |
get_Name |  | Use AssemblyLoadContext

Back to summary

### OrleansTestingHost

Target type | .NET Core 5.0 | Recommended changes
--- | --- | ---
System.Runtime.Remoting.RemotingException |  |
System.AppDomain |  | Remove Usage
remove_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove Usage
get_CurrentDomain |  | Remove usage
remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ApplyPolicy(System.String) |  |
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)
get_SetupInformation |  | Remove usage of AppDomain. Use alternate means for managing configuration information.
add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) |  |
ReflectionOnlyGetAssemblies |  |
Unload(System.AppDomain) |  | Remove usage
add_UnhandledException(System.UnhandledExceptionEventHandler) |  | Remove usage
add_AssemblyResolve(System.ResolveEventHandler) |  | Remove usage
add_ProcessExit(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
CreateInstanceFromAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) |  |
CreateDomain(System.String,System.Security.Policy.Evidence,System.AppDomainSetup) |  | Remove usage
add_AssemblyLoad(System.AssemblyLoadEventHandler) |  |
System.Net.ServicePointManager |  |
set_Expect100Continue(System.Boolean) |  |
set_DefaultConnectionLimit(System.Int32) |  |
set_UseNagleAlgorithm(System.Boolean) |  |
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |  |
Deserialize(System.IO.Stream) |  |
#ctor |  |
set_Binder(System.Runtime.Serialization.SerializationBinder) |  |
Serialize(System.IO.Stream,System.Object) |  |
System.Environment |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_Is64BitOperatingSystem |  | Use Marshal.SizeOf(new IntPtr()) if needed
get_MachineName |  | Remove, or use Environment.GetEnvironmentVariable("COMPUTERNAME")
get_UserName |  |
GetFolderPath(System.Environment.SpecialFolder) |  |
GetFolderPath(System.Environment.SpecialFolder,System.Environment.SpecialFolderOption) |  |
get_Version |  | Do not use. Choose action based feature availability, not OS / Platform
get_CommandLine |  |
GetCommandLineArgs |  |
get_OSVersion |  | Do not use. Choose action based feature availability, not OS / Platform
Exit(System.Int32) |  | Use Environment.FailFast(string, Exception)
get_CurrentDirectory |  | Use Directory.GetCurrentDirectory()
System.AppDomainSetup |  | Remove usage
set_ApplicationBase(System.String) |  | Remove usage
get_ConfigurationFile |  | Remove usage
get_ShadowCopyDirectories |  |
set_ConfigurationFile(System.String) |  | Remove usage
get_ShadowCopyFiles |  |
set_CachePath(System.String) |  |
set_ShadowCopyFiles(System.String) |  |
#ctor |  | Remove usage
get_CachePath |  |
set_ShadowCopyDirectories(System.String) |  |
System.Threading.ThreadPool |  |
GetAvailableThreads(System.Int32@,System.Int32@) |  |
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.
SetMinThreads(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.
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.
System.Diagnostics.ProcessStartInfo |  |
set_ErrorDialog(System.Boolean) |  |
set_WindowStyle(System.Diagnostics.ProcessWindowStyle) |  | Remove ShellExecute usage (Can Pinvoke if needed)
System.Runtime.Serialization.IFormatter |  |
Deserialize(System.IO.Stream) |  |
Serialize(System.IO.Stream,System.Object) |  |
System.UnhandledExceptionEventArgs |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
get_ExceptionObject |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
System.MarshalByRefObject |  | Remove usage
#ctor |  | Remove usage
System.Diagnostics.ProcessWindowStyle |  | Remove ShellExecute usage (Can Pinvoke if needed)
System.Reflection.Binder |  | Use an overload that does not take a Binder.
System.Security.Policy.Evidence |  |
System.UnhandledExceptionEventHandler |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
#ctor(System.Object,System.IntPtr) |  | Avoid usage of the UnhandledException Event, handle exceptions directly at scope of method being called
System.Environment.SpecialFolder |  |

Back to summary