Commit f32d318f authored by Marc Gravell's avatar Marc Gravell

Merge branch 'CoreCLR'

Conflicts:
	Dapper NET40/SqlMapper.cs
parents 34371620 b52d3113
...@@ -7,7 +7,16 @@ ...@@ -7,7 +7,16 @@
*/ */
#if DNXCORE50 #if DNXCORE50
using IDbDataParameter = System.Data.Common.DbParameter; using IDbDataParameter = global::System.Data.Common.DbParameter;
using IDataParameter = global::System.Data.Common.DbParameter;
using IDbTransaction = global::System.Data.Common.DbTransaction;
using IDbConnection = global::System.Data.Common.DbConnection;
using IDbCommand = global::System.Data.Common.DbCommand;
using IDataReader = global::System.Data.Common.DbDataReader;
using IDataRecord = global::System.Data.Common.DbDataReader;
using IDataParameterCollection = global::System.Data.Common.DbParameterCollection;
using DataException = global::System.InvalidOperationException;
using ApplicationException = global::System.InvalidOperationException;
#endif #endif
using System; using System;
...@@ -24,6 +33,7 @@ ...@@ -24,6 +33,7 @@
using System.Diagnostics; using System.Diagnostics;
using System.Globalization; using System.Globalization;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Data.Common;
namespace Dapper namespace Dapper
{ {
...@@ -312,7 +322,7 @@ public interface ITypeHandler ...@@ -312,7 +322,7 @@ public interface ITypeHandler
/// <returns>The typed value</returns> /// <returns>The typed value</returns>
object Parse(Type destinationType, object value); object Parse(Type destinationType, object value);
} }
#if !DNXCORE50
/// <summary> /// <summary>
/// A type handler for data-types that are supported by the underlying provider, but which need /// A type handler for data-types that are supported by the underlying provider, but which need
/// a well-known UdtTypeName to be specified /// a well-known UdtTypeName to be specified
...@@ -335,13 +345,14 @@ object ITypeHandler.Parse(Type destinationType, object value) ...@@ -335,13 +345,14 @@ object ITypeHandler.Parse(Type destinationType, object value)
void ITypeHandler.SetValue(IDbDataParameter parameter, object value) void ITypeHandler.SetValue(IDbDataParameter parameter, object value)
{ {
parameter.Value = ((object)value) ?? DBNull.Value; parameter.Value = SanitizeParameterValue(value);
if (parameter is System.Data.SqlClient.SqlParameter) if (parameter is System.Data.SqlClient.SqlParameter)
{ {
((System.Data.SqlClient.SqlParameter)parameter).UdtTypeName = udtTypeName; ((System.Data.SqlClient.SqlParameter)parameter).UdtTypeName = udtTypeName;
} }
} }
} }
#endif
/// <summary> /// <summary>
/// Base-class for simple type-handlers /// Base-class for simple type-handlers
...@@ -726,8 +737,9 @@ static SqlMapper() ...@@ -726,8 +737,9 @@ static SqlMapper()
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset; typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
typeMap[typeof(TimeSpan?)] = DbType.Time; typeMap[typeof(TimeSpan?)] = DbType.Time;
typeMap[typeof(object)] = DbType.Object; typeMap[typeof(object)] = DbType.Object;
#if !DNXCORE50
AddTypeHandlerImpl(typeof(DataTable), new DataTableHandler(), false); AddTypeHandlerImpl(typeof(DataTable), new DataTableHandler(), false);
#endif
} }
/// <summary> /// <summary>
...@@ -736,7 +748,9 @@ static SqlMapper() ...@@ -736,7 +748,9 @@ static SqlMapper()
public static void ResetTypeHandlers() public static void ResetTypeHandlers()
{ {
typeHandlers = new Dictionary<Type, ITypeHandler>(); typeHandlers = new Dictionary<Type, ITypeHandler>();
#if !DNXCORE50
AddTypeHandlerImpl(typeof(DataTable), new DataTableHandler(), true); AddTypeHandlerImpl(typeof(DataTable), new DataTableHandler(), true);
#endif
} }
/// <summary> /// <summary>
/// Configure the specified type to be mapped to a given db-type /// Configure the specified type to be mapped to a given db-type
...@@ -770,7 +784,7 @@ public static void AddTypeHandlerImpl(Type type, ITypeHandler handler, bool clon ...@@ -770,7 +784,7 @@ public static void AddTypeHandlerImpl(Type type, ITypeHandler handler, bool clon
if (type == null) throw new ArgumentNullException("type"); if (type == null) throw new ArgumentNullException("type");
Type secondary = null; Type secondary = null;
if(type.IsValueType) if(type.IsValueType())
{ {
var underlying = Nullable.GetUnderlyingType(type); var underlying = Nullable.GetUnderlyingType(type);
if(underlying == null) if(underlying == null)
...@@ -823,7 +837,10 @@ public static void AddTypeHandler<T>(TypeHandler<T> handler) ...@@ -823,7 +837,10 @@ public static void AddTypeHandler<T>(TypeHandler<T> handler)
/// Not intended for direct usage /// Not intended for direct usage
/// </summary> /// </summary>
[Obsolete("Not intended for direct usage", false)] [Obsolete("Not intended for direct usage", false)]
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] #if !DNXCORE50
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
public static class TypeHandlerCache<T> public static class TypeHandlerCache<T>
{ {
/// <summary> /// <summary>
...@@ -862,7 +879,11 @@ internal static void SetHandler(ITypeHandler handler) ...@@ -862,7 +879,11 @@ internal static void SetHandler(ITypeHandler handler)
/// <summary> /// <summary>
/// Get the DbType that maps to a given value /// Get the DbType that maps to a given value
/// </summary> /// </summary>
[Obsolete("This method is for internal use only"), Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] [Obsolete("This method is for internal use only")]
#if !DNXCORE50
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
public static DbType GetDbType(object value) public static DbType GetDbType(object value)
{ {
if (value == null || value is DBNull) return DbType.Object; if (value == null || value is DBNull) return DbType.Object;
...@@ -877,7 +898,7 @@ internal static DbType LookupDbType(Type type, string name, bool demand, out ITy ...@@ -877,7 +898,7 @@ internal static DbType LookupDbType(Type type, string name, bool demand, out ITy
handler = null; handler = null;
var nullUnderlyingType = Nullable.GetUnderlyingType(type); var nullUnderlyingType = Nullable.GetUnderlyingType(type);
if (nullUnderlyingType != null) type = nullUnderlyingType; if (nullUnderlyingType != null) type = nullUnderlyingType;
if (type.IsEnum && !typeMap.ContainsKey(type)) if (type.IsEnum() && !typeMap.ContainsKey(type))
{ {
type = Enum.GetUnderlyingType(type); type = Enum.GetUnderlyingType(type);
} }
...@@ -898,6 +919,7 @@ internal static DbType LookupDbType(Type type, string name, bool demand, out ITy ...@@ -898,6 +919,7 @@ internal static DbType LookupDbType(Type type, string name, bool demand, out ITy
{ {
return DbType.Object; return DbType.Object;
} }
#if !DNXCORE50
switch (type.FullName) switch (type.FullName)
{ {
case "Microsoft.SqlServer.Types.SqlGeography": case "Microsoft.SqlServer.Types.SqlGeography":
...@@ -910,6 +932,7 @@ internal static DbType LookupDbType(Type type, string name, bool demand, out ITy ...@@ -910,6 +932,7 @@ internal static DbType LookupDbType(Type type, string name, bool demand, out ITy
AddTypeHandler(type, handler = new UdtTypeHandler("hierarchyid")); AddTypeHandler(type, handler = new UdtTypeHandler("hierarchyid"));
return DbType.Object; return DbType.Object;
} }
#endif
if(demand) if(demand)
throw new NotSupportedException(string.Format("The member {0} of type {1} cannot be used as a parameter value", name, type.FullName)); throw new NotSupportedException(string.Format("The member {0} of type {1} cannot be used as a parameter value", name, type.FullName));
return DbType.Object; return DbType.Object;
...@@ -2140,13 +2163,13 @@ private static void PassByPosition(IDbCommand cmd) ...@@ -2140,13 +2163,13 @@ private static void PassByPosition(IDbCommand cmd)
{ {
if (cmd.Parameters.Count == 0) return; if (cmd.Parameters.Count == 0) return;
Dictionary<string, IDbDataParameter> parameters = new Dictionary<string, IDbDataParameter>(StringComparer.InvariantCulture); Dictionary<string, IDbDataParameter> parameters = new Dictionary<string, IDbDataParameter>(StringComparer.Ordinal);
foreach(IDbDataParameter param in cmd.Parameters) foreach(IDbDataParameter param in cmd.Parameters)
{ {
if (!string.IsNullOrEmpty(param.ParameterName)) parameters[param.ParameterName] = param; if (!string.IsNullOrEmpty(param.ParameterName)) parameters[param.ParameterName] = param;
} }
HashSet<string> consumed = new HashSet<string>(StringComparer.InvariantCulture); HashSet<string> consumed = new HashSet<string>(StringComparer.Ordinal);
bool firstMatch = true; bool firstMatch = true;
cmd.CommandText = pseudoPositional.Replace(cmd.CommandText, match => cmd.CommandText = pseudoPositional.Replace(cmd.CommandText, match =>
{ {
...@@ -2193,8 +2216,8 @@ private static void PassByPosition(IDbCommand cmd) ...@@ -2193,8 +2216,8 @@ private static void PassByPosition(IDbCommand cmd)
} }
#endif #endif
Type underlyingType = null; Type underlyingType = null;
if (!(typeMap.ContainsKey(type) || type.IsEnum || type.FullName == LinqBinary || if (!(typeMap.ContainsKey(type) || type.IsEnum() || type.FullName == LinqBinary ||
(type.IsValueType && (underlyingType = Nullable.GetUnderlyingType(type)) != null && underlyingType.IsEnum))) (type.IsValueType() && (underlyingType = Nullable.GetUnderlyingType(type)) != null && underlyingType.IsEnum())))
{ {
ITypeHandler handler; ITypeHandler handler;
if (typeHandlers.TryGetValue(type, out handler)) if (typeHandlers.TryGetValue(type, out handler))
...@@ -2652,7 +2675,10 @@ private static Exception MultiMapException(IDataRecord reader) ...@@ -2652,7 +2675,10 @@ private static Exception MultiMapException(IDataRecord reader)
/// </summary> /// </summary>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] #if !DNXCORE50
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", false)] [Obsolete("This method is for internal usage only", false)]
public static char ReadChar(object value) public static char ReadChar(object value)
{ {
...@@ -2665,7 +2691,10 @@ public static char ReadChar(object value) ...@@ -2665,7 +2691,10 @@ public static char ReadChar(object value)
/// <summary> /// <summary>
/// Internal use only /// Internal use only
/// </summary> /// </summary>
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] #if !DNXCORE50
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", false)] [Obsolete("This method is for internal usage only", false)]
public static char? ReadNullableChar(object value) public static char? ReadNullableChar(object value)
{ {
...@@ -2679,7 +2708,10 @@ public static char ReadChar(object value) ...@@ -2679,7 +2708,10 @@ public static char ReadChar(object value)
/// <summary> /// <summary>
/// Internal use only /// Internal use only
/// </summary> /// </summary>
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] #if !DNXCORE50
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", true)] [Obsolete("This method is for internal usage only", true)]
public static IDbDataParameter FindOrAddParameter(IDataParameterCollection parameters, IDbCommand command, string name) public static IDbDataParameter FindOrAddParameter(IDataParameterCollection parameters, IDbCommand command, string name)
{ {
...@@ -2700,7 +2732,10 @@ public static IDbDataParameter FindOrAddParameter(IDataParameterCollection param ...@@ -2700,7 +2732,10 @@ public static IDbDataParameter FindOrAddParameter(IDataParameterCollection param
/// <summary> /// <summary>
/// Internal use only /// Internal use only
/// </summary> /// </summary>
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] #if !DNXCORE50
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", false)] [Obsolete("This method is for internal usage only", false)]
public static void PackListParameters(IDbCommand command, string namePrefix, object value) public static void PackListParameters(IDbCommand command, string namePrefix, object value)
{ {
...@@ -2710,7 +2745,7 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj ...@@ -2710,7 +2745,7 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj
if (FeatureSupport.Get(command.Connection).Arrays) if (FeatureSupport.Get(command.Connection).Arrays)
{ {
var arrayParm = command.CreateParameter(); var arrayParm = command.CreateParameter();
arrayParm.Value = value ?? DBNull.Value; arrayParm.Value = SanitizeParameterValue(value);
arrayParm.ParameterName = namePrefix; arrayParm.ParameterName = namePrefix;
command.Parameters.Add(arrayParm); command.Parameters.Add(arrayParm);
} }
...@@ -2740,7 +2775,7 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj ...@@ -2740,7 +2775,7 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj
} }
else else
{ {
listParam.Value = item ?? DBNull.Value; listParam.Value = SanitizeParameterValue(item);
command.Parameters.Add(listParam); command.Parameters.Add(listParam);
} }
} }
...@@ -2797,7 +2832,34 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj ...@@ -2797,7 +2832,34 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj
} }
} }
internal static object SanitizeParameterValue(object value)
{
if (value == null) return DBNull.Value;
if (value is Enum)
{
TypeCode typeCode;
if (value is IConvertible)
{
typeCode = ((IConvertible)value).GetTypeCode();
}
else
{
typeCode = TypeExtensions.GetTypeCode(Enum.GetUnderlyingType(value.GetType()));
}
switch (typeCode)
{
case TypeCode.Byte: return (byte)value;
case TypeCode.SByte: return (sbyte)value;
case TypeCode.Int16: return (short)value;
case TypeCode.Int32: return (int)value;
case TypeCode.Int64: return (long)value;
case TypeCode.UInt16: return (ushort)value;
case TypeCode.UInt32: return (uint)value;
case TypeCode.UInt64: return (ulong)value;
}
}
return value;
}
private static IEnumerable<PropertyInfo> FilterParameters(IEnumerable<PropertyInfo> parameters, string sql) private static IEnumerable<PropertyInfo> FilterParameters(IEnumerable<PropertyInfo> parameters, string sql)
{ {
return parameters.Where(p => Regex.IsMatch(sql, @"[?@:]" + p.Name + "([^a-z0-9_]+|$)", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant)); return parameters.Where(p => Regex.IsMatch(sql, @"[?@:]" + p.Name + "([^a-z0-9_]+|$)", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant));
...@@ -2854,10 +2916,12 @@ public static string Format(object value) ...@@ -2854,10 +2916,12 @@ public static string Format(object value)
} }
else else
{ {
switch (Type.GetTypeCode(value.GetType())) switch (TypeExtensions.GetTypeCode(value.GetType()))
{ {
#if !DNXCORE50
case TypeCode.DBNull: case TypeCode.DBNull:
return "null"; return "null";
#endif
case TypeCode.Boolean: case TypeCode.Boolean:
return ((bool)value) ? "1" : "0"; return ((bool)value) ? "1" : "0";
case TypeCode.Byte: case TypeCode.Byte:
...@@ -2936,7 +3000,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -2936,7 +3000,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
if (!literalTokens.IsMatch(sql)) return LiteralToken.None; if (!literalTokens.IsMatch(sql)) return LiteralToken.None;
var matches = literalTokens.Matches(sql); var matches = literalTokens.Matches(sql);
var found = new HashSet<string>(StringComparer.InvariantCulture); var found = new HashSet<string>(StringComparer.Ordinal);
List<LiteralToken> list = new List<LiteralToken>(matches.Count); List<LiteralToken> list = new List<LiteralToken>(matches.Count);
foreach(Match match in matches) foreach(Match match in matches)
{ {
...@@ -2970,7 +3034,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -2970,7 +3034,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
var il = dm.GetILGenerator(); var il = dm.GetILGenerator();
bool isStruct = type.IsValueType; bool isStruct = type.IsValueType();
bool haveInt32Arg1 = false; bool haveInt32Arg1 = false;
il.Emit(OpCodes.Ldarg_1); // stack is now [untyped-param] il.Emit(OpCodes.Ldarg_1); // stack is now [untyped-param]
if (isStruct) if (isStruct)
...@@ -3000,7 +3064,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3000,7 +3064,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
bool ok = true; bool ok = true;
for (int i = 0; i < propsArr.Length; i++) for (int i = 0; i < propsArr.Length; i++)
{ {
if (!string.Equals(propsArr[i].Name, ctorParams[i].Name, StringComparison.InvariantCultureIgnoreCase)) if (!string.Equals(propsArr[i].Name, ctorParams[i].Name, StringComparison.OrdinalIgnoreCase))
{ {
ok = false; ok = false;
break; break;
...@@ -3012,7 +3076,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3012,7 +3076,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
props = propsArr; props = propsArr;
} }
else { // might still all be accounted for; check the hard way else { // might still all be accounted for; check the hard way
var positionByName = new Dictionary<string,int>(StringComparer.InvariantCultureIgnoreCase); var positionByName = new Dictionary<string,int>(StringComparer.OrdinalIgnoreCase);
foreach(var param in ctorParams) foreach(var param in ctorParams)
{ {
positionByName[param.Name] = param.Position; positionByName[param.Name] = param.Position;
...@@ -3066,7 +3130,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3066,7 +3130,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
il.Emit(OpCodes.Ldstr, prop.Name); // stack is now [parameters] [command] [name] il.Emit(OpCodes.Ldstr, prop.Name); // stack is now [parameters] [command] [name]
il.Emit(OpCodes.Ldloc_0); // stack is now [parameters] [command] [name] [typed-param] il.Emit(OpCodes.Ldloc_0); // stack is now [parameters] [command] [name] [typed-param]
il.Emit(callOpCode, prop.GetGetMethod()); // stack is [parameters] [command] [name] [typed-value] il.Emit(callOpCode, prop.GetGetMethod()); // stack is [parameters] [command] [name] [typed-value]
if (prop.PropertyType.IsValueType) if (prop.PropertyType.IsValueType())
{ {
il.Emit(OpCodes.Box, prop.PropertyType); // stack is [parameters] [command] [name] [boxed-value] il.Emit(OpCodes.Box, prop.PropertyType); // stack is [parameters] [command] [name] [boxed-value]
} }
...@@ -3118,7 +3182,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3118,7 +3182,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
il.Emit(OpCodes.Ldloc_0); // stack is now [parameters] [[parameters]] [parameter] [parameter] [typed-param] il.Emit(OpCodes.Ldloc_0); // stack is now [parameters] [[parameters]] [parameter] [parameter] [typed-param]
il.Emit(callOpCode, prop.GetGetMethod()); // stack is [parameters] [[parameters]] [parameter] [parameter] [typed-value] il.Emit(callOpCode, prop.GetGetMethod()); // stack is [parameters] [[parameters]] [parameter] [parameter] [typed-value]
bool checkForNull = true; bool checkForNull = true;
if (prop.PropertyType.IsValueType) if (prop.PropertyType.IsValueType())
{ {
il.Emit(OpCodes.Box, prop.PropertyType); // stack is [parameters] [[parameters]] [parameter] [parameter] [boxed-value] il.Emit(OpCodes.Box, prop.PropertyType); // stack is [parameters] [[parameters]] [parameter] [parameter] [boxed-value]
if (Nullable.GetUnderlyingType(prop.PropertyType) == null) if (Nullable.GetUnderlyingType(prop.PropertyType) == null)
...@@ -3228,10 +3292,10 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3228,10 +3292,10 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
for(int i = 0; i < propsArr.Length;i++) for(int i = 0; i < propsArr.Length;i++)
{ {
string thisName = propsArr[i].Name; string thisName = propsArr[i].Name;
if(string.Equals(thisName, huntName, StringComparison.InvariantCultureIgnoreCase)) if(string.Equals(thisName, huntName, StringComparison.OrdinalIgnoreCase))
{ {
fallback = propsArr[i]; fallback = propsArr[i];
if(string.Equals(thisName, huntName, StringComparison.InvariantCulture)) if(string.Equals(thisName, huntName, StringComparison.Ordinal))
{ {
exact = fallback; exact = fallback;
break; break;
...@@ -3246,7 +3310,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3246,7 +3310,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
il.Emit(OpCodes.Ldloc_0); // command, sql, typed parameter il.Emit(OpCodes.Ldloc_0); // command, sql, typed parameter
il.EmitCall(callOpCode, prop.GetGetMethod(), null); // command, sql, typed value il.EmitCall(callOpCode, prop.GetGetMethod(), null); // command, sql, typed value
Type propType = prop.PropertyType; Type propType = prop.PropertyType;
var typeCode = Type.GetTypeCode(propType); var typeCode = TypeExtensions.GetTypeCode(propType);
switch (typeCode) switch (typeCode)
{ {
case TypeCode.Boolean: case TypeCode.Boolean:
...@@ -3287,7 +3351,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3287,7 +3351,7 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
il.EmitCall(OpCodes.Call, convert, null); // command, sql, string value il.EmitCall(OpCodes.Call, convert, null); // command, sql, string value
break; break;
default: default:
if (propType.IsValueType) il.Emit(OpCodes.Box, propType); // command, sql, object value if (propType.IsValueType()) il.Emit(OpCodes.Box, propType); // command, sql, object value
il.EmitCall(OpCodes.Call, format, null); // command, sql, string value il.EmitCall(OpCodes.Call, format, null); // command, sql, string value
break; break;
...@@ -3305,13 +3369,13 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql) ...@@ -3305,13 +3369,13 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
{ {
typeof(bool), typeof(sbyte), typeof(byte), typeof(ushort), typeof(short), typeof(bool), typeof(sbyte), typeof(byte), typeof(ushort), typeof(short),
typeof(uint), typeof(int), typeof(ulong), typeof(long), typeof(float), typeof(double), typeof(decimal) typeof(uint), typeof(int), typeof(ulong), typeof(long), typeof(float), typeof(double), typeof(decimal)
}.ToDictionary(x => Type.GetTypeCode(x), x => x.GetMethod("ToString", BindingFlags.Public | BindingFlags.Instance, null, new[] { typeof(IFormatProvider) }, null)); }.ToDictionary(x => TypeExtensions.GetTypeCode(x), x => x.GetPublicInstanceMethod("ToString", new[] { typeof(IFormatProvider) }));
static MethodInfo GetToString(TypeCode typeCode) static MethodInfo GetToString(TypeCode typeCode)
{ {
MethodInfo method; MethodInfo method;
return toStrings.TryGetValue(typeCode, out method) ? method : null; return toStrings.TryGetValue(typeCode, out method) ? method : null;
} }
static readonly MethodInfo StringReplace = typeof(string).GetMethod("Replace", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(string), typeof(string) }, null), static readonly MethodInfo StringReplace = typeof(string).GetPublicInstanceMethod("Replace", new Type[] { typeof(string), typeof(string) }),
InvariantCulture = typeof(CultureInfo).GetProperty("InvariantCulture", BindingFlags.Public | BindingFlags.Static).GetGetMethod(); InvariantCulture = typeof(CultureInfo).GetProperty("InvariantCulture", BindingFlags.Public | BindingFlags.Static).GetGetMethod();
private static int ExecuteCommand(IDbConnection cnn, ref CommandDefinition command, Action<IDbCommand, object> paramReader) private static int ExecuteCommand(IDbConnection cnn, ref CommandDefinition command, Action<IDbCommand, object> paramReader)
...@@ -3423,7 +3487,7 @@ private static IDataReader ExecuteReaderImpl(IDbConnection cnn, ref CommandDefin ...@@ -3423,7 +3487,7 @@ private static IDataReader ExecuteReaderImpl(IDbConnection cnn, ref CommandDefin
} }
#pragma warning restore 618 #pragma warning restore 618
if (effectiveType.IsEnum) if (effectiveType.IsEnum())
{ // assume the value is returned as the correct type (int/byte/etc), but box back to the typed enum { // assume the value is returned as the correct type (int/byte/etc), but box back to the typed enum
return r => return r =>
{ {
...@@ -3457,7 +3521,7 @@ private static T Parse<T>(object value) ...@@ -3457,7 +3521,7 @@ private static T Parse<T>(object value)
if (value is T) return (T)value; if (value is T) return (T)value;
var type = typeof(T); var type = typeof(T);
type = Nullable.GetUnderlyingType(type) ?? type; type = Nullable.GetUnderlyingType(type) ?? type;
if (type.IsEnum) if (type.IsEnum())
{ {
if (value is float || value is double || value is decimal) if (value is float || value is double || value is decimal)
{ {
...@@ -3486,14 +3550,23 @@ static readonly MethodInfo ...@@ -3486,14 +3550,23 @@ static readonly MethodInfo
public static ITypeMap GetTypeMap(Type type) public static ITypeMap GetTypeMap(Type type)
{ {
if (type == null) throw new ArgumentNullException("type"); if (type == null) throw new ArgumentNullException("type");
#if DNXCORE50
ITypeMap map = null;
#else
var map = (ITypeMap)_typeMaps[type]; var map = (ITypeMap)_typeMaps[type];
#endif
if (map == null) if (map == null)
{ {
lock (_typeMaps) lock (_typeMaps)
{ // double-checked; store this to avoid reflection next time we see this type { // double-checked; store this to avoid reflection next time we see this type
// since multiple queries commonly use the same domain-entity/DTO/view-model type // since multiple queries commonly use the same domain-entity/DTO/view-model type
#if DNXCORE50
if (!_typeMaps.TryGetValue(type, out map)) map = null;
#else
map = (ITypeMap)_typeMaps[type]; map = (ITypeMap)_typeMaps[type];
if (map == null) #endif
if (map == null)
{ {
map = new DefaultTypeMap(type); map = new DefaultTypeMap(type);
_typeMaps[type] = map; _typeMaps[type] = map;
...@@ -3504,7 +3577,11 @@ public static ITypeMap GetTypeMap(Type type) ...@@ -3504,7 +3577,11 @@ public static ITypeMap GetTypeMap(Type type)
} }
// use Hashtable to get free lockless reading // use Hashtable to get free lockless reading
#if DNXCORE50
private static readonly Dictionary<Type,ITypeMap> _typeMaps = new Dictionary<Type, ITypeMap>();
#else
private static readonly Hashtable _typeMaps = new Hashtable(); private static readonly Hashtable _typeMaps = new Hashtable();
#endif
/// <summary> /// <summary>
/// Set custom mapping for type deserializers /// Set custom mapping for type deserializers
...@@ -3577,8 +3654,10 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3577,8 +3654,10 @@ public static void SetTypeMap(Type type, ITypeMap map)
ConstructorInfo specializedConstructor = null; ConstructorInfo specializedConstructor = null;
#if !DNXCORE50
bool supportInitialize = false; bool supportInitialize = false;
if (type.IsValueType) #endif
if (type.IsValueType())
{ {
il.Emit(OpCodes.Ldloca_S, (byte)1); il.Emit(OpCodes.Ldloca_S, (byte)1);
il.Emit(OpCodes.Initobj, type); il.Emit(OpCodes.Initobj, type);
...@@ -3599,7 +3678,7 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3599,7 +3678,7 @@ public static void SetTypeMap(Type type, ITypeMap map)
var consPs = explicitConstr.GetParameters(); var consPs = explicitConstr.GetParameters();
foreach(var p in consPs) foreach(var p in consPs)
{ {
if(!p.ParameterType.IsValueType) if(!p.ParameterType.IsValueType())
{ {
il.Emit(OpCodes.Ldnull); il.Emit(OpCodes.Ldnull);
} }
...@@ -3620,12 +3699,14 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3620,12 +3699,14 @@ public static void SetTypeMap(Type type, ITypeMap map)
il.Emit(OpCodes.Newobj, explicitConstr); il.Emit(OpCodes.Newobj, explicitConstr);
il.Emit(OpCodes.Stloc_1); il.Emit(OpCodes.Stloc_1);
#if !DNXCORE50
supportInitialize = typeof(ISupportInitialize).IsAssignableFrom(type); supportInitialize = typeof(ISupportInitialize).IsAssignableFrom(type);
if (supportInitialize) if (supportInitialize)
{ {
il.Emit(OpCodes.Ldloc_1); il.Emit(OpCodes.Ldloc_1);
il.EmitCall(OpCodes.Callvirt, typeof(ISupportInitialize).GetMethod("BeginInit"), null); il.EmitCall(OpCodes.Callvirt, typeof(ISupportInitialize).GetMethod("BeginInit"), null);
} }
#endif
} }
else else
{ {
...@@ -3640,12 +3721,14 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3640,12 +3721,14 @@ public static void SetTypeMap(Type type, ITypeMap map)
{ {
il.Emit(OpCodes.Newobj, ctor); il.Emit(OpCodes.Newobj, ctor);
il.Emit(OpCodes.Stloc_1); il.Emit(OpCodes.Stloc_1);
#if !DNXCORE50
supportInitialize = typeof(ISupportInitialize).IsAssignableFrom(type); supportInitialize = typeof(ISupportInitialize).IsAssignableFrom(type);
if (supportInitialize) if (supportInitialize)
{ {
il.Emit(OpCodes.Ldloc_1); il.Emit(OpCodes.Ldloc_1);
il.EmitCall(OpCodes.Callvirt, typeof(ISupportInitialize).GetMethod("BeginInit"), null); il.EmitCall(OpCodes.Callvirt, typeof(ISupportInitialize).GetMethod("BeginInit"), null);
} }
#endif
} }
else else
{ {
...@@ -3655,7 +3738,7 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3655,7 +3738,7 @@ public static void SetTypeMap(Type type, ITypeMap map)
} }
il.BeginExceptionBlock(); il.BeginExceptionBlock();
if (type.IsValueType) if (type.IsValueType())
{ {
il.Emit(OpCodes.Ldloca_S, (byte)1);// [target] il.Emit(OpCodes.Ldloca_S, (byte)1);// [target]
} }
...@@ -3706,9 +3789,9 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3706,9 +3789,9 @@ public static void SetTypeMap(Type type, ITypeMap map)
// unbox nullable enums as the primitive, i.e. byte etc // unbox nullable enums as the primitive, i.e. byte etc
var nullUnderlyingType = Nullable.GetUnderlyingType(memberType); var nullUnderlyingType = Nullable.GetUnderlyingType(memberType);
var unboxType = nullUnderlyingType != null && nullUnderlyingType.IsEnum ? nullUnderlyingType : memberType; var unboxType = nullUnderlyingType != null && nullUnderlyingType.IsEnum() ? nullUnderlyingType : memberType;
if (unboxType.IsEnum) if (unboxType.IsEnum())
{ {
Type numericType = Enum.GetUnderlyingType(unboxType); Type numericType = Enum.GetUnderlyingType(unboxType);
if(colType == typeof(string)) if(colType == typeof(string))
...@@ -3743,9 +3826,9 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3743,9 +3826,9 @@ public static void SetTypeMap(Type type, ITypeMap map)
} }
else else
{ {
TypeCode dataTypeCode = Type.GetTypeCode(colType), unboxTypeCode = Type.GetTypeCode(unboxType); TypeCode dataTypeCode = TypeExtensions.GetTypeCode(colType), unboxTypeCode = TypeExtensions.GetTypeCode(unboxType);
bool hasTypeHandler; bool hasTypeHandler;
if ((hasTypeHandler = typeHandlers.ContainsKey(unboxType)) || colType == unboxType || dataTypeCode == unboxTypeCode || dataTypeCode == Type.GetTypeCode(nullUnderlyingType)) if ((hasTypeHandler = typeHandlers.ContainsKey(unboxType)) || colType == unboxType || dataTypeCode == unboxTypeCode || dataTypeCode == TypeExtensions.GetTypeCode(nullUnderlyingType))
{ {
if (hasTypeHandler) if (hasTypeHandler)
{ {
...@@ -3776,7 +3859,7 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3776,7 +3859,7 @@ public static void SetTypeMap(Type type, ITypeMap map)
// Store the value in the property/field // Store the value in the property/field
if (item.Property != null) if (item.Property != null)
{ {
if (type.IsValueType) if (type.IsValueType())
{ {
il.Emit(OpCodes.Call, DefaultTypeMap.GetPropertySetter(item.Property, type)); // stack is now [target] il.Emit(OpCodes.Call, DefaultTypeMap.GetPropertySetter(item.Property, type)); // stack is now [target]
} }
...@@ -3797,7 +3880,7 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3797,7 +3880,7 @@ public static void SetTypeMap(Type type, ITypeMap map)
if (specializedConstructor != null) if (specializedConstructor != null)
{ {
il.Emit(OpCodes.Pop); il.Emit(OpCodes.Pop);
if (item.MemberType.IsValueType) if (item.MemberType.IsValueType())
{ {
int localIndex = il.DeclareLocal(item.MemberType).LocalIndex; int localIndex = il.DeclareLocal(item.MemberType).LocalIndex;
LoadLocalAddress(il, localIndex); LoadLocalAddress(il, localIndex);
...@@ -3828,7 +3911,7 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3828,7 +3911,7 @@ public static void SetTypeMap(Type type, ITypeMap map)
first = false; first = false;
index += 1; index += 1;
} }
if (type.IsValueType) if (type.IsValueType())
{ {
il.Emit(OpCodes.Pop); il.Emit(OpCodes.Pop);
} }
...@@ -3839,11 +3922,13 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3839,11 +3922,13 @@ public static void SetTypeMap(Type type, ITypeMap map)
il.Emit(OpCodes.Newobj, specializedConstructor); il.Emit(OpCodes.Newobj, specializedConstructor);
} }
il.Emit(OpCodes.Stloc_1); // stack is empty il.Emit(OpCodes.Stloc_1); // stack is empty
#if !DNXCORE50
if (supportInitialize) if (supportInitialize)
{ {
il.Emit(OpCodes.Ldloc_1); il.Emit(OpCodes.Ldloc_1);
il.EmitCall(OpCodes.Callvirt, typeof(ISupportInitialize).GetMethod("EndInit"), null); il.EmitCall(OpCodes.Callvirt, typeof(ISupportInitialize).GetMethod("EndInit"), null);
} }
#endif
} }
il.MarkLabel(allDone); il.MarkLabel(allDone);
il.BeginCatchBlock(typeof(Exception)); // stack is Exception il.BeginCatchBlock(typeof(Exception)); // stack is Exception
...@@ -3854,7 +3939,7 @@ public static void SetTypeMap(Type type, ITypeMap map) ...@@ -3854,7 +3939,7 @@ public static void SetTypeMap(Type type, ITypeMap map)
il.EndExceptionBlock(); il.EndExceptionBlock();
il.Emit(OpCodes.Ldloc_1); // stack is [rval] il.Emit(OpCodes.Ldloc_1); // stack is [rval]
if (type.IsValueType) if (type.IsValueType())
{ {
il.Emit(OpCodes.Box, type); il.Emit(OpCodes.Box, type);
} }
...@@ -3880,7 +3965,7 @@ private static void FlexibleConvertBoxedFromHeadOfStack(ILGenerator il, Type fro ...@@ -3880,7 +3965,7 @@ private static void FlexibleConvertBoxedFromHeadOfStack(ILGenerator il, Type fro
{ {
bool handled = false; bool handled = false;
OpCode opCode = default(OpCode); OpCode opCode = default(OpCode);
switch (Type.GetTypeCode(from)) switch (TypeExtensions.GetTypeCode(from))
{ {
case TypeCode.Boolean: case TypeCode.Boolean:
case TypeCode.Byte: case TypeCode.Byte:
...@@ -3894,7 +3979,7 @@ private static void FlexibleConvertBoxedFromHeadOfStack(ILGenerator il, Type fro ...@@ -3894,7 +3979,7 @@ private static void FlexibleConvertBoxedFromHeadOfStack(ILGenerator il, Type fro
case TypeCode.Single: case TypeCode.Single:
case TypeCode.Double: case TypeCode.Double:
handled = true; handled = true;
switch (Type.GetTypeCode(via ?? to)) switch (TypeExtensions.GetTypeCode(via ?? to))
{ {
case TypeCode.Byte: case TypeCode.Byte:
opCode = OpCodes.Conv_Ovf_I1_Un; break; opCode = OpCodes.Conv_Ovf_I1_Un; break;
...@@ -4043,7 +4128,7 @@ public static void ThrowDataException(Exception ex, int index, IDataReader reade ...@@ -4043,7 +4128,7 @@ public static void ThrowDataException(Exception ex, int index, IDataReader reade
} }
else else
{ {
formattedValue = Convert.ToString(value) + " - " + Type.GetTypeCode(value.GetType()); formattedValue = Convert.ToString(value) + " - " + TypeExtensions.GetTypeCode(value.GetType());
} }
} }
catch (Exception valEx) catch (Exception valEx)
...@@ -4379,6 +4464,8 @@ public void Dispose() ...@@ -4379,6 +4464,8 @@ public void Dispose()
} }
} }
#if !DNXCORE50
/// <summary> /// <summary>
/// Used to pass a DataTable as a TableValuedParameter /// Used to pass a DataTable as a TableValuedParameter
/// </summary> /// </summary>
...@@ -4412,7 +4499,7 @@ public static string GetTypeName(this DataTable table) ...@@ -4412,7 +4499,7 @@ public static string GetTypeName(this DataTable table)
{ {
return table == null ? null : table.ExtendedProperties[DataTableTypeNameKey] as string; return table == null ? null : table.ExtendedProperties[DataTableTypeNameKey] as string;
} }
#endif
// one per thread // one per thread
[ThreadStatic] [ThreadStatic]
...@@ -4698,7 +4785,7 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity) ...@@ -4698,7 +4785,7 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
p.Direction = param.ParameterDirection; p.Direction = param.ParameterDirection;
if (handler == null) if (handler == null)
{ {
p.Value = val ?? DBNull.Value; p.Value = SqlMapper.SanitizeParameterValue(val);
if (dbType != null && p.DbType != dbType) if (dbType != null && p.DbType != dbType)
{ {
p.DbType = dbType.Value; p.DbType = dbType.Value;
...@@ -4711,10 +4798,7 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity) ...@@ -4711,10 +4798,7 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
p.Size = DbString.DefaultLength; p.Size = DbString.DefaultLength;
} }
} }
if (param.Size != null) if (param.Size != null) p.Size = param.Size.Value;
{
p.Size = param.Size.Value;
}
if (param.Precision != null) p.Precision = param.Precision.Value; if (param.Precision != null) p.Precision = param.Precision.Value;
if (param.Scale != null) p.Scale = param.Scale.Value; if (param.Scale != null) p.Scale = param.Scale.Value;
} }
...@@ -4722,6 +4806,8 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity) ...@@ -4722,6 +4806,8 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
{ {
if (dbType != null) p.DbType = dbType.Value; if (dbType != null) p.DbType = dbType.Value;
if (param.Size != null) p.Size = param.Size.Value; if (param.Size != null) p.Size = param.Size.Value;
if (param.Precision != null) p.Precision = param.Precision.Value;
if (param.Scale != null) p.Scale = param.Scale.Value;
handler.SetValue(p, val ?? DBNull.Value); handler.SetValue(p, val ?? DBNull.Value);
} }
...@@ -4793,8 +4879,8 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4793,8 +4879,8 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
var lastMemberAccess = expression.Body as MemberExpression; var lastMemberAccess = expression.Body as MemberExpression;
if (lastMemberAccess == null || if (lastMemberAccess == null ||
(lastMemberAccess.Member.MemberType != MemberTypes.Property && (!(lastMemberAccess.Member is PropertyInfo) &&
lastMemberAccess.Member.MemberType != MemberTypes.Field)) !(lastMemberAccess.Member is FieldInfo)))
{ {
if (expression.Body.NodeType == ExpressionType.Convert && if (expression.Body.NodeType == ExpressionType.Convert &&
expression.Body.Type == typeof(object) && expression.Body.Type == typeof(object) &&
...@@ -4829,8 +4915,8 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4829,8 +4915,8 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
break; break;
} }
else if (diving == null || else if (diving == null ||
(diving.Member.MemberType != MemberTypes.Property && (!(diving.Member is PropertyInfo) &&
diving.Member.MemberType != MemberTypes.Field)) !(diving.Member is FieldInfo)))
{ {
@throw(); @throw();
} }
...@@ -4843,8 +4929,15 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4843,8 +4929,15 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
var lookup = string.Join("|", names.ToArray()); var lookup = string.Join("|", names.ToArray());
var cache = CachedOutputSetters<T>.Cache; var cache = CachedOutputSetters<T>.Cache;
var setter = (Action<object, DynamicParameters>)cache[lookup]; Action<object, DynamicParameters> setter;
#if DNXCORE50
lock (cache)
{
if(!cache.TryGetValue(lookup, out setter)) setter = null;
}
#else
setter = (Action<object, DynamicParameters>)cache[lookup];
#endif
if (setter != null) goto MAKECALLBACK; if (setter != null) goto MAKECALLBACK;
// Come on let's build a method, let's build it, let's build it now! // Come on let's build a method, let's build it, let's build it now!
...@@ -4860,7 +4953,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4860,7 +4953,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
{ {
var member = chain[0].Member; var member = chain[0].Member;
if (member.MemberType == MemberTypes.Property) if (member is PropertyInfo)
{ {
var get = ((PropertyInfo)member).GetGetMethod(true); var get = ((PropertyInfo)member).GetGetMethod(true);
il.Emit(OpCodes.Callvirt, get); // [Member{i}] il.Emit(OpCodes.Callvirt, get); // [Member{i}]
...@@ -4879,7 +4972,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4879,7 +4972,7 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
// GET READY // GET READY
var lastMember = lastMemberAccess.Member; var lastMember = lastMemberAccess.Member;
if (lastMember.MemberType == MemberTypes.Property) if (lastMember is PropertyInfo)
{ {
var set = ((PropertyInfo)lastMember).GetSetMethod(true); var set = ((PropertyInfo)lastMember).GetSetMethod(true);
il.Emit(OpCodes.Callvirt, set); // SET il.Emit(OpCodes.Callvirt, set); // SET
...@@ -4939,7 +5032,11 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express ...@@ -4939,7 +5032,11 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
internal static class CachedOutputSetters<T> internal static class CachedOutputSetters<T>
{ {
#if DNXCORE50
public static readonly Dictionary<string, Action<object, DynamicParameters>> Cache = new Dictionary<string, Action<object, DynamicParameters>>();
#else
public static readonly Hashtable Cache = new Hashtable(); public static readonly Hashtable Cache = new Hashtable();
#endif
} }
void SqlMapper.IParameterCallbacks.OnCompleted() void SqlMapper.IParameterCallbacks.OnCompleted()
...@@ -4950,7 +5047,7 @@ void SqlMapper.IParameterCallbacks.OnCompleted() ...@@ -4950,7 +5047,7 @@ void SqlMapper.IParameterCallbacks.OnCompleted()
} }
} }
} }
#if !DNXCORE50
sealed class DataTableHandler : Dapper.SqlMapper.ITypeHandler sealed class DataTableHandler : Dapper.SqlMapper.ITypeHandler
{ {
public object Parse(Type destinationType, object value) public object Parse(Type destinationType, object value)
...@@ -5003,7 +5100,7 @@ void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string nam ...@@ -5003,7 +5100,7 @@ void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string nam
} }
internal static void Set(IDbDataParameter parameter, DataTable table, string typeName) internal static void Set(IDbDataParameter parameter, DataTable table, string typeName)
{ {
parameter.Value = (object)table ?? DBNull.Value; parameter.Value = SqlMapper.SanitizeParameterValue(table);
if (string.IsNullOrEmpty(typeName) && table != null) if (string.IsNullOrEmpty(typeName) && table != null)
{ {
typeName = SqlMapper.GetTypeName(table); typeName = SqlMapper.GetTypeName(table);
...@@ -5019,6 +5116,7 @@ internal static void Set(IDbDataParameter parameter, DataTable table, string typ ...@@ -5019,6 +5116,7 @@ internal static void Set(IDbDataParameter parameter, DataTable table, string typ
} }
} }
} }
#endif
/// <summary> /// <summary>
/// This class represents a SQL string, it can be used if you need to denote your parameter is a Char vs VarChar vs nVarChar vs nChar /// This class represents a SQL string, it can be used if you need to denote your parameter is a Char vs VarChar vs nVarChar vs nChar
/// </summary> /// </summary>
...@@ -5064,7 +5162,7 @@ public void AddParameter(IDbCommand command, string name) ...@@ -5064,7 +5162,7 @@ public void AddParameter(IDbCommand command, string name)
} }
var param = command.CreateParameter(); var param = command.CreateParameter();
param.ParameterName = name; param.ParameterName = name;
param.Value = (object)Value ?? DBNull.Value; param.Value = SqlMapper.SanitizeParameterValue(Value);
if (Length == -1 && Value != null && Value.Length <= DefaultLength) if (Length == -1 && Value != null && Value.Length <= DefaultLength)
{ {
param.Size = DefaultLength; param.Size = DefaultLength;
...@@ -5093,7 +5191,7 @@ private static readonly FeatureSupport ...@@ -5093,7 +5191,7 @@ private static readonly FeatureSupport
public static FeatureSupport Get(IDbConnection connection) public static FeatureSupport Get(IDbConnection connection)
{ {
string name = connection == null ? null : connection.GetType().Name; string name = connection == null ? null : connection.GetType().Name;
if (string.Equals(name, "npgsqlconnection", StringComparison.InvariantCultureIgnoreCase)) return postgres; if (string.Equals(name, "npgsqlconnection", StringComparison.OrdinalIgnoreCase)) return postgres;
return @default; return @default;
} }
private FeatureSupport(bool arrays) private FeatureSupport(bool arrays)
...@@ -5242,18 +5340,35 @@ public DefaultTypeMap(Type type) ...@@ -5242,18 +5340,35 @@ public DefaultTypeMap(Type type)
_properties = GetSettableProps(type); _properties = GetSettableProps(type);
_type = type; _type = type;
} }
#if DNXCORE50
static bool IsParameterMatch(ParameterInfo[] x, ParameterInfo[] y)
{
if (ReferenceEquals(x, y)) return true;
if (x == null || y == null) return false;
if (x.Length != y.Length) return false;
for (int i = 0; i < x.Length; i++)
if (x[i].ParameterType != y[i].ParameterType) return false;
return true;
}
#endif
internal static MethodInfo GetPropertySetter(PropertyInfo propertyInfo, Type type) internal static MethodInfo GetPropertySetter(PropertyInfo propertyInfo, Type type)
{ {
return propertyInfo.DeclaringType == type ? if (propertyInfo.DeclaringType == type) return propertyInfo.GetSetMethod(true);
propertyInfo.GetSetMethod(true) : #if DNXCORE50
propertyInfo.DeclaringType.GetProperty( return propertyInfo.DeclaringType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
.Single(x => x.Name == propertyInfo.Name
&& x.PropertyType == propertyInfo.PropertyType
&& IsParameterMatch(x.GetIndexParameters(), propertyInfo.GetIndexParameters())
).GetSetMethod(true);
#else
return propertyInfo.DeclaringType.GetProperty(
propertyInfo.Name, propertyInfo.Name,
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
Type.DefaultBinder, Type.DefaultBinder,
propertyInfo.PropertyType, propertyInfo.PropertyType,
propertyInfo.GetIndexParameters().Select(p => p.ParameterType).ToArray(), propertyInfo.GetIndexParameters().Select(p => p.ParameterType).ToArray(),
null).GetSetMethod(true); null).GetSetMethod(true);
#endif
} }
internal static List<PropertyInfo> GetSettableProps(Type t) internal static List<PropertyInfo> GetSettableProps(Type t)
...@@ -5295,11 +5410,13 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types) ...@@ -5295,11 +5410,13 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types)
if (types[i] == typeof(byte[]) && ctorParameters[i].ParameterType.FullName == SqlMapper.LinqBinary) if (types[i] == typeof(byte[]) && ctorParameters[i].ParameterType.FullName == SqlMapper.LinqBinary)
continue; continue;
var unboxedType = Nullable.GetUnderlyingType(ctorParameters[i].ParameterType) ?? ctorParameters[i].ParameterType; var unboxedType = Nullable.GetUnderlyingType(ctorParameters[i].ParameterType) ?? ctorParameters[i].ParameterType;
if (unboxedType != types[i] if (unboxedType != types[i]
&& !(unboxedType.IsEnum && Enum.GetUnderlyingType(unboxedType) == types[i]) && !(unboxedType.IsEnum() && Enum.GetUnderlyingType(unboxedType) == types[i])
&& !(unboxedType == typeof(char) && types[i] == typeof(string)) && !(unboxedType == typeof(char) && types[i] == typeof(string))
&& !(unboxedType.IsEnum && types[i] == typeof(string))) && !(unboxedType.IsEnum() && types[i] == typeof(string)))
{
break; break;
}
} }
if (i == ctorParameters.Length) if (i == ctorParameters.Length)
...@@ -5315,7 +5432,11 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types) ...@@ -5315,7 +5432,11 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types)
public ConstructorInfo FindExplicitConstructor() public ConstructorInfo FindExplicitConstructor()
{ {
var constructors = _type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); var constructors = _type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
#if DNXCORE50
var withAttr = constructors.Where(c => c.CustomAttributes.Any(x => x.AttributeType == typeof(ExplicitConstructorAttribute))).ToList();
#else
var withAttr = constructors.Where(c => c.GetCustomAttributes(typeof(ExplicitConstructorAttribute), true).Length > 0).ToList(); var withAttr = constructors.Where(c => c.GetCustomAttributes(typeof(ExplicitConstructorAttribute), true).Length > 0).ToList();
#endif
if (withAttr.Count == 1) if (withAttr.Count == 1)
{ {
...@@ -5447,6 +5568,211 @@ public SqlMapper.IMemberMap GetMember(string columnName) ...@@ -5447,6 +5568,211 @@ public SqlMapper.IMemberMap GetMember(string columnName)
} }
} }
#if DNXCORE50
internal class WrappedReader : WrappedDataReader
{
private IDbCommand cmd;
private IDataReader reader;
public override IEnumerator GetEnumerator()
{
return Reader.GetEnumerator();
}
public WrappedReader(IDbCommand cmd, IDataReader reader)
{
this.cmd = cmd;
this.reader = reader;
}
public override IDataReader Reader
{
get
{
var tmp = reader;
if (tmp == null) throw new ObjectDisposedException(GetType().Name);
return tmp;
}
}
public override IDbCommand Command
{
get
{
var tmp = cmd;
if (tmp == null) throw new ObjectDisposedException(GetType().Name);
return tmp;
}
}
public override int Depth
{
get { return Reader.Depth; }
}
public override bool IsClosed
{
get { return reader == null ? true : reader.IsClosed; }
}
public override bool HasRows
{
get
{
return Reader.HasRows;
}
}
public override bool NextResult()
{
return Reader.NextResult();
}
public override bool Read()
{
return Reader.Read();
}
public override int RecordsAffected
{
get { return Reader.RecordsAffected; }
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (reader != null) reader.Dispose();
reader = null;
if (cmd != null) cmd.Dispose();
cmd = null;
}
base.Dispose(disposing);
}
public override int FieldCount
{
get { return Reader.FieldCount; }
}
public override bool GetBoolean(int i)
{
return Reader.GetBoolean(i);
}
public override byte GetByte(int i)
{
return Reader.GetByte(i);
}
public override long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
{
return Reader.GetBytes(i, fieldOffset, buffer, bufferoffset, length);
}
public override char GetChar(int i)
{
return Reader.GetChar(i);
}
public override long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
{
return Reader.GetChars(i, fieldoffset, buffer, bufferoffset, length);
}
protected override IDataReader GetDbDataReader(int ordinal)
{
return Reader.GetData(ordinal);
}
public override string GetDataTypeName(int i)
{
return Reader.GetDataTypeName(i);
}
public override DateTime GetDateTime(int i)
{
return Reader.GetDateTime(i);
}
public override decimal GetDecimal(int i)
{
return Reader.GetDecimal(i);
}
public override double GetDouble(int i)
{
return Reader.GetDouble(i);
}
public override Type GetFieldType(int i)
{
return Reader.GetFieldType(i);
}
public override float GetFloat(int i)
{
return Reader.GetFloat(i);
}
public override Guid GetGuid(int i)
{
return Reader.GetGuid(i);
}
public override short GetInt16(int i)
{
return Reader.GetInt16(i);
}
public override int GetInt32(int i)
{
return Reader.GetInt32(i);
}
public override long GetInt64(int i)
{
return Reader.GetInt64(i);
}
public override string GetName(int i)
{
return Reader.GetName(i);
}
public override int GetOrdinal(string name)
{
return Reader.GetOrdinal(name);
}
public override string GetString(int i)
{
return Reader.GetString(i);
}
public override object GetValue(int i)
{
return Reader.GetValue(i);
}
public override int GetValues(object[] values)
{
return Reader.GetValues(values);
}
public override bool IsDBNull(int i)
{
return Reader.IsDBNull(i);
}
public override object this[string name]
{
get { return Reader[name]; }
}
public override object this[int i]
{
get { return Reader[i]; }
}
}
#else
internal class WrappedReader : IDataReader, IWrappedDataReader internal class WrappedReader : IDataReader, IWrappedDataReader
{ {
private IDataReader reader; private IDataReader reader;
...@@ -5645,7 +5971,25 @@ bool IDataRecord.IsDBNull(int i) ...@@ -5645,7 +5971,25 @@ bool IDataRecord.IsDBNull(int i)
get { return Reader[i]; } get { return Reader[i]; }
} }
} }
#endif
#if DNXCORE50
/// <summary>
/// Describes a reader that controls the lifetime of both a command and a reader,
/// exposing the downstream command/reader as properties.
/// </summary>
public abstract class WrappedDataReader : IDataReader
{
/// <summary>
/// Obtain the underlying reader
/// </summary>
public abstract IDataReader Reader { get; }
/// <summary>
/// Obtain the underlying command
/// </summary>
public abstract IDbCommand Command { get; }
}
#else
/// <summary> /// <summary>
/// Describes a reader that controls the lifetime of both a command and a reader, /// Describes a reader that controls the lifetime of both a command and a reader,
/// exposing the downstream command/reader as properties. /// exposing the downstream command/reader as properties.
...@@ -5661,6 +6005,7 @@ public interface IWrappedDataReader : IDataReader ...@@ -5661,6 +6005,7 @@ public interface IWrappedDataReader : IDataReader
/// </summary> /// </summary>
IDbCommand Command { get; } IDbCommand Command { get; }
} }
#endif
/// <summary> /// <summary>
/// Tell Dapper to use an explicit constructor, passing nulls or 0s for all parameters /// Tell Dapper to use an explicit constructor, passing nulls or 0s for all parameters
...@@ -5713,4 +6058,73 @@ public partial class FeatureSupport ...@@ -5713,4 +6058,73 @@ public partial class FeatureSupport
#endif #endif
internal static class TypeExtensions
{
public static bool IsValueType(this Type type)
{
#if DNXCORE50
return typeof(ValueType).IsAssignableFrom(type) && type != typeof(ValueType);
#else
return type.IsValueType;
#endif
}
public static bool IsEnum(this Type type)
{
#if DNXCORE50
return typeof(Enum).IsAssignableFrom(type) && type != typeof(Enum);
#else
return type.IsEnum;
#endif
}
#if DNXCORE50
public static TypeCode GetTypeCode(Type type)
{
if (type == null) return TypeCode.Empty;
TypeCode result;
if (typeCodeLookup.TryGetValue(type, out result)) return result;
if (type.IsEnum())
{
type = Enum.GetUnderlyingType(type);
if (typeCodeLookup.TryGetValue(type, out result)) return result;
}
return TypeCode.Object;
}
static readonly Dictionary<Type, TypeCode> typeCodeLookup = new Dictionary<Type, TypeCode>
{
{typeof(bool), TypeCode.Boolean },
{typeof(byte), TypeCode.Byte },
{typeof(char), TypeCode.Char},
{typeof(DateTime), TypeCode.DateTime},
{typeof(decimal), TypeCode.Decimal},
{typeof(double), TypeCode.Double },
{typeof(short), TypeCode.Int16 },
{typeof(int), TypeCode.Int32 },
{typeof(long), TypeCode.Int64 },
{typeof(object), TypeCode.Object},
{typeof(sbyte), TypeCode.SByte },
{typeof(float), TypeCode.Single },
{typeof(string), TypeCode.String },
{typeof(ushort), TypeCode.UInt16 },
{typeof(uint), TypeCode.UInt32 },
{typeof(ulong), TypeCode.UInt64 },
};
#else
public static TypeCode GetTypeCode(Type type)
{
return Type.GetTypeCode(type);
}
#endif
public static MethodInfo GetPublicInstanceMethod(this Type type, string name, Type[] types)
{
#if DNXCORE50
var method = type.GetMethod(name, types);
return (method != null && method.IsPublic && !method.IsStatic) ? method : null;
#else
return type.GetMethod(name, BindingFlags.Instance | BindingFlags.Public, null, types, null);
#endif
}
}
} }
using System;
using System.Linq;
using System.Data.SqlClient;
using System.Threading.Tasks;
namespace Dapper.DNX.Tests
{
public class Program
{
public void Main()
{
Console.WriteLine("Version: {0}", Environment.Version);
const string connectionString = "Data Source=.;Initial Catalog=tempdb;Integrated Security=True";
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
var row = conn.Query<Foo>("select @a as X", new { a = 123 }).Single();
Console.WriteLine(row.X);
var methods = typeof(Dapper.SqlMapper).GetMethods().Where(x => x.Name == "QueryAsync").ToList();
row = conn.QueryAsync<Foo>("select @a as X", new { a = 123 }).Result.Single();
Console.WriteLine(row.X);
}
}
private static async Task<int> WithDelay(int i)
{
await Task.Delay(100);
return i;
}
class Foo
{
public int X { get; set; }
}
}
}
{ {
"version": "1.0.0-*", "version": "1.0.0-*",
"dependencies": { "dependencies": {
"Dapper": "1.41-*" "Dapper": "1.41-*"
},
"commands": {
"Dapper.DNX.Tests": "Dapper.DNX.Tests"
},
"compile": [ "../Tests/Tests.cs", "../Tests/Program.cs", "../Tests/Assert.cs" ],
"compilationOptions": { "define": [ "NOEXTERNALS" ] },
"frameworks": {
"net45": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"dependencies": {
"System.Threading.Thread": "4.0.0-beta-22816"
},
"frameworkAssemblies": {
"System.Data": "4.0.0.0",
"System.Xml": "4.0.0.0"
}
}, },
"commands": { "net40": {
"Dapper.DNX.Tests": "Dapper.DNX.Tests" "dependencies": {
},
"frameworkAssemblies": {
"System.Data": "4.0.0.0",
"System.Xml": "4.0.0.0"
}
}, },
"compilationOptions": {"define": ["ASYNC"]}, "dnx451": {
"frameworks": { "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"net45": { "frameworkAssemblies": {
"dependencies": { "System.Data": "4.0.0.0",
}, "System.Xml": "4.0.0.0"
"frameworkAssemblies": { }
"System.Data": "4.0.0.0"
}
},
//"net40": {
// "dependencies": {
// },
// "frameworkAssemblies": {
// "System.Data": "4.0.0.0"
// }
//},
"dnx451": {
"frameworkAssemblies": {
"System.Data": "4.0.0.0"
}
} },
//"dnxcore50" : { "dnxcore50": {
// "dependencies": { "compilationOptions": { "define": [ ], "warningsAsErrors": true },
// "System.Console": "4.0.0-beta-22716" "dependencies": {
// } "System.Console": "4.0.0-beta-*",
//} "System.Reflection": "4.0.10-beta-*",
"System.Linq": "4.0.0-beta-*",
"System.Data.Common": "4.0.0-beta-*",
"System.Data.SqlClient": "4.0.0-beta-*",
"System.Threading": "4.0.10-beta-*",
"System.Threading.Thread": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.0.0-beta-*"
//"System.Xml": "4.0.10-beta-*"
}
} }
}
} }
{ {
"locked": false, "locked": false,
"version": -9997, "version": -9998,
"targets": {
".NETFramework,Version=v4.5": {
"Dapper/1.41-alpha": {
"frameworkAssemblies": [
"System.Data",
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": [
"lib/net45/Dapper.dll"
],
"runtime": [
"lib/net45/Dapper.dll"
]
}
},
"DNX,Version=v4.5.1": {
"Dapper/1.41-alpha": {
"frameworkAssemblies": [
"System.Data",
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": [
"lib/dnx451/Dapper.dll"
],
"runtime": [
"lib/dnx451/Dapper.dll"
]
}
}
},
"libraries": {
"Dapper/1.41-alpha": {
"sha512": "dJPrw+E8nGHRydGRUddbjGUxQBR9w4d8ISLD8QM24FsRihEJjjlww+AFb77mK78qGFwkHAnpY2k8oZfpLR61gg==",
"files": [
"Dapper.1.41-alpha.nupkg",
"Dapper.1.41-alpha.nupkg.sha512",
"Dapper.nuspec",
"lib/dnx451/Dapper.dll",
"lib/dnx451/Dapper.xml",
"lib/net40/Dapper.dll",
"lib/net40/Dapper.xml",
"lib/net45/Dapper.dll",
"lib/net45/Dapper.xml"
]
}
},
"projectFileDependencyGroups": { "projectFileDependencyGroups": {
"": [ "": [
"Dapper >= 1.41-*" "Dapper >= 1.41-*"
], ],
".NETFramework,Version=v4.5": [ ".NETFramework,Version=v4.5": [
"framework/System.Data >= 4.0.0.0" "System.Threading.Thread >= 4.0.0-beta-22816",
"framework/System.Data >= 4.0.0.0",
"framework/System.Xml >= 4.0.0.0"
],
".NETFramework,Version=v4.0": [
"framework/System.Data >= 4.0.0.0",
"framework/System.Xml >= 4.0.0.0"
], ],
"DNX,Version=v4.5.1": [ "DNX,Version=v4.5.1": [
"framework/System.Data >= 4.0.0.0" "framework/System.Data >= 4.0.0.0",
"framework/System.Xml >= 4.0.0.0"
],
"DNXCore,Version=v5.0": [
"System.Console >= 4.0.0-beta-*",
"System.Reflection >= 4.0.10-beta-*",
"System.Linq >= 4.0.0-beta-*",
"System.Data.Common >= 4.0.0-beta-*",
"System.Data.SqlClient >= 4.0.0-beta-*",
"System.Threading >= 4.0.10-beta-*",
"System.Threading.Thread >= 4.0.0-beta-*",
"System.Reflection.TypeExtensions >= 4.0.0-beta-*"
] ]
},
"libraries": {
"Microsoft.CSharp/4.0.0-beta-22816": {
"serviceable": false,
"sha": "h+75iL9JfUbT0P8xOm9u0XSvk5+8GUD92VVwjbvJHqIcM23DVv2AjYVhVjTm6y923lNLn+qh/h4ViinL9RME2Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/Microsoft.CSharp.dll"
],
"compileAssemblies": [
"lib/contract/Microsoft.CSharp.dll"
]
}
},
"files": [
"License.rtf",
"Microsoft.CSharp.4.0.0-beta-22816.nupkg",
"Microsoft.CSharp.4.0.0-beta-22816.nupkg.sha512",
"Microsoft.CSharp.nuspec",
"lib/aspnetcore50/Microsoft.CSharp.dll",
"lib/contract/Microsoft.CSharp.dll",
"lib/net45/_._",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/Microsoft.CSharp.dll"
]
},
"System.Collections/4.0.10-beta-22816": {
"serviceable": false,
"sha": "pFwiLMtcsvAx8ZFsSIDVSuPAXXW2z1gkmE/YqiMELlxPVHKyJGrUZoJCIBfVg1HERxMnd1dyj7ffqj5Nx3mzGQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Collections.dll"
],
"compileAssemblies": [
"lib/contract/System.Collections.dll"
]
}
},
"files": [
"License.rtf",
"System.Collections.4.0.10-beta-22816.nupkg",
"System.Collections.4.0.10-beta-22816.nupkg.sha512",
"System.Collections.nuspec",
"lib/aspnetcore50/System.Collections.dll",
"lib/contract/System.Collections.dll",
"lib/net45/System.Collections.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Collections.dll"
]
},
"System.Collections.Concurrent/4.0.10-beta-22816": {
"serviceable": false,
"sha": "mI2+5S3DG07KCur+L4sHleKLzFQEnXo8h3t4gS0awNFzyar8nVKNb95OkiECI68PLy/FM3HfVAuqb12qPw3CXg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Collections.Concurrent.dll"
],
"compileAssemblies": [
"lib/contract/System.Collections.Concurrent.dll"
]
}
},
"files": [
"License.rtf",
"System.Collections.Concurrent.4.0.10-beta-22816.nupkg",
"System.Collections.Concurrent.4.0.10-beta-22816.nupkg.sha512",
"System.Collections.Concurrent.nuspec",
"lib/aspnetcore50/System.Collections.Concurrent.dll",
"lib/contract/System.Collections.Concurrent.dll",
"lib/net45/System.Collections.Concurrent.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Collections.Concurrent.dll"
]
},
"System.Console/4.0.0-beta-22816": {
"serviceable": false,
"sha": "Uq1C1DP7MYuE0qqIaI15k/k3r2IKX6A/suIboAkOCLYoiG4jhFfc0ECJVsiXWJEWf7o5xRA0cz+hi+awB5HugA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Console.dll"
],
"compileAssemblies": [
"lib/net45/System.Console.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Console.dll"
],
"compileAssemblies": [
"lib/net45/System.Console.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Console.dll"
],
"compileAssemblies": [
"lib/contract/System.Console.dll"
]
}
},
"files": [
"License.rtf",
"System.Console.4.0.0-beta-22816.nupkg",
"System.Console.4.0.0-beta-22816.nupkg.sha512",
"System.Console.nuspec",
"lib/aspnetcore50/System.Console.dll",
"lib/contract/System.Console.dll",
"lib/net45/System.Console.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Console.dll"
]
},
"System.Data.Common/4.0.0-beta-22816": {
"serviceable": false,
"sha": "7cRRCmUPaUbscio/n1MUgnY1IetH7fH19iuLrfahncpWkEkE6cZSMprkWYFp5CsWrky0OXAnbiW8ANsSGhfbFQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Data"
],
"runtimeAssemblies": [
"lib/net45/System.Data.Common.dll"
],
"compileAssemblies": [
"lib/net45/System.Data.Common.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Data"
],
"runtimeAssemblies": [
"lib/net45/System.Data.Common.dll"
],
"compileAssemblies": [
"lib/net45/System.Data.Common.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Data.Common.dll"
],
"compileAssemblies": [
"lib/contract/System.Data.Common.dll"
]
}
},
"files": [
"License.rtf",
"System.Data.Common.4.0.0-beta-22816.nupkg",
"System.Data.Common.4.0.0-beta-22816.nupkg.sha512",
"System.Data.Common.nuspec",
"lib/aspnetcore50/System.Data.Common.dll",
"lib/contract/System.Data.Common.dll",
"lib/net45/System.Data.Common.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Data.Common.dll"
]
},
"System.Data.SqlClient/4.0.0-beta-22816": {
"serviceable": false,
"sha": "HyCUhHjJ5iqsO9GtIqoulzPaJL7w9UeYMaazDhMbUQP1Yz2zalNQaFIV3ssFFEPmCVZwjeV+1zagDfoM0KahZQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Data.Common": "4.0.0-beta-22816",
"System.Globalization": "4.0.10-beta-22816",
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816",
"System.Xml.ReaderWriter": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Data"
],
"runtimeAssemblies": [
"lib/net45/System.Data.SqlClient.dll"
],
"compileAssemblies": [
"lib/net45/System.Data.SqlClient.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Data.Common": "4.0.0-beta-22816",
"System.Globalization": "4.0.10-beta-22816",
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816",
"System.Xml.ReaderWriter": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Data.Common": "4.0.0-beta-22816",
"System.Globalization": "4.0.10-beta-22816",
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816",
"System.Xml.ReaderWriter": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Data"
],
"runtimeAssemblies": [
"lib/net45/System.Data.SqlClient.dll"
],
"compileAssemblies": [
"lib/net45/System.Data.SqlClient.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Data.Common": "4.0.0-beta-22816",
"System.Globalization": "4.0.10-beta-22816",
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816",
"System.Xml.ReaderWriter": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Data.SqlClient.dll"
],
"compileAssemblies": [
"lib/contract/System.Data.SqlClient.dll"
]
}
},
"files": [
"License.rtf",
"System.Data.SqlClient.4.0.0-beta-22816.nupkg",
"System.Data.SqlClient.4.0.0-beta-22816.nupkg.sha512",
"System.Data.SqlClient.nuspec",
"lib/aspnetcore50/System.Data.SqlClient.dll",
"lib/contract/System.Data.SqlClient.dll",
"lib/net45/System.Data.SqlClient.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Data.SqlClient.dll",
"native/win7/x64/sni.dll",
"native/win7/x86/sni.dll"
]
},
"System.Dynamic.Runtime/4.0.10-beta-22816": {
"serviceable": false,
"sha": "xPMym5hsntfLf/Gisnvk3t25TaZRvwDF46PaszRlB63WsDbAIUXgrsE4ob8ZKTL7+uyGW1HGwOBVlJCP/J1/hA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Dynamic.Runtime.dll"
],
"compileAssemblies": [
"lib/contract/System.Dynamic.Runtime.dll"
]
}
},
"files": [
"License.rtf",
"System.Dynamic.Runtime.4.0.10-beta-22816.nupkg",
"System.Dynamic.Runtime.4.0.10-beta-22816.nupkg.sha512",
"System.Dynamic.Runtime.nuspec",
"lib/aspnetcore50/System.Dynamic.Runtime.dll",
"lib/contract/System.Dynamic.Runtime.dll",
"lib/net45/System.Dynamic.Runtime.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Dynamic.Runtime.dll"
]
},
"System.Globalization/4.0.10-beta-22816": {
"serviceable": false,
"sha": "Bedo0Nd7solBPW1k52EmlA+RKm+yxT2Os8fiu27DK2fyBa68pdFNM9ckjZ1X2DW0E9q49IxRMaWpflTBerMb8Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Globalization.dll"
],
"compileAssemblies": [
"lib/net45/System.Globalization.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Globalization.dll"
],
"compileAssemblies": [
"lib/net45/System.Globalization.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Globalization.dll"
],
"compileAssemblies": [
"lib/contract/System.Globalization.dll"
]
}
},
"files": [
"License.rtf",
"System.Globalization.4.0.10-beta-22816.nupkg",
"System.Globalization.4.0.10-beta-22816.nupkg.sha512",
"System.Globalization.nuspec",
"lib/aspnetcore50/System.Globalization.dll",
"lib/contract/System.Globalization.dll",
"lib/net45/System.Globalization.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Globalization.dll"
]
},
"System.IO/4.0.10-beta-22816": {
"serviceable": false,
"sha": "/wVhoi2uVXw5IZFU+JrPlyVgKrtMPtzQaYQ3DKUxH9nqiX64BChTFGNDcwZK3iNWTIWESxJhj9JR3lbqbG/PIg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.IO.dll"
],
"compileAssemblies": [
"lib/net45/System.IO.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.IO.dll"
],
"compileAssemblies": [
"lib/net45/System.IO.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.IO.dll"
],
"compileAssemblies": [
"lib/contract/System.IO.dll"
]
}
},
"files": [
"License.rtf",
"System.IO.4.0.10-beta-22816.nupkg",
"System.IO.4.0.10-beta-22816.nupkg.sha512",
"System.IO.nuspec",
"lib/aspnetcore50/System.IO.dll",
"lib/contract/System.IO.dll",
"lib/net45/System.IO.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.IO.dll"
]
},
"System.Linq/4.0.0-beta-22816": {
"serviceable": false,
"sha": "QlwRD8FTiYAZ7BxEjB5u9vjKaAHZ6KvuZYm+4tjYduTIWpFI3o34UjowJXCaPlLwc8USRshAXLgnsQ3iaOjv8Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Linq.dll"
],
"compileAssemblies": [
"lib/contract/System.Linq.dll"
]
}
},
"files": [
"License.rtf",
"System.Linq.4.0.0-beta-22816.nupkg",
"System.Linq.4.0.0-beta-22816.nupkg.sha512",
"System.Linq.nuspec",
"lib/aspnetcore50/System.Linq.dll",
"lib/contract/System.Linq.dll",
"lib/net45/System.Linq.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Linq.dll"
]
},
"System.Linq.Expressions/4.0.10-beta-22816": {
"serviceable": false,
"sha": "qTu/alZVoEBZRIrbLzVlFSndQyhIEXY+qoBockbsUu98TDtd1N9gYiyg7FHeW7Qx1vDGfz1PWfUlYBd4G/ZHkg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Linq.Expressions.dll"
],
"compileAssemblies": [
"lib/contract/System.Linq.Expressions.dll"
]
}
},
"files": [
"License.rtf",
"System.Linq.Expressions.4.0.10-beta-22816.nupkg",
"System.Linq.Expressions.4.0.10-beta-22816.nupkg.sha512",
"System.Linq.Expressions.nuspec",
"lib/aspnetcore50/System.Linq.Expressions.dll",
"lib/contract/System.Linq.Expressions.dll",
"lib/net45/System.Linq.Expressions.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Linq.Expressions.dll"
]
},
"System.ObjectModel/4.0.10-beta-22816": {
"serviceable": false,
"sha": "Rtu5FLq7JTtignXiSEKx26Q01NHyoO3pTcYYdwF54kFC64VbHEcvs8b586JyVVpM7Wz0zBmdgHDrH9fv2MgeVw==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.ObjectModel.dll"
],
"compileAssemblies": [
"lib/net45/System.ObjectModel.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.ObjectModel.dll"
],
"compileAssemblies": [
"lib/net45/System.ObjectModel.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.ObjectModel.dll"
],
"compileAssemblies": [
"lib/contract/System.ObjectModel.dll"
]
}
},
"files": [
"License.rtf",
"System.ObjectModel.4.0.10-beta-22816.nupkg",
"System.ObjectModel.4.0.10-beta-22816.nupkg.sha512",
"System.ObjectModel.nuspec",
"lib/aspnetcore50/System.ObjectModel.dll",
"lib/contract/System.ObjectModel.dll",
"lib/net45/System.ObjectModel.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.ObjectModel.dll"
]
},
"System.Reflection/4.0.10-beta-22816": {
"serviceable": false,
"sha": "vdH/6euCyI/0el+6baAh/pttTZyWDh/PfL2TebSri3+FvNkjIEcE4httMn7J/5Lqz+NMDcLP7wOlY4Aa5EazNg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.4.0.10-beta-22816.nupkg",
"System.Reflection.4.0.10-beta-22816.nupkg.sha512",
"System.Reflection.nuspec",
"lib/aspnetcore50/System.Reflection.dll",
"lib/contract/System.Reflection.dll",
"lib/net45/System.Reflection.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.dll"
]
},
"System.Reflection.Emit/4.0.0-beta-22816": {
"serviceable": false,
"sha": "vokOs6tgY2cnTcpPSs/fVcY8bybU7nwQ3I9H3JVLpF7t/fN2MaiSEvwTxEHmiCgDQbH5D7mMpCVxu97Fj5zyzA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Emit.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Emit.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Emit.4.0.0-beta-22816.nupkg",
"System.Reflection.Emit.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Emit.nuspec",
"lib/aspnetcore50/System.Reflection.Emit.dll",
"lib/contract/System.Reflection.Emit.dll",
"lib/net45/System.Reflection.Emit.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Emit.dll"
]
},
"System.Reflection.Emit.ILGeneration/4.0.0-beta-22816": {
"serviceable": false,
"sha": "dMGaIL8QdIrp4aK5JkEFiUWdGixJtXDaIViszk0VZDzg1yL07+5DIJpbn3u77PQG2kqjG+kk3pyWFB3vLttVMQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Emit.ILGeneration.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Emit.ILGeneration.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Emit.ILGeneration.4.0.0-beta-22816.nupkg",
"System.Reflection.Emit.ILGeneration.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Emit.ILGeneration.nuspec",
"lib/aspnetcore50/System.Reflection.Emit.ILGeneration.dll",
"lib/contract/System.Reflection.Emit.ILGeneration.dll",
"lib/net45/System.Reflection.Emit.ILGeneration.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Emit.ILGeneration.dll"
]
},
"System.Reflection.Emit.Lightweight/4.0.0-beta-22816": {
"serviceable": false,
"sha": "86ALfAR2qltFbss1KFm8e74JEM/Pmi1RaDfN+sB4E8wwqof7keUVI3HjA81fW3+YOH+HePYzw7m9bF4kd21OBw==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Emit.Lightweight.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Emit.Lightweight.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Emit.Lightweight.4.0.0-beta-22816.nupkg",
"System.Reflection.Emit.Lightweight.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Emit.Lightweight.nuspec",
"lib/aspnetcore50/System.Reflection.Emit.Lightweight.dll",
"lib/contract/System.Reflection.Emit.Lightweight.dll",
"lib/net45/System.Reflection.Emit.Lightweight.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Emit.Lightweight.dll"
]
},
"System.Reflection.Primitives/4.0.0-beta-22816": {
"serviceable": false,
"sha": "LXGxjPbmTit9COY1WKRG89Eya58UFVqebeNvGDCrX/c/72OP9XX00+wUUE34WFDioKeVBjofOySFdtKMVsDq1Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Primitives.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Primitives.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Primitives.4.0.0-beta-22816.nupkg",
"System.Reflection.Primitives.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Primitives.nuspec",
"lib/aspnetcore50/System.Reflection.Primitives.dll",
"lib/contract/System.Reflection.Primitives.dll",
"lib/net45/System.Reflection.Primitives.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Primitives.dll"
]
},
"System.Reflection.TypeExtensions/4.0.0-beta-22816": {
"serviceable": false,
"sha": "VNe9Gt6E7jYfHWghPlX90EOkCL+q+7TAJHx4U7mJZMsxQmp/QrgEIcKCbG502/X/RUL4dqZkL/uG9QfOhDw/tg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.TypeExtensions.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.TypeExtensions.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.TypeExtensions.4.0.0-beta-22816.nupkg",
"System.Reflection.TypeExtensions.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.TypeExtensions.nuspec",
"lib/aspnetcore50/System.Reflection.TypeExtensions.dll",
"lib/contract/System.Reflection.TypeExtensions.dll",
"lib/net45/_._",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.TypeExtensions.dll"
]
},
"System.Runtime/4.0.20-beta-22816": {
"serviceable": false,
"sha": "sDSJEmM6Q5O7Nn9XxHTrsEJ4bv4hsBdeTWjuvyzd9/u9ujl9AWa3q1XFLrdPZetILPOC1P0+1LOCq4kZcsKF5Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.ComponentModel.Composition",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.ComponentModel.Composition",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Runtime.dll"
],
"compileAssemblies": [
"lib/contract/System.Runtime.dll"
]
}
},
"files": [
"License.rtf",
"System.Runtime.4.0.20-beta-22816.nupkg",
"System.Runtime.4.0.20-beta-22816.nupkg.sha512",
"System.Runtime.nuspec",
"lib/aspnetcore50/System.Runtime.dll",
"lib/contract/System.Runtime.dll",
"lib/net45/System.Runtime.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Runtime.dll"
]
},
"System.Runtime.Extensions/4.0.10-beta-22816": {
"serviceable": false,
"sha": "b8ymkNB0apTc/FCmyeB/Js1CMg8EBaOlM2biIKA94Dk0sT/yyGd8SyCeuZXiCGCIk6HpSiIsIdX53rXgTWxH0w==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Runtime.Extensions.dll"
],
"compileAssemblies": [
"lib/contract/System.Runtime.Extensions.dll"
]
}
},
"files": [
"License.rtf",
"System.Runtime.Extensions.4.0.10-beta-22816.nupkg",
"System.Runtime.Extensions.4.0.10-beta-22816.nupkg.sha512",
"System.Runtime.Extensions.nuspec",
"lib/aspnetcore50/System.Runtime.Extensions.dll",
"lib/contract/System.Runtime.Extensions.dll",
"lib/net45/System.Runtime.Extensions.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Runtime.Extensions.dll"
]
},
"System.Text.Encoding/4.0.10-beta-22816": {
"serviceable": false,
"sha": "QDKTAvat7aDGMWnVkGm6tJvvmc2zSTa/p8M4/OEBBkZKNx4SGkeGEjFUhl7b6AXZ220m4dACygkiAVoB/LqMHw==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Text.Encoding.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.Encoding.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Text.Encoding.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.Encoding.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Text.Encoding.dll"
],
"compileAssemblies": [
"lib/contract/System.Text.Encoding.dll"
]
}
},
"files": [
"License.rtf",
"System.Text.Encoding.4.0.10-beta-22816.nupkg",
"System.Text.Encoding.4.0.10-beta-22816.nupkg.sha512",
"System.Text.Encoding.nuspec",
"lib/aspnetcore50/System.Text.Encoding.dll",
"lib/contract/System.Text.Encoding.dll",
"lib/net45/System.Text.Encoding.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Text.Encoding.dll"
]
},
"System.Text.Encoding.CodePages/4.0.0-beta-22816": {
"serviceable": false,
"sha": "q52eEfAgtMfsNDbTetTX1EN337+2IyJTJH/DrRnFsdzfoyblYY/511USLsg4qmLriLS0kryXUZG3DzQsOfzt8Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Text.Encoding.CodePages.dll"
],
"compileAssemblies": [
"lib/contract/System.Text.Encoding.CodePages.dll"
]
}
},
"files": [
"License.rtf",
"System.Text.Encoding.CodePages.4.0.0-beta-22816.nupkg",
"System.Text.Encoding.CodePages.4.0.0-beta-22816.nupkg.sha512",
"System.Text.Encoding.CodePages.nuspec",
"lib/aspnetcore50/System.Text.Encoding.CodePages.dll",
"lib/contract/System.Text.Encoding.CodePages.dll",
"lib/net45/_._",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Text.Encoding.CodePages.dll"
]
},
"System.Text.RegularExpressions/4.0.10-beta-22816": {
"serviceable": false,
"sha": "f6reT2KQ1IjeAKeZEX5TSIFugrsmofjD3N+9HD4c2WAMFlEs4p4/ycsmS1bLlV7n+JRHsmUkhgpCVWMZYPk+aA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Text.RegularExpressions.dll"
],
"compileAssemblies": [
"lib/contract/System.Text.RegularExpressions.dll"
]
}
},
"files": [
"License.rtf",
"System.Text.RegularExpressions.4.0.10-beta-22816.nupkg",
"System.Text.RegularExpressions.4.0.10-beta-22816.nupkg.sha512",
"System.Text.RegularExpressions.nuspec",
"lib/aspnetcore50/System.Text.RegularExpressions.dll",
"lib/contract/System.Text.RegularExpressions.dll",
"lib/net45/System.Text.RegularExpressions.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Text.RegularExpressions.dll"
]
},
"System.Threading/4.0.10-beta-22816": {
"serviceable": false,
"sha": "GO4X3FuGlw4DJH+UbbKDXKnyyWiwlPJIX+Ys0UCzSdAPneBA42dPb2+kRakWy+wo6n6Gcv7ckkfa3j8MSSxbhg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Threading.dll"
],
"compileAssemblies": [
"lib/contract/System.Threading.dll"
]
}
},
"files": [
"License.rtf",
"System.Threading.4.0.10-beta-22816.nupkg",
"System.Threading.4.0.10-beta-22816.nupkg.sha512",
"System.Threading.nuspec",
"lib/aspnetcore50/System.Threading.dll",
"lib/contract/System.Threading.dll",
"lib/net45/System.Threading.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.dll"
]
},
"System.Threading.Tasks/4.0.10-beta-22816": {
"serviceable": false,
"sha": "e7TcoQuIPQ4bvkkCY2ulU8NFvj8XqYxsGpD3fAq1KajAlpx5j327Q13lKxlGPb7ouHQydKHCy5G1ZGuydb0DAA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Threading.Tasks.dll"
],
"compileAssemblies": [
"lib/contract/System.Threading.Tasks.dll"
]
}
},
"files": [
"License.rtf",
"System.Threading.Tasks.4.0.10-beta-22816.nupkg",
"System.Threading.Tasks.4.0.10-beta-22816.nupkg.sha512",
"System.Threading.Tasks.nuspec",
"lib/aspnetcore50/System.Threading.Tasks.dll",
"lib/contract/System.Threading.Tasks.dll",
"lib/net45/System.Threading.Tasks.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.Tasks.dll"
]
},
"System.Threading.Thread/4.0.0-beta-22816": {
"serviceable": false,
"sha": "hq1pNoES0jEKslftDhBeJnRUBSjEepiya+39oH/7yCvOp4xMnXHlWe9G7ZS/dg2n4k+3VY21AUifisybcFjcCQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.Thread.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.Thread.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.Thread.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.Thread.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Threading.Thread.dll"
],
"compileAssemblies": [
"lib/contract/System.Threading.Thread.dll"
]
}
},
"files": [
"License.rtf",
"System.Threading.Thread.4.0.0-beta-22816.nupkg",
"System.Threading.Thread.4.0.0-beta-22816.nupkg.sha512",
"System.Threading.Thread.nuspec",
"lib/aspnetcore50/System.Threading.Thread.dll",
"lib/contract/System.Threading.Thread.dll",
"lib/net45/System.Threading.Thread.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.Thread.dll"
]
},
"System.Xml.ReaderWriter/4.0.10-beta-22816": {
"serviceable": false,
"sha": "G0aLPtC/phTfiJPwe0VA3tB3x8YFQ1dHFuE1xaHNr9eQm/AfBp4Pk+fn3s7ABJDus/T89EtIHQ9C+O6VmqXIQQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Xml"
],
"runtimeAssemblies": [
"lib/net45/System.Xml.ReaderWriter.dll"
],
"compileAssemblies": [
"lib/net45/System.Xml.ReaderWriter.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Xml"
],
"runtimeAssemblies": [
"lib/net45/System.Xml.ReaderWriter.dll"
],
"compileAssemblies": [
"lib/net45/System.Xml.ReaderWriter.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Xml.ReaderWriter.dll"
],
"compileAssemblies": [
"lib/contract/System.Xml.ReaderWriter.dll"
]
}
},
"files": [
"License.rtf",
"System.Xml.ReaderWriter.4.0.10-beta-22816.nupkg",
"System.Xml.ReaderWriter.4.0.10-beta-22816.nupkg.sha512",
"System.Xml.ReaderWriter.nuspec",
"lib/aspnetcore50/System.Xml.ReaderWriter.dll",
"lib/contract/System.Xml.ReaderWriter.dll",
"lib/net45/System.Xml.ReaderWriter.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Xml.ReaderWriter.dll"
]
}
} }
} }
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14 # Visual Studio 14
VisualStudioVersion = 14.0.22728.1 VisualStudioVersion = 14.0.22823.1
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper", "Dapper\Dapper.xproj", "{088D8CC4-E71E-44B6-9B87-4060B043983D}" Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper", "Dapper\Dapper.xproj", "{088D8CC4-E71E-44B6-9B87-4060B043983D}"
EndProject EndProject
...@@ -9,8 +9,11 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.DNX.Tests", "Dapper. ...@@ -9,8 +9,11 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Dapper.DNX.Tests", "Dapper.
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{03340C6E-4176-4C42-9C76-D5DFC79D1A22}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{03340C6E-4176-4C42-9C76-D5DFC79D1A22}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
Tests\Assert.cs = Tests\Assert.cs
Tests\Program.cs = Tests\Program.cs
Dapper NET40\SqlMapper.cs = Dapper NET40\SqlMapper.cs Dapper NET40\SqlMapper.cs = Dapper NET40\SqlMapper.cs
Dapper NET45\SqlMapperAsync.cs = Dapper NET45\SqlMapperAsync.cs Dapper NET45\SqlMapperAsync.cs = Dapper NET45\SqlMapperAsync.cs
Tests\Tests.cs = Tests\Tests.cs
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
......
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<AssemblyName>Dapper</AssemblyName> <AssemblyName>Dapper</AssemblyName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<AssemblyName>Dapper</AssemblyName>
</PropertyGroup>
<PropertyGroup> <PropertyGroup>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
</PropertyGroup> </PropertyGroup>
......
{ {
"authors": [ "Sam Saffron", "Marc Gravell" ], "authors": [ "Sam Saffron", "Marc Gravell" ],
"owners": [ "Sam Saffron", "Marc Gravell" ],
"projectUrl": "https://github.com/StackExchange/dapper-dot-net",
"licenseUrl": "http://www.apache.org/licenses/LICENSE-2.0",
"summary": "A high performance Micro-ORM",
"description": "A high performance Micro-ORM supporting Sql Server, MySQL, Sqlite, SqlCE, Firebird etc..", "description": "A high performance Micro-ORM supporting Sql Server, MySQL, Sqlite, SqlCE, Firebird etc..",
"version": "1.41-alpha", "version": "1.41-beta3",
"compile": [ "../Dapper NET40/*.cs", "../Dapper NET45/*.cs" ], "compile": [ "../Dapper NET40/*.cs", "../Dapper NET45/*.cs" ],
"title": "Dapper dot net",
"tags": [ "orm", "sql", "micro-orm" ],
"frameworks": { "frameworks": {
"net45": { "net45": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"dependencies": { "dependencies": {
"System.Runtime": "4.0.20-beta-22816"
}, },
"frameworkAssemblies": { "frameworkAssemblies": {
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0"
...@@ -20,6 +27,14 @@ ...@@ -20,6 +27,14 @@
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0"
} }
}, },
//"net35": {
// "compilationOptions": { "warningsAsErrors": true, "languageVersion": "csharp3", "define": ["CSHARP30"] },
// "dependencies": {
// },
// "frameworkAssemblies": {
// "System.Data": "4.0.0.0"
// }
//},
"dnx451": { "dnx451": {
"compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true }, "compilationOptions": { "define": [ "ASYNC" ], "warningsAsErrors": true },
"dependencies": { "dependencies": {
...@@ -28,15 +43,25 @@ ...@@ -28,15 +43,25 @@
"System.Data": "4.0.0.0" "System.Data": "4.0.0.0"
} }
}, },
//"dnxcore50": { "dnxcore50": {
// "dependencies": { "compilationOptions": { "define": [ ], "warningsAsErrors": true },
// "System.Runtime": "4.0.20-beta-22716", "dependencies": {
// "System.Data.Common": "4.0.0-beta-*", "System.Text.RegularExpressions": "4.0.10-beta-*",
// }, "System.Collections": "4.0.10-beta-*",
// "frameworkAssemblies": { "System.Collections.Concurrent": "4.0.10-beta-*",
"System.Linq": "4.0.0-beta-*",
// // "System.Threading": "4.0.10-beta-*",
// } "Microsoft.CSharp": "4.0.0-beta-*",
//} "System.Reflection": "4.0.10-beta-*",
"System.Reflection.Emit": "4.0.0-beta-*",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-*",
"System.Reflection.Emit.Lightweight": "4.0.0-beta-*",
"System.Reflection.TypeExtensions": "4.0.0-beta-*",
"System.Data.Common": "4.0.0-beta-*",
"System.Runtime.Extensions": "4.0.10-beta-*",
"System.Text.Encoding.CodePages": "4.0.0-beta-*",
"System.Globalization": "4.0.10-beta-*"
}
}
} }
} }
{ {
"locked": false, "locked": false,
"version": -9997, "version": -9998,
"targets": {
".NETFramework,Version=v4.5": {
"Dapper/1.41-alpha": {
"frameworkAssemblies": [
"System.Data",
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": [
"lib/net45/Dapper.dll"
],
"runtime": [
"lib/net45/Dapper.dll"
]
}
},
".NETFramework,Version=v4.0": {
"Dapper/1.41-alpha": {
"frameworkAssemblies": [
"System.Data",
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": [
"lib/net40/Dapper.dll"
],
"runtime": [
"lib/net40/Dapper.dll"
]
}
},
"DNX,Version=v4.5.1": {
"Dapper/1.41-alpha": {
"frameworkAssemblies": [
"System.Data",
"mscorlib",
"System",
"System.Core",
"Microsoft.CSharp"
],
"compile": [
"lib/dnx451/Dapper.dll"
],
"runtime": [
"lib/dnx451/Dapper.dll"
]
}
}
},
"libraries": {
"Dapper/1.41-alpha": {
"sha512": "dJPrw+E8nGHRydGRUddbjGUxQBR9w4d8ISLD8QM24FsRihEJjjlww+AFb77mK78qGFwkHAnpY2k8oZfpLR61gg==",
"files": [
"Dapper.1.41-alpha.nupkg",
"Dapper.1.41-alpha.nupkg.sha512",
"Dapper.nuspec",
"lib/dnx451/Dapper.dll",
"lib/dnx451/Dapper.xml",
"lib/net40/Dapper.dll",
"lib/net40/Dapper.xml",
"lib/net45/Dapper.dll",
"lib/net45/Dapper.xml"
]
}
},
"projectFileDependencyGroups": { "projectFileDependencyGroups": {
"": [], "": [],
".NETFramework,Version=v4.5": [ ".NETFramework,Version=v4.5": [
"System.Runtime >= 4.0.20-beta-22816",
"framework/System.Data >= 4.0.0.0" "framework/System.Data >= 4.0.0.0"
], ],
".NETFramework,Version=v4.0": [ ".NETFramework,Version=v4.0": [
...@@ -80,6 +12,1591 @@ ...@@ -80,6 +12,1591 @@
], ],
"DNX,Version=v4.5.1": [ "DNX,Version=v4.5.1": [
"framework/System.Data >= 4.0.0.0" "framework/System.Data >= 4.0.0.0"
],
"DNXCore,Version=v5.0": [
"System.Text.RegularExpressions >= 4.0.10-beta-*",
"System.Collections >= 4.0.10-beta-*",
"System.Collections.Concurrent >= 4.0.10-beta-*",
"System.Linq >= 4.0.0-beta-*",
"System.Threading >= 4.0.10-beta-*",
"Microsoft.CSharp >= 4.0.0-beta-*",
"System.Reflection >= 4.0.10-beta-*",
"System.Reflection.Emit >= 4.0.0-beta-*",
"System.Reflection.Emit.ILGeneration >= 4.0.0-beta-*",
"System.Reflection.Emit.Lightweight >= 4.0.0-beta-*",
"System.Reflection.TypeExtensions >= 4.0.0-beta-*",
"System.Data.Common >= 4.0.0-beta-*",
"System.Runtime.Extensions >= 4.0.10-beta-*",
"System.Text.Encoding.CodePages >= 4.0.0-beta-*",
"System.Globalization >= 4.0.10-beta-*"
] ]
},
"libraries": {
"Microsoft.CSharp/4.0.0-beta-22816": {
"serviceable": false,
"sha": "h+75iL9JfUbT0P8xOm9u0XSvk5+8GUD92VVwjbvJHqIcM23DVv2AjYVhVjTm6y923lNLn+qh/h4ViinL9RME2Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Dynamic.Runtime": "4.0.10-beta-22816",
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/Microsoft.CSharp.dll"
],
"compileAssemblies": [
"lib/contract/Microsoft.CSharp.dll"
]
}
},
"files": [
"License.rtf",
"Microsoft.CSharp.4.0.0-beta-22816.nupkg",
"Microsoft.CSharp.4.0.0-beta-22816.nupkg.sha512",
"Microsoft.CSharp.nuspec",
"lib/aspnetcore50/Microsoft.CSharp.dll",
"lib/contract/Microsoft.CSharp.dll",
"lib/net45/_._",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/Microsoft.CSharp.dll"
]
},
"System.Collections/4.0.10-beta-22816": {
"serviceable": false,
"sha": "pFwiLMtcsvAx8ZFsSIDVSuPAXXW2z1gkmE/YqiMELlxPVHKyJGrUZoJCIBfVg1HERxMnd1dyj7ffqj5Nx3mzGQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Collections.dll"
],
"compileAssemblies": [
"lib/contract/System.Collections.dll"
]
}
},
"files": [
"License.rtf",
"System.Collections.4.0.10-beta-22816.nupkg",
"System.Collections.4.0.10-beta-22816.nupkg.sha512",
"System.Collections.nuspec",
"lib/aspnetcore50/System.Collections.dll",
"lib/contract/System.Collections.dll",
"lib/net45/System.Collections.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Collections.dll"
]
},
"System.Collections.Concurrent/4.0.10-beta-22816": {
"serviceable": false,
"sha": "mI2+5S3DG07KCur+L4sHleKLzFQEnXo8h3t4gS0awNFzyar8nVKNb95OkiECI68PLy/FM3HfVAuqb12qPw3CXg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
],
"compileAssemblies": [
"lib/net45/System.Collections.Concurrent.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Collections.Concurrent.dll"
],
"compileAssemblies": [
"lib/contract/System.Collections.Concurrent.dll"
]
}
},
"files": [
"License.rtf",
"System.Collections.Concurrent.4.0.10-beta-22816.nupkg",
"System.Collections.Concurrent.4.0.10-beta-22816.nupkg.sha512",
"System.Collections.Concurrent.nuspec",
"lib/aspnetcore50/System.Collections.Concurrent.dll",
"lib/contract/System.Collections.Concurrent.dll",
"lib/net45/System.Collections.Concurrent.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Collections.Concurrent.dll"
]
},
"System.Data.Common/4.0.0-beta-22816": {
"serviceable": false,
"sha": "7cRRCmUPaUbscio/n1MUgnY1IetH7fH19iuLrfahncpWkEkE6cZSMprkWYFp5CsWrky0OXAnbiW8ANsSGhfbFQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Data"
],
"runtimeAssemblies": [
"lib/net45/System.Data.Common.dll"
],
"compileAssemblies": [
"lib/net45/System.Data.Common.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Data"
],
"runtimeAssemblies": [
"lib/net45/System.Data.Common.dll"
],
"compileAssemblies": [
"lib/net45/System.Data.Common.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Data.Common.dll"
],
"compileAssemblies": [
"lib/contract/System.Data.Common.dll"
]
}
},
"files": [
"License.rtf",
"System.Data.Common.4.0.0-beta-22816.nupkg",
"System.Data.Common.4.0.0-beta-22816.nupkg.sha512",
"System.Data.Common.nuspec",
"lib/aspnetcore50/System.Data.Common.dll",
"lib/contract/System.Data.Common.dll",
"lib/net45/System.Data.Common.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Data.Common.dll"
]
},
"System.Dynamic.Runtime/4.0.10-beta-22816": {
"serviceable": false,
"sha": "xPMym5hsntfLf/Gisnvk3t25TaZRvwDF46PaszRlB63WsDbAIUXgrsE4ob8ZKTL7+uyGW1HGwOBVlJCP/J1/hA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Dynamic.Runtime.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Linq.Expressions": "4.0.10-beta-22816",
"System.ObjectModel": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Dynamic.Runtime.dll"
],
"compileAssemblies": [
"lib/contract/System.Dynamic.Runtime.dll"
]
}
},
"files": [
"License.rtf",
"System.Dynamic.Runtime.4.0.10-beta-22816.nupkg",
"System.Dynamic.Runtime.4.0.10-beta-22816.nupkg.sha512",
"System.Dynamic.Runtime.nuspec",
"lib/aspnetcore50/System.Dynamic.Runtime.dll",
"lib/contract/System.Dynamic.Runtime.dll",
"lib/net45/System.Dynamic.Runtime.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Dynamic.Runtime.dll"
]
},
"System.Globalization/4.0.10-beta-22816": {
"serviceable": false,
"sha": "Bedo0Nd7solBPW1k52EmlA+RKm+yxT2Os8fiu27DK2fyBa68pdFNM9ckjZ1X2DW0E9q49IxRMaWpflTBerMb8Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Globalization.dll"
],
"compileAssemblies": [
"lib/net45/System.Globalization.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Globalization.dll"
],
"compileAssemblies": [
"lib/net45/System.Globalization.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Globalization.dll"
],
"compileAssemblies": [
"lib/contract/System.Globalization.dll"
]
}
},
"files": [
"License.rtf",
"System.Globalization.4.0.10-beta-22816.nupkg",
"System.Globalization.4.0.10-beta-22816.nupkg.sha512",
"System.Globalization.nuspec",
"lib/aspnetcore50/System.Globalization.dll",
"lib/contract/System.Globalization.dll",
"lib/net45/System.Globalization.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Globalization.dll"
]
},
"System.IO/4.0.10-beta-22816": {
"serviceable": false,
"sha": "/wVhoi2uVXw5IZFU+JrPlyVgKrtMPtzQaYQ3DKUxH9nqiX64BChTFGNDcwZK3iNWTIWESxJhj9JR3lbqbG/PIg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.IO.dll"
],
"compileAssemblies": [
"lib/net45/System.IO.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.IO.dll"
],
"compileAssemblies": [
"lib/net45/System.IO.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.IO.dll"
],
"compileAssemblies": [
"lib/contract/System.IO.dll"
]
}
},
"files": [
"License.rtf",
"System.IO.4.0.10-beta-22816.nupkg",
"System.IO.4.0.10-beta-22816.nupkg.sha512",
"System.IO.nuspec",
"lib/aspnetcore50/System.IO.dll",
"lib/contract/System.IO.dll",
"lib/net45/System.IO.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.IO.dll"
]
},
"System.Linq/4.0.0-beta-22816": {
"serviceable": false,
"sha": "QlwRD8FTiYAZ7BxEjB5u9vjKaAHZ6KvuZYm+4tjYduTIWpFI3o34UjowJXCaPlLwc8USRshAXLgnsQ3iaOjv8Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Collections": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Linq.dll"
],
"compileAssemblies": [
"lib/contract/System.Linq.dll"
]
}
},
"files": [
"License.rtf",
"System.Linq.4.0.0-beta-22816.nupkg",
"System.Linq.4.0.0-beta-22816.nupkg.sha512",
"System.Linq.nuspec",
"lib/aspnetcore50/System.Linq.dll",
"lib/contract/System.Linq.dll",
"lib/net45/System.Linq.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Linq.dll"
]
},
"System.Linq.Expressions/4.0.10-beta-22816": {
"serviceable": false,
"sha": "qTu/alZVoEBZRIrbLzVlFSndQyhIEXY+qoBockbsUu98TDtd1N9gYiyg7FHeW7Qx1vDGfz1PWfUlYBd4G/ZHkg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Linq.Expressions.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Linq.Expressions.dll"
],
"compileAssemblies": [
"lib/contract/System.Linq.Expressions.dll"
]
}
},
"files": [
"License.rtf",
"System.Linq.Expressions.4.0.10-beta-22816.nupkg",
"System.Linq.Expressions.4.0.10-beta-22816.nupkg.sha512",
"System.Linq.Expressions.nuspec",
"lib/aspnetcore50/System.Linq.Expressions.dll",
"lib/contract/System.Linq.Expressions.dll",
"lib/net45/System.Linq.Expressions.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Linq.Expressions.dll"
]
},
"System.ObjectModel/4.0.10-beta-22816": {
"serviceable": false,
"sha": "Rtu5FLq7JTtignXiSEKx26Q01NHyoO3pTcYYdwF54kFC64VbHEcvs8b586JyVVpM7Wz0zBmdgHDrH9fv2MgeVw==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.ObjectModel.dll"
],
"compileAssemblies": [
"lib/net45/System.ObjectModel.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.ObjectModel.dll"
],
"compileAssemblies": [
"lib/net45/System.ObjectModel.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.ObjectModel.dll"
],
"compileAssemblies": [
"lib/contract/System.ObjectModel.dll"
]
}
},
"files": [
"License.rtf",
"System.ObjectModel.4.0.10-beta-22816.nupkg",
"System.ObjectModel.4.0.10-beta-22816.nupkg.sha512",
"System.ObjectModel.nuspec",
"lib/aspnetcore50/System.ObjectModel.dll",
"lib/contract/System.ObjectModel.dll",
"lib/net45/System.ObjectModel.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.ObjectModel.dll"
]
},
"System.Reflection/4.0.10-beta-22816": {
"serviceable": false,
"sha": "vdH/6euCyI/0el+6baAh/pttTZyWDh/PfL2TebSri3+FvNkjIEcE4httMn7J/5Lqz+NMDcLP7wOlY4Aa5EazNg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.4.0.10-beta-22816.nupkg",
"System.Reflection.4.0.10-beta-22816.nupkg.sha512",
"System.Reflection.nuspec",
"lib/aspnetcore50/System.Reflection.dll",
"lib/contract/System.Reflection.dll",
"lib/net45/System.Reflection.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.dll"
]
},
"System.Reflection.Emit/4.0.0-beta-22816": {
"serviceable": false,
"sha": "vokOs6tgY2cnTcpPSs/fVcY8bybU7nwQ3I9H3JVLpF7t/fN2MaiSEvwTxEHmiCgDQbH5D7mMpCVxu97Fj5zyzA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.IO": "4.0.10-beta-22816",
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Emit.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Emit.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Emit.4.0.0-beta-22816.nupkg",
"System.Reflection.Emit.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Emit.nuspec",
"lib/aspnetcore50/System.Reflection.Emit.dll",
"lib/contract/System.Reflection.Emit.dll",
"lib/net45/System.Reflection.Emit.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Emit.dll"
]
},
"System.Reflection.Emit.ILGeneration/4.0.0-beta-22816": {
"serviceable": false,
"sha": "dMGaIL8QdIrp4aK5JkEFiUWdGixJtXDaIViszk0VZDzg1yL07+5DIJpbn3u77PQG2kqjG+kk3pyWFB3vLttVMQ==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.ILGeneration.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Emit.ILGeneration.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Emit.ILGeneration.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Emit.ILGeneration.4.0.0-beta-22816.nupkg",
"System.Reflection.Emit.ILGeneration.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Emit.ILGeneration.nuspec",
"lib/aspnetcore50/System.Reflection.Emit.ILGeneration.dll",
"lib/contract/System.Reflection.Emit.ILGeneration.dll",
"lib/net45/System.Reflection.Emit.ILGeneration.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Emit.ILGeneration.dll"
]
},
"System.Reflection.Emit.Lightweight/4.0.0-beta-22816": {
"serviceable": false,
"sha": "86ALfAR2qltFbss1KFm8e74JEM/Pmi1RaDfN+sB4E8wwqof7keUVI3HjA81fW3+YOH+HePYzw7m9bF4kd21OBw==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Emit.Lightweight.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Reflection.Emit.ILGeneration": "4.0.0-beta-22816",
"System.Reflection.Primitives": "4.0.0-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Emit.Lightweight.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Emit.Lightweight.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Emit.Lightweight.4.0.0-beta-22816.nupkg",
"System.Reflection.Emit.Lightweight.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Emit.Lightweight.nuspec",
"lib/aspnetcore50/System.Reflection.Emit.Lightweight.dll",
"lib/contract/System.Reflection.Emit.Lightweight.dll",
"lib/net45/System.Reflection.Emit.Lightweight.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Emit.Lightweight.dll"
]
},
"System.Reflection.Primitives/4.0.0-beta-22816": {
"serviceable": false,
"sha": "LXGxjPbmTit9COY1WKRG89Eya58UFVqebeNvGDCrX/c/72OP9XX00+wUUE34WFDioKeVBjofOySFdtKMVsDq1Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
],
"compileAssemblies": [
"lib/net45/System.Reflection.Primitives.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.Primitives.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.Primitives.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.Primitives.4.0.0-beta-22816.nupkg",
"System.Reflection.Primitives.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.Primitives.nuspec",
"lib/aspnetcore50/System.Reflection.Primitives.dll",
"lib/contract/System.Reflection.Primitives.dll",
"lib/net45/System.Reflection.Primitives.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.Primitives.dll"
]
},
"System.Reflection.TypeExtensions/4.0.0-beta-22816": {
"serviceable": false,
"sha": "VNe9Gt6E7jYfHWghPlX90EOkCL+q+7TAJHx4U7mJZMsxQmp/QrgEIcKCbG502/X/RUL4dqZkL/uG9QfOhDw/tg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Reflection": "4.0.10-beta-22816",
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Reflection.TypeExtensions.dll"
],
"compileAssemblies": [
"lib/contract/System.Reflection.TypeExtensions.dll"
]
}
},
"files": [
"License.rtf",
"System.Reflection.TypeExtensions.4.0.0-beta-22816.nupkg",
"System.Reflection.TypeExtensions.4.0.0-beta-22816.nupkg.sha512",
"System.Reflection.TypeExtensions.nuspec",
"lib/aspnetcore50/System.Reflection.TypeExtensions.dll",
"lib/contract/System.Reflection.TypeExtensions.dll",
"lib/net45/_._",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Reflection.TypeExtensions.dll"
]
},
"System.Runtime/4.0.20-beta-22816": {
"serviceable": false,
"sha": "sDSJEmM6Q5O7Nn9XxHTrsEJ4bv4hsBdeTWjuvyzd9/u9ujl9AWa3q1XFLrdPZetILPOC1P0+1LOCq4kZcsKF5Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.ComponentModel.Composition",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.ComponentModel.Composition",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Runtime.dll"
],
"compileAssemblies": [
"lib/contract/System.Runtime.dll"
]
}
},
"files": [
"License.rtf",
"System.Runtime.4.0.20-beta-22816.nupkg",
"System.Runtime.4.0.20-beta-22816.nupkg.sha512",
"System.Runtime.nuspec",
"lib/aspnetcore50/System.Runtime.dll",
"lib/contract/System.Runtime.dll",
"lib/net45/System.Runtime.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Runtime.dll"
]
},
"System.Runtime.Extensions/4.0.10-beta-22816": {
"serviceable": false,
"sha": "b8ymkNB0apTc/FCmyeB/Js1CMg8EBaOlM2biIKA94Dk0sT/yyGd8SyCeuZXiCGCIk6HpSiIsIdX53rXgTWxH0w==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
],
"compileAssemblies": [
"lib/net45/System.Runtime.Extensions.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Runtime.Extensions.dll"
],
"compileAssemblies": [
"lib/contract/System.Runtime.Extensions.dll"
]
}
},
"files": [
"License.rtf",
"System.Runtime.Extensions.4.0.10-beta-22816.nupkg",
"System.Runtime.Extensions.4.0.10-beta-22816.nupkg.sha512",
"System.Runtime.Extensions.nuspec",
"lib/aspnetcore50/System.Runtime.Extensions.dll",
"lib/contract/System.Runtime.Extensions.dll",
"lib/net45/System.Runtime.Extensions.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Runtime.Extensions.dll"
]
},
"System.Text.Encoding/4.0.10-beta-22816": {
"serviceable": false,
"sha": "QDKTAvat7aDGMWnVkGm6tJvvmc2zSTa/p8M4/OEBBkZKNx4SGkeGEjFUhl7b6AXZ220m4dACygkiAVoB/LqMHw==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Text.Encoding.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.Encoding.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib"
],
"runtimeAssemblies": [
"lib/net45/System.Text.Encoding.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.Encoding.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Text.Encoding.dll"
],
"compileAssemblies": [
"lib/contract/System.Text.Encoding.dll"
]
}
},
"files": [
"License.rtf",
"System.Text.Encoding.4.0.10-beta-22816.nupkg",
"System.Text.Encoding.4.0.10-beta-22816.nupkg.sha512",
"System.Text.Encoding.nuspec",
"lib/aspnetcore50/System.Text.Encoding.dll",
"lib/contract/System.Text.Encoding.dll",
"lib/net45/System.Text.Encoding.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Text.Encoding.dll"
]
},
"System.Text.Encoding.CodePages/4.0.0-beta-22816": {
"serviceable": false,
"sha": "q52eEfAgtMfsNDbTetTX1EN337+2IyJTJH/DrRnFsdzfoyblYY/511USLsg4qmLriLS0kryXUZG3DzQsOfzt8Q==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Text.Encoding": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Text.Encoding.CodePages.dll"
],
"compileAssemblies": [
"lib/contract/System.Text.Encoding.CodePages.dll"
]
}
},
"files": [
"License.rtf",
"System.Text.Encoding.CodePages.4.0.0-beta-22816.nupkg",
"System.Text.Encoding.CodePages.4.0.0-beta-22816.nupkg.sha512",
"System.Text.Encoding.CodePages.nuspec",
"lib/aspnetcore50/System.Text.Encoding.CodePages.dll",
"lib/contract/System.Text.Encoding.CodePages.dll",
"lib/net45/_._",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Text.Encoding.CodePages.dll"
]
},
"System.Text.RegularExpressions/4.0.10-beta-22816": {
"serviceable": false,
"sha": "f6reT2KQ1IjeAKeZEX5TSIFugrsmofjD3N+9HD4c2WAMFlEs4p4/ycsmS1bLlV7n+JRHsmUkhgpCVWMZYPk+aA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System"
],
"runtimeAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
],
"compileAssemblies": [
"lib/net45/System.Text.RegularExpressions.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Text.RegularExpressions.dll"
],
"compileAssemblies": [
"lib/contract/System.Text.RegularExpressions.dll"
]
}
},
"files": [
"License.rtf",
"System.Text.RegularExpressions.4.0.10-beta-22816.nupkg",
"System.Text.RegularExpressions.4.0.10-beta-22816.nupkg.sha512",
"System.Text.RegularExpressions.nuspec",
"lib/aspnetcore50/System.Text.RegularExpressions.dll",
"lib/contract/System.Text.RegularExpressions.dll",
"lib/net45/System.Text.RegularExpressions.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Text.RegularExpressions.dll"
]
},
"System.Threading/4.0.10-beta-22816": {
"serviceable": false,
"sha": "GO4X3FuGlw4DJH+UbbKDXKnyyWiwlPJIX+Ys0UCzSdAPneBA42dPb2+kRakWy+wo6n6Gcv7ckkfa3j8MSSxbhg==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816",
"System.Threading.Tasks": "4.0.10-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Threading.dll"
],
"compileAssemblies": [
"lib/contract/System.Threading.dll"
]
}
},
"files": [
"License.rtf",
"System.Threading.4.0.10-beta-22816.nupkg",
"System.Threading.4.0.10-beta-22816.nupkg.sha512",
"System.Threading.nuspec",
"lib/aspnetcore50/System.Threading.dll",
"lib/contract/System.Threading.dll",
"lib/net45/System.Threading.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.dll"
]
},
"System.Threading.Tasks/4.0.10-beta-22816": {
"serviceable": false,
"sha": "e7TcoQuIPQ4bvkkCY2ulU8NFvj8XqYxsGpD3fAq1KajAlpx5j327Q13lKxlGPb7ouHQydKHCy5G1ZGuydb0DAA==",
"frameworks": {
".NETFramework,Version=v4.5": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
]
},
".NETFramework,Version=v4.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [],
"compileAssemblies": []
},
"DNX,Version=v4.5.1": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [
"mscorlib",
"System.Core"
],
"runtimeAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
],
"compileAssemblies": [
"lib/net45/System.Threading.Tasks.dll"
]
},
"DNXCore,Version=v5.0": {
"dependencies": {
"System.Runtime": "4.0.20-beta-22816"
},
"frameworkAssemblies": [],
"runtimeAssemblies": [
"lib/aspnetcore50/System.Threading.Tasks.dll"
],
"compileAssemblies": [
"lib/contract/System.Threading.Tasks.dll"
]
}
},
"files": [
"License.rtf",
"System.Threading.Tasks.4.0.10-beta-22816.nupkg",
"System.Threading.Tasks.4.0.10-beta-22816.nupkg.sha512",
"System.Threading.Tasks.nuspec",
"lib/aspnetcore50/System.Threading.Tasks.dll",
"lib/contract/System.Threading.Tasks.dll",
"lib/net45/System.Threading.Tasks.dll",
"lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Threading.Tasks.dll"
]
}
} }
} }
\ No newline at end of file
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;NET35</DefineConstants> <DefineConstants>TRACE;DEBUG;NET35 EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
...@@ -30,9 +30,10 @@ ...@@ -30,9 +30,10 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE;NET35</DefineConstants> <DefineConstants>TRACE;NET35 EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>TRACE;DEBUG;EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE;EXTERNALS</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
......
...@@ -3,6 +3,10 @@ ...@@ -3,6 +3,10 @@
using System.Linq; using System.Linq;
using System.Text; using System.Text;
#if DNXCORE50
using ApplicationException = global::System.InvalidOperationException;
#endif
namespace SqlMapper namespace SqlMapper
{ {
static class Assert static class Assert
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>TRACE;DEBUG;EXTERNALS PERF</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
...@@ -32,10 +32,11 @@ ...@@ -32,10 +32,11 @@
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE;EXTERNALS PERF</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="BLToolkit.4"> <Reference Include="BLToolkit.4">
......
...@@ -3,14 +3,18 @@ ...@@ -3,14 +3,18 @@
using System.Reflection; using System.Reflection;
using System.Linq; using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
namespace SqlMapper namespace SqlMapper
{ {
#if EXTERNALS
[ServiceStack.DataAnnotations.Alias("Posts")] [ServiceStack.DataAnnotations.Alias("Posts")]
[Soma.Core.Table(Name = "Posts")] [Soma.Core.Table(Name = "Posts")]
#endif
public class Post public class Post
{ {
#if EXTERNALS
[Soma.Core.Id(Soma.Core.IdKind.Identity)] [Soma.Core.Id(Soma.Core.IdKind.Identity)]
#endif
public int Id { get; set; } public int Id { get; set; }
public string Text { get; set; } public string Text { get; set; }
public DateTime CreationDate { get; set; } public DateTime CreationDate { get; set; }
...@@ -42,24 +46,37 @@ public static SqlConnection GetOpenConnection() ...@@ -42,24 +46,37 @@ public static SqlConnection GetOpenConnection()
static void RunPerformanceTests() static void RunPerformanceTests()
{ {
#if PERF
var test = new PerformanceTests(); var test = new PerformanceTests();
const int iterations = 500; const int iterations = 500;
Console.WriteLine("Running {0} iterations that load up a post entity", iterations); Console.WriteLine("Running {0} iterations that load up a post entity", iterations);
test.Run(iterations); test.Run(iterations);
#else
Console.WriteLine("Performance tests have not been built; add the PERF symbol");
#endif
} }
static void Main() static void Main()
{ {
#if DNXCORE50
Console.WriteLine("CoreCLR");
#else
Console.WriteLine(Environment.Version);
#endif
#if DEBUG #if DEBUG
RunTests(); RunTests();
#else #else
EnsureDBSetup(); EnsureDBSetup();
RunPerformanceTests(); RunPerformanceTests();
#endif #endif
Console.WriteLine("(end of tests; press any key)");
#if DNXCORE50
Console.WriteLine("(end of tests; press return)");
Console.ReadLine();
#else
Console.WriteLine("(end of tests; press any key)");
Console.ReadKey(); Console.ReadKey();
#endif
} }
private static void EnsureDBSetup() private static void EnsureDBSetup()
...@@ -110,42 +127,81 @@ insert Posts ([Text],CreationDate, LastChangeDate) values (replicate('x', 2000), ...@@ -110,42 +127,81 @@ insert Posts ([Text],CreationDate, LastChangeDate) values (replicate('x', 2000),
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
} }
private static bool HasAttribute<T>(MemberInfo member) where T : Attribute
{
#if DNXCORE50
return member.CustomAttributes.Any(x => x.AttributeType == typeof(T));
#else
return Attribute.IsDefined(member, typeof(T), true);
#endif
}
private static void RunTests() private static void RunTests()
{ {
var tester = new Tests(); var tester = new Tests();
int fail = 0; int fail = 0, skip = 0, pass = 0, frameworkFail = 0;
MethodInfo[] methods = typeof(Tests).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); MethodInfo[] methods = typeof(Tests).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
var activeTests = methods.Where(m => Attribute.IsDefined(m, typeof(ActiveTestAttribute))).ToArray(); var activeTests = methods.Where(m => HasAttribute<ActiveTestAttribute>(m)).ToArray();
if (activeTests.Length != 0) methods = activeTests; if (activeTests.Length != 0) methods = activeTests;
List<string> failNames = new List<string>(); List<string> failNames = new List<string>();
foreach (var method in methods) foreach (var method in methods)
{ {
if (HasAttribute<SkipTestAttribute>(method))
{
Console.Write("Skipping " + method.Name);
skip++;
continue;
}
bool expectFrameworkFail = HasAttribute<FrameworkFail>(method);
Console.Write("Running " + method.Name); Console.Write("Running " + method.Name);
try try
{ {
method.Invoke(tester, null); method.Invoke(tester, null);
Console.WriteLine(" - OK!"); if (expectFrameworkFail)
{
Console.WriteLine(" - was expected to framework-fail, but didn't");
fail++;
failNames.Add(method.Name);
}
else
{
Console.WriteLine(" - OK!");
pass++;
}
} catch(TargetInvocationException tie) } catch(TargetInvocationException tie)
{ {
fail++;
Console.WriteLine(" - " + tie.InnerException.Message); Console.WriteLine(" - " + tie.InnerException.Message);
failNames.Add(method.Name); if (expectFrameworkFail)
{
frameworkFail++;
}
else
{
fail++;
failNames.Add(method.Name);
if (tie.InnerException is TypeInitializationException)
{
Console.WriteLine("> " + tie.InnerException.InnerException.Message);
}
}
}catch (Exception ex) }catch (Exception ex)
{ {
fail++; fail++;
Console.WriteLine(" - " + ex.Message); Console.WriteLine(" - " + ex.Message);
failNames.Add(method.Name);
} }
} }
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("Passed: {0}, Failed: {1}, Skipped: {2}, Framework-fail: {3}", pass, fail, skip, frameworkFail);
if(fail == 0) if(fail == 0)
{ {
Console.WriteLine("(all tests successful)"); Console.WriteLine("(all tests successful)");
} }
else else
{ {
Console.WriteLine("#### FAILED: {0}", fail); Console.WriteLine("Failures:");
foreach(var failName in failNames) foreach(var failName in failNames)
{ {
Console.WriteLine(failName); Console.WriteLine(failName);
...@@ -156,5 +212,15 @@ private static void RunTests() ...@@ -156,5 +212,15 @@ private static void RunTests()
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class ActiveTestAttribute : Attribute {} public sealed class ActiveTestAttribute : Attribute {}
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class SkipTestAttribute : Attribute { }
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class FrameworkFail : Attribute {
public FrameworkFail(string url) {
this.Url = url;
}
public string Url { get; private set; }
}
} }
//#define POSTGRESQL // uncomment to run postgres tests //#define POSTGRESQL // uncomment to run postgres tests
#if DNXCORE50
using IDbCommand = global::System.Data.Common.DbCommand;
using IDbDataParameter = global::System.Data.Common.DbParameter;
using IDbConnection = global::System.Data.Common.DbConnection;
using IDbTransaction = global::System.Data.Common.DbTransaction;
using IDataReader = global::System.Data.Common.DbDataReader;
#endif
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.SqlClient; using System.Data.SqlClient;
using System.Linq; using System.Linq;
using Dapper; using Dapper;
using System.Data.SqlServerCe;
using System.IO; using System.IO;
using System.Data; using System.Data;
using System.Collections; using System.Collections;
...@@ -15,14 +23,46 @@ ...@@ -15,14 +23,46 @@
using System.Data.Common; using System.Data.Common;
using System.Globalization; using System.Globalization;
using System.Threading; using System.Threading;
using System.Data.Entity.Spatial;
using Microsoft.SqlServer.Types;
using System.Data.SqlTypes; using System.Data.SqlTypes;
using FirebirdSql.Data.FirebirdClient;
using System.Diagnostics; using System.Diagnostics;
#if EXTERNALS
using FirebirdSql.Data.FirebirdClient;
using System.Data.Entity.Spatial;
using Microsoft.SqlServer.Types;
using System.Data.SqlServerCe;
#if POSTGRESQL #if POSTGRESQL
using Npgsql; using Npgsql;
#endif #endif
#endif
#if DNXCORE50
namespace System.ComponentModel {
public sealed class DescriptionAttribute : Attribute {
public DescriptionAttribute(string description)
{
Description = description;
}
public string Description {get;private set;}
}
}
namespace System
{
public enum GenericUriParserOptions
{
Default
}
public class GenericUriParser
{
private GenericUriParserOptions options;
public GenericUriParser(GenericUriParserOptions options)
{
this.options = options;
}
}
}
#endif
namespace SqlMapper namespace SqlMapper
{ {
...@@ -222,7 +262,7 @@ public void TestNoDefaultConstructorWithEnum() ...@@ -222,7 +262,7 @@ public void TestNoDefaultConstructorWithEnum()
nodef.NE1.IsEqualTo(ShortEnum.Five); nodef.NE1.IsEqualTo(ShortEnum.Five);
nodef.NE2.IsEqualTo(null); nodef.NE2.IsEqualTo(null);
} }
#if EXTERNALS
class NoDefaultConstructorWithBinary class NoDefaultConstructorWithBinary
{ {
public System.Data.Linq.Binary Value { get; set; } public System.Data.Linq.Binary Value { get; set; }
...@@ -232,7 +272,6 @@ public NoDefaultConstructorWithBinary(System.Data.Linq.Binary val) ...@@ -232,7 +272,6 @@ public NoDefaultConstructorWithBinary(System.Data.Linq.Binary val)
Value = val; Value = val;
} }
} }
public void TestNoDefaultConstructorBinary() public void TestNoDefaultConstructorBinary()
{ {
byte[] orig = new byte[20]; byte[] orig = new byte[20];
...@@ -241,6 +280,7 @@ public void TestNoDefaultConstructorBinary() ...@@ -241,6 +280,7 @@ public void TestNoDefaultConstructorBinary()
var output = connection.Query<NoDefaultConstructorWithBinary>("select @input as val", new { input }).First().Value; var output = connection.Query<NoDefaultConstructorWithBinary>("select @input as val", new { input }).First().Value;
output.ToArray().IsSequenceEqualTo(orig); output.ToArray().IsSequenceEqualTo(orig);
} }
#endif
// http://stackoverflow.com/q/8593871 // http://stackoverflow.com/q/8593871
public void TestAbstractInheritance() public void TestAbstractInheritance()
...@@ -515,7 +555,7 @@ public void TestExtraFields() ...@@ -515,7 +555,7 @@ public void TestExtraFields()
dog.First().Id dog.First().Id
.IsEqualTo(guid); .IsEqualTo(guid);
} }
#if EXTERNALS
// see http://stackoverflow.com/q/18847510/23354 // see http://stackoverflow.com/q/18847510/23354
public void TestOleDbParameters() public void TestOleDbParameters()
{ {
...@@ -537,7 +577,7 @@ System.Data.OleDb.OleDbConnection ConnectViaOledb() ...@@ -537,7 +577,7 @@ System.Data.OleDb.OleDbConnection ConnectViaOledb()
conn.Open(); conn.Open();
return conn; return conn;
} }
#endif
public void TestStrongType() public void TestStrongType()
{ {
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
...@@ -1109,7 +1149,7 @@ public void TestFieldsAndPrivates() ...@@ -1109,7 +1149,7 @@ public void TestFieldsAndPrivates()
} }
#if EXTERNALS
public void ExecuteReader() public void ExecuteReader()
{ {
var dt = new DataTable(); var dt = new DataTable();
...@@ -1121,7 +1161,7 @@ public void ExecuteReader() ...@@ -1121,7 +1161,7 @@ public void ExecuteReader()
((int)dt.Rows[0][0]).IsEqualTo(3); ((int)dt.Rows[0][0]).IsEqualTo(3);
((int)dt.Rows[0][1]).IsEqualTo(4); ((int)dt.Rows[0][1]).IsEqualTo(4);
} }
#endif
private class TestFieldCaseAndPrivatesEntity private class TestFieldCaseAndPrivatesEntity
{ {
public int a { get; set; } public int a { get; set; }
...@@ -1235,7 +1275,7 @@ public class AuthorCE ...@@ -1235,7 +1275,7 @@ public class AuthorCE
public int ID { get; set; } public int ID { get; set; }
public string Name { get; set; } public string Name { get; set; }
} }
#if EXTERNALS
public void MultiRSSqlCE() public void MultiRSSqlCE()
{ {
if (File.Exists("Test.sdf")) if (File.Exists("Test.sdf"))
...@@ -1264,7 +1304,7 @@ public void MultiRSSqlCE() ...@@ -1264,7 +1304,7 @@ public void MultiRSSqlCE()
cnn.Close(); cnn.Close();
} }
} }
#endif
enum TestEnum : byte enum TestEnum : byte
{ {
Bla = 1 Bla = 1
...@@ -1486,14 +1526,14 @@ public void TestDbString() ...@@ -1486,14 +1526,14 @@ public void TestDbString()
{ {
var obj = connection.Query("select datalength(@a) as a, datalength(@b) as b, datalength(@c) as c, datalength(@d) as d, datalength(@e) as e, datalength(@f) as f", var obj = connection.Query("select datalength(@a) as a, datalength(@b) as b, datalength(@c) as c, datalength(@d) as d, datalength(@e) as e, datalength(@f) as f",
new new
{ {
a = new DbString { Value = "abcde", IsFixedLength = true, Length = 10, IsAnsi = true }, a = new DbString { Value = "abcde", IsFixedLength = true, Length = 10, IsAnsi = true },
b = new DbString { Value = "abcde", IsFixedLength = true, Length = 10, IsAnsi = false }, b = new DbString { Value = "abcde", IsFixedLength = true, Length = 10, IsAnsi = false },
c = new DbString { Value = "abcde", IsFixedLength = false, Length = 10, IsAnsi = true }, c = new DbString { Value = "abcde", IsFixedLength = false, Length = 10, IsAnsi = true },
d = new DbString { Value = "abcde", IsFixedLength = false, Length = 10, IsAnsi = false }, d = new DbString { Value = "abcde", IsFixedLength = false, Length = 10, IsAnsi = false },
e = new DbString { Value = "abcde", IsAnsi = true }, e = new DbString { Value = "abcde", IsAnsi = true },
f = new DbString { Value = "abcde", IsAnsi = false }, f = new DbString { Value = "abcde", IsAnsi = false },
}).First(); }).First();
((int)obj.a).IsEqualTo(10); ((int)obj.a).IsEqualTo(10);
((int)obj.b).IsEqualTo(20); ((int)obj.b).IsEqualTo(20);
((int)obj.c).IsEqualTo(5); ((int)obj.c).IsEqualTo(5);
...@@ -1656,7 +1696,7 @@ public void AddParameters(IDbCommand command, Dapper.SqlMapper.Identity identity ...@@ -1656,7 +1696,7 @@ public void AddParameters(IDbCommand command, Dapper.SqlMapper.Identity identity
} }
} }
#if EXTERNALS
// SQL Server specific test to demonstrate TVP // SQL Server specific test to demonstrate TVP
public void TestTVP() public void TestTVP()
{ {
...@@ -1755,7 +1795,7 @@ public void TestTVPWithAdditionalParams() ...@@ -1755,7 +1795,7 @@ public void TestTVPWithAdditionalParams()
} }
} }
} }
#endif
class IntCustomParam : Dapper.SqlMapper.ICustomQueryParameter class IntCustomParam : Dapper.SqlMapper.ICustomQueryParameter
{ {
IEnumerable<int> numbers; IEnumerable<int> numbers;
...@@ -1789,7 +1829,7 @@ public void AddParameter(IDbCommand command, string name) ...@@ -1789,7 +1829,7 @@ public void AddParameter(IDbCommand command, string name)
p.Value = number_list; p.Value = number_list;
} }
} }
#if EXTERNALS
public void TestTVPWithAnonymousObject() public void TestTVPWithAnonymousObject()
{ {
try try
...@@ -1816,6 +1856,7 @@ public void TestTVPWithAnonymousObject() ...@@ -1816,6 +1856,7 @@ public void TestTVPWithAnonymousObject()
} }
} }
} }
#endif
class Parent class Parent
{ {
...@@ -1864,6 +1905,7 @@ class WithBizarreData ...@@ -1864,6 +1905,7 @@ class WithBizarreData
public GenericUriParser Foo { get; set; } public GenericUriParser Foo { get; set; }
public int Bar { get; set; } public int Bar { get; set; }
} }
public void TestUnexpectedDataMessage() public void TestUnexpectedDataMessage()
{ {
string msg = null; string msg = null;
...@@ -1878,6 +1920,7 @@ public void TestUnexpectedDataMessage() ...@@ -1878,6 +1920,7 @@ public void TestUnexpectedDataMessage()
} }
msg.IsEqualTo("The member Foo of type System.GenericUriParser cannot be used as a parameter value"); msg.IsEqualTo("The member Foo of type System.GenericUriParser cannot be used as a parameter value");
} }
public void TestUnexpectedButFilteredDataMessage() public void TestUnexpectedButFilteredDataMessage()
{ {
int i = connection.Query<int>("select @Bar", new WithBizarreData { Foo = new GenericUriParser(GenericUriParserOptions.Default), Bar = 23 }).Single(); int i = connection.Query<int>("select @Bar", new WithBizarreData { Foo = new GenericUriParser(GenericUriParserOptions.Default), Bar = 23 }).Single();
...@@ -2094,6 +2137,8 @@ public void TestMultiMapperIsNotConfusedWithUnorderedCols() ...@@ -2094,6 +2137,8 @@ public void TestMultiMapperIsNotConfusedWithUnorderedCols()
result.Item2.BarId.IsEqualTo(3); result.Item2.BarId.IsEqualTo(3);
result.Item2.Name.IsEqualTo("a"); result.Item2.Name.IsEqualTo("a");
} }
#if EXTERNALS
public void TestLinqBinaryToClass() public void TestLinqBinaryToClass()
{ {
byte[] orig = new byte[20]; byte[] orig = new byte[20];
...@@ -2120,7 +2165,7 @@ class WithBinary ...@@ -2120,7 +2165,7 @@ class WithBinary
{ {
public System.Data.Linq.Binary Value { get; set; } public System.Data.Linq.Binary Value { get; set; }
} }
#endif
class WithPrivateConstructor class WithPrivateConstructor
{ {
...@@ -2489,7 +2534,7 @@ public void TestCustomTypeMap() ...@@ -2489,7 +2534,7 @@ public void TestCustomTypeMap()
// custom mapping // custom mapping
var map = new CustomPropertyTypeMap(typeof(TypeWithMapping), var map = new CustomPropertyTypeMap(typeof(TypeWithMapping),
(type, columnName) => type.GetProperties().Where(prop => prop.GetCustomAttributes(false).OfType<DescriptionAttribute>().Any(attr => attr.Description == columnName)).FirstOrDefault()); (type, columnName) => type.GetProperties().Where(prop => GetDescriptionFromAttribute(prop) == columnName).FirstOrDefault());
Dapper.SqlMapper.SetTypeMap(typeof(TypeWithMapping), map); Dapper.SqlMapper.SetTypeMap(typeof(TypeWithMapping), map);
item = connection.Query<TypeWithMapping>("Select 'AVal' as A, 'BVal' as B").Single(); item = connection.Query<TypeWithMapping>("Select 'AVal' as A, 'BVal' as B").Single();
...@@ -2502,7 +2547,17 @@ public void TestCustomTypeMap() ...@@ -2502,7 +2547,17 @@ public void TestCustomTypeMap()
item.A.IsEqualTo("AVal"); item.A.IsEqualTo("AVal");
item.B.IsEqualTo("BVal"); item.B.IsEqualTo("BVal");
} }
static string GetDescriptionFromAttribute(MemberInfo member)
{
if (member == null) return null;
#if DNXCORE50
var data = member.CustomAttributes.FirstOrDefault(x => x.AttributeType == typeof(DescriptionAttribute));
return data == null ? null : (string)data.ConstructorArguments.Single().Value;
#else
var attrib = (DescriptionAttribute)Attribute.GetCustomAttribute(member, typeof(DescriptionAttribute), false);
return attrib == null ? null : attrib.Description;
#endif
}
public class TypeWithMapping public class TypeWithMapping
{ {
[Description("B")] [Description("B")]
...@@ -2872,7 +2927,70 @@ public void TestChangingDefaultStringTypeMappingToAnsiString() ...@@ -2872,7 +2927,70 @@ public void TestChangingDefaultStringTypeMappingToAnsiString()
Dapper.SqlMapper.PurgeQueryCache(); Dapper.SqlMapper.PurgeQueryCache();
Dapper.SqlMapper.AddTypeMap(typeof(string), DbType.String); // Restore Default to Unicode String Dapper.SqlMapper.AddTypeMap(typeof(string), DbType.String); // Restore Default to Unicode String
} }
#if DNXCORE50
class TransactedConnection : IDbConnection
{
IDbConnection _conn;
IDbTransaction _tran;
public TransactedConnection(IDbConnection conn, IDbTransaction tran)
{
_conn = conn;
_tran = tran;
}
public override string ConnectionString { get { return _conn.ConnectionString; } set { _conn.ConnectionString = value; } }
public override int ConnectionTimeout { get { return _conn.ConnectionTimeout; } }
public override string Database { get { return _conn.Database; } }
public override ConnectionState State { get { return _conn.State; } }
protected override IDbTransaction BeginDbTransaction(IsolationLevel isolationLevel)
{
return _tran;
}
public override void ChangeDatabase(string databaseName)
{
_conn.ChangeDatabase(databaseName);
}
public override string DataSource
{
get
{
return _conn.DataSource;
}
}
public override string ServerVersion
{
get
{
return _conn.ServerVersion;
}
}
public override void Close()
{
_conn.Close();
}
protected override IDbCommand CreateDbCommand()
{
// The command inherits the "current" transaction.
var command = _conn.CreateCommand();
command.Transaction = _tran;
return command;
}
protected override void Dispose(bool disposing)
{
if(disposing) _conn.Dispose();
base.Dispose(disposing);
}
public override void Open()
{
_conn.Open();
}
}
#else
class TransactedConnection : IDbConnection class TransactedConnection : IDbConnection
{ {
IDbConnection _conn; IDbConnection _conn;
...@@ -2927,7 +3045,7 @@ public void Open() ...@@ -2927,7 +3045,7 @@ public void Open()
_conn.Open(); _conn.Open();
} }
} }
#endif
public void TestDapperTableMetadataRetrieval() public void TestDapperTableMetadataRetrieval()
{ {
// Test for a bug found in CS 51509960 where the following sequence would result in an InvalidOperationException being // Test for a bug found in CS 51509960 where the following sequence would result in an InvalidOperationException being
...@@ -3004,20 +3122,29 @@ public void TestDoubleDecimalConversions_SO18228523_Nulls() ...@@ -3004,20 +3122,29 @@ public void TestDoubleDecimalConversions_SO18228523_Nulls()
row.C.Equals(0.0M); row.C.Equals(0.0M);
row.D.IsNull(); row.D.IsNull();
} }
private static CultureInfo ActiveCulture
{
#if DNXCORE50
get { return CultureInfo.CurrentCulture; }
set { CultureInfo.CurrentCulture = value; }
#else
get { return Thread.CurrentThread.CurrentCulture; }
set { Thread.CurrentThread.CurrentCulture = value; }
#endif
}
public void TestParameterInclusionNotSensitiveToCurrentCulture() public void TestParameterInclusionNotSensitiveToCurrentCulture()
{ {
// note this might fail if your database server is case-sensitive // note this might fail if your database server is case-sensitive
CultureInfo current = Thread.CurrentThread.CurrentCulture; CultureInfo current = ActiveCulture;
try try
{ {
Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR"); ActiveCulture = new CultureInfo("tr-TR");
connection.Query<int>("select @pid", new { PId = 1 }).Single(); connection.Query<int>("select @pid", new { PId = 1 }).Single();
} }
finally finally
{ {
Thread.CurrentThread.CurrentCulture = current; ActiveCulture = current;
} }
} }
public void LiteralReplacement() public void LiteralReplacement()
...@@ -3054,6 +3181,22 @@ enum AnotherEnum : byte ...@@ -3054,6 +3181,22 @@ enum AnotherEnum : byte
A = 2, A = 2,
B = 1 B = 1
} }
#if DNXCORE50
[FrameworkFail("https://github.com/dotnet/corefx/issues/1613")]
#endif
public void AdoNetEnumValue()
{
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "select @foo";
cmd.Parameters.AddWithValue("@foo", AnEnum.B);
object value = cmd.ExecuteScalar();
AnEnum val = (AnEnum)value;
val.IsEqualTo(AnEnum.B);
}
}
public void LiteralReplacementEnumAndString() public void LiteralReplacementEnumAndString()
{ {
var args = new { x = AnEnum.B, y = 123.45M, z = AnotherEnum.A }; var args = new { x = AnEnum.B, y = 123.45M, z = AnotherEnum.A };
...@@ -3065,6 +3208,7 @@ public void LiteralReplacementEnumAndString() ...@@ -3065,6 +3208,7 @@ public void LiteralReplacementEnumAndString()
y.Equals(123.45M); y.Equals(123.45M);
z.Equals(AnotherEnum.A); z.Equals(AnotherEnum.A);
} }
public void LiteralReplacementDynamicEnumAndString() public void LiteralReplacementDynamicEnumAndString()
{ {
var args = new DynamicParameters(); var args = new DynamicParameters();
...@@ -3173,7 +3317,7 @@ class HasDoubleDecimal ...@@ -3173,7 +3317,7 @@ class HasDoubleDecimal
public decimal C { get; set; } public decimal C { get; set; }
public decimal? D { get; set; } public decimal? D { get; set; }
} }
#if EXTERNALS
public void DataTableParameters() public void DataTableParameters()
{ {
try { connection.Execute("drop proc #DataTableParameters"); } try { connection.Execute("drop proc #DataTableParameters"); }
...@@ -3277,7 +3421,7 @@ public void SupportInit() ...@@ -3277,7 +3421,7 @@ public void SupportInit()
obj.Value.Equals("abc"); obj.Value.Equals("abc");
obj.Flags.Equals(31); obj.Flags.Equals(31);
} }
#endif
public void GuidIn_SO_24177902() public void GuidIn_SO_24177902()
{ {
// invent and populate // invent and populate
...@@ -3304,7 +3448,7 @@ public void GuidIn_SO_24177902() ...@@ -3304,7 +3448,7 @@ public void GuidIn_SO_24177902()
rows[1].i.Equals(3); rows[1].i.Equals(3);
rows[1].g.Equals(c); rows[1].g.Equals(c);
} }
#if EXTERNALS
class HazGeo class HazGeo
{ {
public int Id { get; set; } public int Id { get; set; }
...@@ -3372,7 +3516,7 @@ public class HazSqlHierarchy ...@@ -3372,7 +3516,7 @@ public class HazSqlHierarchy
public int Id { get; set; } public int Id { get; set; }
public SqlHierarchyId Path { get; set; } public SqlHierarchyId Path { get; set; }
} }
#endif
public void TypeBasedViaDynamic() public void TypeBasedViaDynamic()
{ {
Type type = GetSomeType(); Type type = GetSomeType();
...@@ -3432,7 +3576,7 @@ public class SomeType ...@@ -3432,7 +3576,7 @@ public class SomeType
public int A { get; set; } public int A { get; set; }
public string B { get; set; } public string B { get; set; }
} }
#if !DNXCORE50
class WithInit : ISupportInitialize class WithInit : ISupportInitialize
{ {
public string Value { get; set; } public string Value { get; set; }
...@@ -3448,7 +3592,7 @@ void ISupportInitialize.EndInit() ...@@ -3448,7 +3592,7 @@ void ISupportInitialize.EndInit()
Flags += 30; Flags += 30;
} }
} }
#endif
public void SO24607639_NullableBools() public void SO24607639_NullableBools()
{ {
var obj = connection.Query<HazBools>( var obj = connection.Query<HazBools>(
...@@ -3482,7 +3626,9 @@ public void SO24605346_ProcsAndStrings() ...@@ -3482,7 +3626,9 @@ public void SO24605346_ProcsAndStrings()
class PracticeRebateOrders class PracticeRebateOrders
{ {
public string fTaxInvoiceNumber; public string fTaxInvoiceNumber;
#if EXTERNALS
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
#endif
public string TaxInvoiceNumber { get { return fTaxInvoiceNumber; } set { fTaxInvoiceNumber = value; } } public string TaxInvoiceNumber { get { return fTaxInvoiceNumber; } set { fTaxInvoiceNumber = value; } }
} }
...@@ -3498,7 +3644,7 @@ public override RatingValue Parse(object value) ...@@ -3498,7 +3644,7 @@ public override RatingValue Parse(object value)
throw new FormatException("Invalid conversion to RatingValue"); throw new FormatException("Invalid conversion to RatingValue");
} }
public override void SetValue(System.Data.IDbDataParameter parameter, RatingValue value) public override void SetValue(IDbDataParameter parameter, RatingValue value)
{ {
// ... null, range checks etc ... // ... null, range checks etc ...
parameter.DbType = System.Data.DbType.Int32; parameter.DbType = System.Data.DbType.Int32;
...@@ -3585,10 +3731,12 @@ public void Issue22_ExecuteScalar() ...@@ -3585,10 +3731,12 @@ public void Issue22_ExecuteScalar()
int? k = connection.ExecuteScalar<int?>("select @i", new { i = default(int?) }); int? k = connection.ExecuteScalar<int?>("select @i", new { i = default(int?) });
k.IsNull(); k.IsNull();
#if EXTERNALS
Dapper.EntityFramework.Handlers.Register(); Dapper.EntityFramework.Handlers.Register();
var geo = DbGeography.LineFromText("LINESTRING(-122.360 47.656, -122.343 47.656 )", 4326); var geo = DbGeography.LineFromText("LINESTRING(-122.360 47.656, -122.343 47.656 )", 4326);
var geo2 = connection.ExecuteScalar<DbGeography>("select @geo", new { geo }); var geo2 = connection.ExecuteScalar<DbGeography>("select @geo", new { geo });
geo2.IsNotNull(); geo2.IsNotNull();
#endif
} }
public void Issue142_FailsNamedStatus() public void Issue142_FailsNamedStatus()
...@@ -3974,7 +4122,7 @@ public void Issue178_SqlServer() ...@@ -3974,7 +4122,7 @@ public void Issue178_SqlServer()
Assert.IsFalse(reader2.NextResult()); Assert.IsFalse(reader2.NextResult());
} }
} }
#if EXTERNALS
public void Issue178_Firebird() // we expect this to fail due to a bug in Firebird; a PR to fix it has been submitted public void Issue178_Firebird() // we expect this to fail due to a bug in Firebird; a PR to fix it has been submitted
{ {
var cs = @"initial catalog=localhost:database;user id=SYSDBA;password=masterkey"; var cs = @"initial catalog=localhost:database;user id=SYSDBA;password=masterkey";
...@@ -4019,6 +4167,7 @@ public void PseudoPositionalParameters_Simple() ...@@ -4019,6 +4167,7 @@ public void PseudoPositionalParameters_Simple()
value.IsEqualTo(9); value.IsEqualTo(9);
} }
} }
public void PseudoPositionalParameters_Dynamic() public void PseudoPositionalParameters_Dynamic()
{ {
using (var connection = ConnectViaOledb()) using (var connection = ConnectViaOledb())
...@@ -4032,6 +4181,7 @@ public void PseudoPositionalParameters_Dynamic() ...@@ -4032,6 +4181,7 @@ public void PseudoPositionalParameters_Dynamic()
value.IsEqualTo(9); value.IsEqualTo(9);
} }
} }
public void PseudoPositionalParameters_ReusedParameter() public void PseudoPositionalParameters_ReusedParameter()
{ {
using (var connection = ConnectViaOledb()) using (var connection = ConnectViaOledb())
...@@ -4077,7 +4227,7 @@ public void PseudoPositionalParameters_ExecMulti() ...@@ -4077,7 +4227,7 @@ public void PseudoPositionalParameters_ExecMulti()
sum.IsEqualTo(10); sum.IsEqualTo(10);
} }
} }
#endif
public void QueryBasicWithoutQuery() public void QueryBasicWithoutQuery()
{ {
int? i = connection.Query<int?>("print 'not a query'").FirstOrDefault(); int? i = connection.Query<int?>("print 'not a query'").FirstOrDefault();
...@@ -4213,7 +4363,9 @@ public void SO29343103_UtcDates() ...@@ -4213,7 +4363,9 @@ public void SO29343103_UtcDates()
var delta = returned - date; var delta = returned - date;
Assert.IsTrue(delta.TotalMilliseconds >= -1 && delta.TotalMilliseconds <= 1); Assert.IsTrue(delta.TotalMilliseconds >= -1 && delta.TotalMilliseconds <= 1);
} }
#if DNXCORE50
[FrameworkFail("https://github.com/dotnet/corefx/issues/1612")]
#endif
public void Issue261_Decimals() public void Issue261_Decimals()
{ {
var parameters = new DynamicParameters(); var parameters = new DynamicParameters();
...@@ -4223,13 +4375,69 @@ public void Issue261_Decimals() ...@@ -4223,13 +4375,69 @@ public void Issue261_Decimals()
var c = parameters.Get<Decimal>("c"); var c = parameters.Get<Decimal>("c");
c.IsEqualTo(11.884M); c.IsEqualTo(11.884M);
} }
#if DNXCORE50
[FrameworkFail("https://github.com/dotnet/corefx/issues/1612")]
#endif
public void Issue261_Decimals_ADONET_SetViaBaseClass()
{
Issue261_Decimals_ADONET(true);
}
public void Issue261_Decimals_ADONET_SetViaConcreteClass()
{
Issue261_Decimals_ADONET(false);
}
private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstractApi)
{
try
{
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "create proc #Issue261Direct @c decimal(10,5) OUTPUT as begin set @c=11.884 end";
cmd.ExecuteNonQuery();
}
}
catch { /* we don't care that it already exists */ }
using (var cmd = connection.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "#Issue261Direct";
var c = cmd.CreateParameter();
c.ParameterName = "c";
c.Direction = ParameterDirection.Output;
c.Value = DBNull.Value;
c.DbType = DbType.Decimal;
if (setPrecisionScaleViaAbstractApi)
{
#if DNXCORE50
DbParameter baseParam = c;
#else
IDbDataParameter baseParam = c;
#endif
baseParam.Precision = 10;
baseParam.Scale = 5;
}
else
{
c.Precision = 10;
c.Scale = 5;
}
cmd.Parameters.Add(c);
cmd.ExecuteNonQuery();
decimal value = (decimal)c.Value;
value.IsEqualTo(11.884M);
}
}
public void BasicDecimals() public void BasicDecimals()
{ {
var c = connection.Query<decimal>("select @c", new { c = 11.884M }).Single(); var c = connection.Query<decimal>("select @c", new { c = 11.884M }).Single();
c.IsEqualTo(11.884M); c.IsEqualTo(11.884M);
} }
[SkipTest]
public void Issue263_Timeout() public void Issue263_Timeout()
{ {
var watch = Stopwatch.StartNew(); var watch = Stopwatch.StartNew();
...@@ -4239,7 +4447,7 @@ public void Issue263_Timeout() ...@@ -4239,7 +4447,7 @@ public void Issue263_Timeout()
var minutes = watch.ElapsedMilliseconds / 1000 / 60; var minutes = watch.ElapsedMilliseconds / 1000 / 60;
Assert.IsTrue(minutes >= 0.95 && minutes <= 1.05); Assert.IsTrue(minutes >= 0.95 && minutes <= 1.05);
} }
#if EXTERNALS
public void SO29596645_TvpProperty() public void SO29596645_TvpProperty()
{ {
try { connection.Execute("CREATE TYPE SO29596645_ReminderRuleType AS TABLE (id int NOT NULL)"); } try { connection.Execute("CREATE TYPE SO29596645_ReminderRuleType AS TABLE (id int NOT NULL)"); }
...@@ -4253,7 +4461,7 @@ public void SO29596645_TvpProperty() ...@@ -4253,7 +4461,7 @@ public void SO29596645_TvpProperty()
val.IsEqualTo(20); val.IsEqualTo(20);
} }
#endif
public void Issue268_ReturnQueryMultiple() public void Issue268_ReturnQueryMultiple()
{ {
connection.Execute(@"create proc #TestProc268 (@a int, @b int, @c int)as connection.Execute(@"create proc #TestProc268 (@a int, @b int, @c int)as
...@@ -4276,7 +4484,7 @@ select @b ...@@ -4276,7 +4484,7 @@ select @b
var retVal = p.Get<int>("RetVal"); var retVal = p.Get<int>("RetVal");
retVal.IsEqualTo(3); retVal.IsEqualTo(3);
} }
#if EXTERNALS
class SO29596645_RuleTableValuedParameters : Dapper.SqlMapper.IDynamicParameters { class SO29596645_RuleTableValuedParameters : Dapper.SqlMapper.IDynamicParameters {
private string parameterName; private string parameterName;
...@@ -4308,7 +4516,7 @@ public SO29596645_OrganisationDTO() ...@@ -4308,7 +4516,7 @@ public SO29596645_OrganisationDTO()
Rules = new SO29596645_RuleTableValuedParameters("@Rules"); Rules = new SO29596645_RuleTableValuedParameters("@Rules");
} }
} }
#endif
#if POSTGRESQL #if POSTGRESQL
class Cat class Cat
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment