# .NET Portability Report

## Summary

Assembly | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1
--- | --- | --- | --- | ---
FormsViewGroup | 100% | 97.94% | 97.94% | 97.94%
OAuthSample | 100% | 100% | 100% | 100%
OAuthSample.Droid | 100% | 100% | 100% | 100%
Xamarin.Android.Support.v4 | 100% | 99.43% | 99.43% | 99.43%
Xamarin.Auth.Android | 98.77% | 95.9% | 93.85% | 93.85%
Xamarin.Forms.Core | 99.69% | 100% | 100% | 100%
Xamarin.Forms.Platform.Android | 100% | 98.62% | 97.93% | 97.93%
Xamarin.Forms.Xaml | 98.74% | 100% | 100% | 100%

### FormsViewGroup

Missing assemblies
Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065

Target type | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1 | Recommended changes
--- | --- | --- | --- | --- | ---
System.Converter`2 |  |  |  |  | Remove usage. Implement conversion code yourself if needed.
#ctor(System.Object,System.IntPtr) |  |  |  |  | Remove usage. Implement conversion code yourself if needed.

Back to summary

### Xamarin.Android.Support.v4

Missing assemblies
Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065

Target type | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1 | Recommended changes
--- | --- | --- | --- | --- | ---
System.Converter`2 |  |  |  |  | Remove usage. Implement conversion code yourself if needed.
#ctor(System.Object,System.IntPtr) |  |  |  |  | Remove usage. Implement conversion code yourself if needed.
System.Exception |  |  |  |  | False positive (GetType() from Object is sufficient)
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

Back to summary

### Xamarin.Auth.Android

Missing assemblies
Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065

Target type | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1 | Recommended changes
--- | --- | --- | --- | --- | ---
System.Net.ServicePointManager |  |  |  |  |
set_Expect100Continue(System.Boolean) |  |  |  |  |
System.Collections.Specialized.NameValueCollection |  |  |  |  |
get_Item(System.String) |  |  |  |  |
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter |  |  |  |  |
Serialize(System.IO.Stream,System.Object) |  |  |  |  |
#ctor |  |  |  |  |
Deserialize(System.IO.Stream) |  |  |  |  |
System.Json.JsonObject |  |  |  |  |
GetEnumerator |  |  |  |  |
System.Text.Encoding |  |  |  |  |
get_ASCII |  |  |  |  |
GetString(System.Byte[]) |  |  |  |  | Call Encoding.GetString(byte[], int, int)
System.Collections.Specialized.NameObjectCollectionBase |  |  |  |  |
GetEnumerator |  |  |  |  |
System.Json.JsonType |  |  |  |  |
System.Security.Cryptography.HashAlgorithm |  |  |  |  |
ComputeHash(System.Byte[]) |  |  |  |  |
System.Json.JsonValue |  |  |  |  |
Parse(System.String) |  |  |  |  |
get_JsonType |  |  |  |  |
System.IO.MemoryStream |  |  |  |  | Use an overload that supplies a buffer and maintain that buffer outside of memory stream. If you need the internal buffer, create a copy via .ToArray();
GetBuffer |  |  |  |  | Use an overload that supplies a buffer and maintain that buffer outside of memory stream. If you need the internal buffer, create a copy via .ToArray();
System.Net.WebRequest |  |  |  |  | Use System.Net.Http.HttpContent.Headers.ContentLength
set_ContentLength(System.Int64) |  |  |  |  | Use System.Net.Http.HttpContent.Headers.ContentLength
GetRequestStream |  |  |  |  | Use an System.Net.Http.HttpContent object in the System.Net.Http.HttpRequestMessage when using the HttpClient APIs
System.Net.WebResponse |  |  |  |  | Use HttpResponseMessage.Dispose
Close |  |  |  |  | Use HttpResponseMessage.Dispose
System.SerializableAttribute |  |  |  |  | Remove this attribute
#ctor |  |  |  |  | Remove this attribute
System.Exception |  |  |  |  | False positive (GetType() from Object is sufficient)
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.Security.Cryptography.HMACSHA1 |  |  |  |  | Currently there is no workaround, but we are working on it. Please check back.
#ctor(System.Byte[]) |  |  |  |  | Currently there is no workaround, but we are working on it. Please check back.
System.Runtime.Serialization.SerializationInfo |  |  |  |  | Remove serialization constructors on custom Exception types

Back to summary

### Xamarin.Forms.Core

Target type | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1 | Recommended changes
--- | --- | --- | --- | --- | ---
System.Reflection.TypeInfo |  |  |  |  |
get_IsValueType |  |  |  |  |
get_Assembly |  |  |  |  |
get_IsEnum |  |  |  |  |
get_BaseType |  |  |  |  |
IsSubclassOf(System.Type) |  |  |  |  |
System.Type |  |  |  |  |
IsInstanceOfType(System.Object) |  |  |  |  |
GetFields |  |  |  |  |
get_Name |  |  |  |  |
IsAssignableFrom(System.Type) |  |  |  |  |

Back to summary

### Xamarin.Forms.Platform.Android

Missing assemblies
Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065

Target type | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1 | Recommended changes
--- | --- | --- | --- | --- | ---
System.IO.IsolatedStorage.IsolatedStorageFile |  |  |  |  |
OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess) |  |  |  |  |
GetLastWriteTime(System.String) |  |  |  |  |
CreateDirectory(System.String) |  |  |  |  |
FileExists(System.String) |  |  |  |  |
OpenFile(System.String,System.IO.FileMode) |  |  |  |  |
OpenFile(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) |  |  |  |  |
MoveFile(System.String,System.String) |  |  |  |  |
DirectoryExists(System.String) |  |  |  |  |
DeleteFile(System.String) |  |  |  |  |
GetUserStoreForApplication |  |  |  |  |
System.Threading.Timer |  |  |  |  |
#ctor(System.Threading.TimerCallback,System.Object,System.UInt32,System.UInt32) |  |  |  |  |
#ctor(System.Threading.TimerCallback,System.Object,System.Int64,System.Int64) |  |  |  |  | Use System.Threading.Timer.#ctor(System.Threading.TimerCallback,System.Object,System.Int32,System.Int32)
Change(System.UInt32,System.UInt32) |  |  |  |  |
#ctor(System.Threading.TimerCallback) |  |  |  |  | Use Task.Delay, or one of the other Timer .ctor overloads (passing Timeout.Infinite as needed).
Change(System.Int64,System.Int64) |  |  |  |  | Use a 32-bit interval.
System.IO.File |  |  |  |  |
Exists(System.String) |  |  |  |  |
System.Reflection.Assembly |  |  |  |  | Use Assembly.DefinedTypes
GetTypes |  |  |  |  | Use Assembly.DefinedTypes
GetCallingAssembly |  |  |  |  |
System.Security.Cryptography.HashAlgorithm |  |  |  |  |
ComputeHash(System.Byte[]) |  |  |  |  |
System.IO.FileAccess |  |  |  |  |
System.Diagnostics.Trace |  |  |  |  |
WriteLine(System.String,System.String) |  |  |  |  |
System.Security.Cryptography.MD5CryptoServiceProvider |  |  |  |  |
#ctor |  |  |  |  |
System.AppDomain |  |  |  |  | Remove usage
GetAssemblies |  |  |  |  | Remove usage
get_CurrentDomain |  |  |  |  | Remove usage
System.Type |  |  |  |  |
IsInstanceOfType(System.Object) |  |  |  |  |
GetFields |  |  |  |  |
get_Name |  |  |  |  |
IsAssignableFrom(System.Type) |  |  |  |  |
System.IO.FileMode |  |  |  |  |
System.IO.FileShare |  |  |  |  |
System.IO.IsolatedStorage.IsolatedStorageFileStream |  |  |  |  |

Back to summary

### Xamarin.Forms.Xaml

Target type | .NET Framework 4.6 | ASP.NET 5 1.0 | Windows 8.1 | Windows Phone 8.1 | Recommended changes
--- | --- | --- | --- | --- | ---
System.Reflection.TypeInfo |  |  |  |  |
get_IsValueType |  |  |  |  |
get_Assembly |  |  |  |  |
get_IsEnum |  |  |  |  |
get_BaseType |  |  |  |  |
IsSubclassOf(System.Type) |  |  |  |  |
System.Type |  |  |  |  |
IsInstanceOfType(System.Object) |  |  |  |  |
GetFields |  |  |  |  |
get_Name |  |  |  |  |
IsAssignableFrom(System.Type) |  |  |  |  |

Back to summary