@@ -153,11 +153,11 @@ publish/ | |||||
PublishScripts/ | PublishScripts/ | ||||
# NuGet Packages | # NuGet Packages | ||||
*.nupkg | |||||
# The packages folder can be ignored because of Package Restore | # The packages folder can be ignored because of Package Restore | ||||
**/packages/* | |||||
# except build/, which is used as an MSBuild target. | # except build/, which is used as an MSBuild target. | ||||
!**/packages/build/ | |||||
# Uncomment if necessary however generally it will be regenerated when needed | # Uncomment if necessary however generally it will be regenerated when needed | ||||
#!**/packages/repositories.config | #!**/packages/repositories.config | ||||
# NuGet v3's project.json files produces more ignoreable files | # NuGet v3's project.json files produces more ignoreable files | ||||
@@ -0,0 +1,22 @@ | |||||
param($installPath, $toolsPath, $package, $project) | |||||
# set dll to copy to build dir | |||||
$wkdll = $project.ProjectItems.Item("wkhtmltox0.dll") | |||||
$copyToOutput = $wkdll.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput.Value = 1 | |||||
# and each of the dependencies | |||||
$dep1 = $project.ProjectItems.Item("libeay32.dll") | |||||
$dep2 = $project.ProjectItems.Item("libgcc_s_dw2-1.dll") | |||||
$dep3 = $project.ProjectItems.Item("mingwm10.dll") | |||||
$dep4 = $project.ProjectItems.Item("ssleay32.dll") | |||||
$copyToOutput1 = $dep1.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput1.Value = 1 | |||||
$copyToOutput2 = $dep2.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput2.Value = 1 | |||||
$copyToOutput3 = $dep3.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput3.Value = 1 | |||||
$copyToOutput4 = $dep4.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput4.Value = 1 |
@@ -0,0 +1,22 @@ | |||||
param($installPath, $toolsPath, $package, $project) | |||||
# set dll to copy to build dir | |||||
$wkdll = $project.ProjectItems.Item("wkhtmltox0.dll") | |||||
$copyToOutput = $wkdll.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput.Value = 1 | |||||
# and each of the dependencies | |||||
$dep1 = $project.ProjectItems.Item("libeay32.dll") | |||||
$dep2 = $project.ProjectItems.Item("libgcc_s_dw2-1.dll") | |||||
$dep3 = $project.ProjectItems.Item("mingwm10.dll") | |||||
$dep4 = $project.ProjectItems.Item("ssleay32.dll") | |||||
$copyToOutput1 = $dep1.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput1.Value = 1 | |||||
$copyToOutput2 = $dep2.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput2.Value = 1 | |||||
$copyToOutput3 = $dep3.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput3.Value = 1 | |||||
$copyToOutput4 = $dep4.Properties.Item("CopyToOutputDirectory") | |||||
$copyToOutput4.Value = 1 |
@@ -0,0 +1,268 @@ | |||||
<?xml version="1.0"?> | |||||
<doc> | |||||
<assembly> | |||||
<name>Microsoft.Practices.ServiceLocation</name> | |||||
</assembly> | |||||
<members> | |||||
<member name="T:Microsoft.Practices.ServiceLocation.ActivationException"> | |||||
<summary> | |||||
The standard exception thrown when a ServiceLocator has an error in resolving an object. | |||||
</summary> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ActivationException.#ctor"> | |||||
<summary> | |||||
Initializes a new instance of the <see cref="T:System.Exception" /> class. | |||||
</summary> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ActivationException.#ctor(System.String)"> | |||||
<summary> | |||||
Initializes a new instance of the <see cref="T:System.Exception" /> class with a specified error message. | |||||
</summary> | |||||
<param name="message"> | |||||
The message that describes the error. | |||||
</param> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ActivationException.#ctor(System.String,System.Exception)"> | |||||
<summary> | |||||
Initializes a new instance of the <see cref="T:System.Exception" /> class with a specified error message and a reference to the inner exception that is the cause of this exception. | |||||
</summary> | |||||
<param name="message"> | |||||
The error message that explains the reason for the exception. | |||||
</param> | |||||
<param name="innerException"> | |||||
The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. | |||||
</param> | |||||
</member> | |||||
<member name="T:Microsoft.Practices.ServiceLocation.IServiceLocator"> | |||||
<summary> | |||||
The generic Service Locator interface. This interface is used | |||||
to retrieve services (instances identified by type and optional | |||||
name) from a container. | |||||
</summary> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.IServiceLocator.GetInstance(System.Type)"> | |||||
<summary> | |||||
Get an instance of the given <paramref name="serviceType"/>. | |||||
</summary> | |||||
<param name="serviceType">Type of object requested.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is an error resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.IServiceLocator.GetInstance(System.Type,System.String)"> | |||||
<summary> | |||||
Get an instance of the given named <paramref name="serviceType"/>. | |||||
</summary> | |||||
<param name="serviceType">Type of object requested.</param> | |||||
<param name="key">Name the object was registered with.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is an error resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.IServiceLocator.GetAllInstances(System.Type)"> | |||||
<summary> | |||||
Get all instances of the given <paramref name="serviceType"/> currently | |||||
registered in the container. | |||||
</summary> | |||||
<param name="serviceType">Type of object requested.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>A sequence of instances of the requested <paramref name="serviceType"/>.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.IServiceLocator.GetInstance``1"> | |||||
<summary> | |||||
Get an instance of the given <typeparamref name="TService"/>. | |||||
</summary> | |||||
<typeparam name="TService">Type of object requested.</typeparam> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.IServiceLocator.GetInstance``1(System.String)"> | |||||
<summary> | |||||
Get an instance of the given named <typeparamref name="TService"/>. | |||||
</summary> | |||||
<typeparam name="TService">Type of object requested.</typeparam> | |||||
<param name="key">Name the object was registered with.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.IServiceLocator.GetAllInstances``1"> | |||||
<summary> | |||||
Get all instances of the given <typeparamref name="TService"/> currently | |||||
registered in the container. | |||||
</summary> | |||||
<typeparam name="TService">Type of object requested.</typeparam> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>A sequence of instances of the requested <typeparamref name="TService"/>.</returns> | |||||
</member> | |||||
<member name="T:Microsoft.Practices.ServiceLocation.ServiceLocator"> | |||||
<summary> | |||||
This class provides the ambient container for this application. If your | |||||
framework defines such an ambient container, use ServiceLocator.Current | |||||
to get it. | |||||
</summary> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocator.SetLocatorProvider(Microsoft.Practices.ServiceLocation.ServiceLocatorProvider)"> | |||||
<summary> | |||||
Set the delegate that is used to retrieve the current container. | |||||
</summary> | |||||
<param name="newProvider">Delegate that, when called, will return | |||||
the current ambient container.</param> | |||||
</member> | |||||
<member name="P:Microsoft.Practices.ServiceLocation.ServiceLocator.Current"> | |||||
<summary> | |||||
The current ambient container. | |||||
</summary> | |||||
</member> | |||||
<member name="T:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase"> | |||||
<summary> | |||||
This class is a helper that provides a default implementation | |||||
for most of the methods of <see cref="T:Microsoft.Practices.ServiceLocation.IServiceLocator"/>. | |||||
</summary> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetService(System.Type)"> | |||||
<summary> | |||||
Implementation of <see cref="M:System.IServiceProvider.GetService(System.Type)"/>. | |||||
</summary> | |||||
<param name="serviceType">The requested service.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is an error in resolving the service instance.</exception> | |||||
<returns>The requested object.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(System.Type)"> | |||||
<summary> | |||||
Get an instance of the given <paramref name="serviceType"/>. | |||||
</summary> | |||||
<param name="serviceType">Type of object requested.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is an error resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(System.Type,System.String)"> | |||||
<summary> | |||||
Get an instance of the given named <paramref name="serviceType"/>. | |||||
</summary> | |||||
<param name="serviceType">Type of object requested.</param> | |||||
<param name="key">Name the object was registered with.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is an error resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetAllInstances(System.Type)"> | |||||
<summary> | |||||
Get all instances of the given <paramref name="serviceType"/> currently | |||||
registered in the container. | |||||
</summary> | |||||
<param name="serviceType">Type of object requested.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>A sequence of instances of the requested <paramref name="serviceType"/>.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance``1"> | |||||
<summary> | |||||
Get an instance of the given <typeparamref name="TService"/>. | |||||
</summary> | |||||
<typeparam name="TService">Type of object requested.</typeparam> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance``1(System.String)"> | |||||
<summary> | |||||
Get an instance of the given named <typeparamref name="TService"/>. | |||||
</summary> | |||||
<typeparam name="TService">Type of object requested.</typeparam> | |||||
<param name="key">Name the object was registered with.</param> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetAllInstances``1"> | |||||
<summary> | |||||
Get all instances of the given <typeparamref name="TService"/> currently | |||||
registered in the container. | |||||
</summary> | |||||
<typeparam name="TService">Type of object requested.</typeparam> | |||||
<exception cref="T:Microsoft.Practices.ServiceLocation.ActivationException">if there is are errors resolving | |||||
the service instance.</exception> | |||||
<returns>A sequence of instances of the requested <typeparamref name="TService"/>.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.DoGetInstance(System.Type,System.String)"> | |||||
<summary> | |||||
When implemented by inheriting classes, this method will do the actual work of resolving | |||||
the requested service instance. | |||||
</summary> | |||||
<param name="serviceType">Type of instance requested.</param> | |||||
<param name="key">Name of registered service you want. May be null.</param> | |||||
<returns>The requested service instance.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.DoGetAllInstances(System.Type)"> | |||||
<summary> | |||||
When implemented by inheriting classes, this method will do the actual work of | |||||
resolving all the requested service instances. | |||||
</summary> | |||||
<param name="serviceType">Type of service requested.</param> | |||||
<returns>Sequence of service instance objects.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.FormatActivationExceptionMessage(System.Exception,System.Type,System.String)"> | |||||
<summary> | |||||
Format the exception message for use in an <see cref="T:Microsoft.Practices.ServiceLocation.ActivationException"/> | |||||
that occurs while resolving a single service. | |||||
</summary> | |||||
<param name="actualException">The actual exception thrown by the implementation.</param> | |||||
<param name="serviceType">Type of service requested.</param> | |||||
<param name="key">Name requested.</param> | |||||
<returns>The formatted exception message string.</returns> | |||||
</member> | |||||
<member name="M:Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.FormatActivateAllExceptionMessage(System.Exception,System.Type)"> | |||||
<summary> | |||||
Format the exception message for use in an <see cref="T:Microsoft.Practices.ServiceLocation.ActivationException"/> | |||||
that occurs while resolving multiple service instances. | |||||
</summary> | |||||
<param name="actualException">The actual exception thrown by the implementation.</param> | |||||
<param name="serviceType">Type of service requested.</param> | |||||
<returns>The formatted exception message string.</returns> | |||||
</member> | |||||
<member name="T:Microsoft.Practices.ServiceLocation.ServiceLocatorProvider"> | |||||
<summary> | |||||
This delegate type is used to provide a method that will | |||||
return the current container. Used with the <see cref="T:Microsoft.Practices.ServiceLocation.ServiceLocator"/> | |||||
static accessor class. | |||||
</summary> | |||||
<returns>An <see cref="T:Microsoft.Practices.ServiceLocation.IServiceLocator"/>.</returns> | |||||
</member> | |||||
<member name="T:Microsoft.Practices.ServiceLocation.Properties.Resources"> | |||||
<summary> | |||||
A strongly-typed resource class, for looking up localized strings, etc. | |||||
</summary> | |||||
</member> | |||||
<member name="P:Microsoft.Practices.ServiceLocation.Properties.Resources.ResourceManager"> | |||||
<summary> | |||||
Returns the cached ResourceManager instance used by this class. | |||||
</summary> | |||||
</member> | |||||
<member name="P:Microsoft.Practices.ServiceLocation.Properties.Resources.Culture"> | |||||
<summary> | |||||
Overrides the current thread's CurrentUICulture property for all | |||||
resource lookups using this strongly typed resource class. | |||||
</summary> | |||||
</member> | |||||
<member name="P:Microsoft.Practices.ServiceLocation.Properties.Resources.ActivateAllExceptionMessage"> | |||||
<summary> | |||||
Looks up a localized string similar to Activation error occurred while trying to get all instances of type {0}. | |||||
</summary> | |||||
</member> | |||||
<member name="P:Microsoft.Practices.ServiceLocation.Properties.Resources.ActivationExceptionMessage"> | |||||
<summary> | |||||
Looks up a localized string similar to Activation error occurred while trying to get instance of type {0}, key "{1}". | |||||
</summary> | |||||
</member> | |||||
<member name="P:Microsoft.Practices.ServiceLocation.Properties.Resources.ServiceLocationProviderNotSetMessage"> | |||||
<summary> | |||||
Looks up a localized string similar to ServiceLocationProvider must be set.. | |||||
</summary> | |||||
</member> | |||||
</members> | |||||
</doc> |
@@ -0,0 +1,431 @@ | |||||
/*-------------------------------------------------------------------------- | |||||
* DynamicJson | |||||
* ver 1.2.0.0 (May. 21th, 2010) | |||||
* | |||||
* created and maintained by neuecc <ils@neue.cc> | |||||
* licensed under Microsoft Public License(Ms-PL) | |||||
* http://neue.cc/ | |||||
* http://dynamicjson.codeplex.com/ | |||||
*--------------------------------------------------------------------------*/ | |||||
using System; | |||||
using System.Collections; | |||||
using System.Collections.Generic; | |||||
using System.Diagnostics; | |||||
using System.Dynamic; | |||||
using System.IO; | |||||
using System.Linq; | |||||
using System.Reflection; | |||||
using System.Runtime.Serialization.Json; | |||||
using System.Text; | |||||
using System.Xml; | |||||
using System.Xml.Linq; | |||||
namespace Codeplex.Data | |||||
{ | |||||
public class DynamicJson : DynamicObject | |||||
{ | |||||
private enum JsonType | |||||
{ | |||||
@string, number, boolean, @object, array, @null | |||||
} | |||||
// public static methods | |||||
/// <summary>from JsonSring to DynamicJson</summary> | |||||
public static dynamic Parse(string json) | |||||
{ | |||||
return Parse(json, Encoding.Unicode); | |||||
} | |||||
/// <summary>from JsonSring to DynamicJson</summary> | |||||
public static dynamic Parse(string json, Encoding encoding) | |||||
{ | |||||
using (var reader = JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json), XmlDictionaryReaderQuotas.Max)) | |||||
{ | |||||
return ToValue(XElement.Load(reader)); | |||||
} | |||||
} | |||||
/// <summary>from JsonSringStream to DynamicJson</summary> | |||||
public static dynamic Parse(Stream stream) | |||||
{ | |||||
using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryReaderQuotas.Max)) | |||||
{ | |||||
return ToValue(XElement.Load(reader)); | |||||
} | |||||
} | |||||
/// <summary>from JsonSringStream to DynamicJson</summary> | |||||
public static dynamic Parse(Stream stream, Encoding encoding) | |||||
{ | |||||
using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, encoding, XmlDictionaryReaderQuotas.Max, _ => { })) | |||||
{ | |||||
return ToValue(XElement.Load(reader)); | |||||
} | |||||
} | |||||
/// <summary>create JsonSring from primitive or IEnumerable or Object({public property name:property value})</summary> | |||||
public static string Serialize(object obj) | |||||
{ | |||||
return CreateJsonString(new XStreamingElement("root", CreateTypeAttr(GetJsonType(obj)), CreateJsonNode(obj))); | |||||
} | |||||
// private static methods | |||||
private static dynamic ToValue(XElement element) | |||||
{ | |||||
var type = (JsonType)Enum.Parse(typeof(JsonType), element.Attribute("type").Value); | |||||
switch (type) | |||||
{ | |||||
case JsonType.boolean: | |||||
return (bool)element; | |||||
case JsonType.number: | |||||
return (double)element; | |||||
case JsonType.@string: | |||||
return (string)element; | |||||
case JsonType.@object: | |||||
case JsonType.array: | |||||
return new DynamicJson(element, type); | |||||
case JsonType.@null: | |||||
default: | |||||
return null; | |||||
} | |||||
} | |||||
private static JsonType GetJsonType(object obj) | |||||
{ | |||||
if (obj == null) return JsonType.@null; | |||||
switch (Type.GetTypeCode(obj.GetType())) | |||||
{ | |||||
case TypeCode.Boolean: | |||||
return JsonType.boolean; | |||||
case TypeCode.String: | |||||
case TypeCode.Char: | |||||
case TypeCode.DateTime: | |||||
return JsonType.@string; | |||||
case TypeCode.Int16: | |||||
case TypeCode.Int32: | |||||
case TypeCode.Int64: | |||||
case TypeCode.UInt16: | |||||
case TypeCode.UInt32: | |||||
case TypeCode.UInt64: | |||||
case TypeCode.Single: | |||||
case TypeCode.Double: | |||||
case TypeCode.Decimal: | |||||
case TypeCode.SByte: | |||||
case TypeCode.Byte: | |||||
return JsonType.number; | |||||
case TypeCode.Object: | |||||
return (obj is IEnumerable) ? JsonType.array : JsonType.@object; | |||||
case TypeCode.DBNull: | |||||
case TypeCode.Empty: | |||||
default: | |||||
return JsonType.@null; | |||||
} | |||||
} | |||||
private static XAttribute CreateTypeAttr(JsonType type) | |||||
{ | |||||
return new XAttribute("type", type.ToString()); | |||||
} | |||||
private static object CreateJsonNode(object obj) | |||||
{ | |||||
var type = GetJsonType(obj); | |||||
switch (type) | |||||
{ | |||||
case JsonType.@string: | |||||
case JsonType.number: | |||||
return obj; | |||||
case JsonType.boolean: | |||||
return obj.ToString().ToLower(); | |||||
case JsonType.@object: | |||||
return CreateXObject(obj); | |||||
case JsonType.array: | |||||
return CreateXArray(obj as IEnumerable); | |||||
case JsonType.@null: | |||||
default: | |||||
return null; | |||||
} | |||||
} | |||||
private static IEnumerable<XStreamingElement> CreateXArray<T>(T obj) where T : IEnumerable | |||||
{ | |||||
return obj.Cast<object>() | |||||
.Select(o => new XStreamingElement("item", CreateTypeAttr(GetJsonType(o)), CreateJsonNode(o))); | |||||
} | |||||
private static IEnumerable<XStreamingElement> CreateXObject(object obj) | |||||
{ | |||||
return obj.GetType() | |||||
.GetProperties(BindingFlags.Public | BindingFlags.Instance) | |||||
.Select(pi => new { Name = pi.Name, Value = pi.GetValue(obj, null) }) | |||||
.Select(a => new XStreamingElement(a.Name, CreateTypeAttr(GetJsonType(a.Value)), CreateJsonNode(a.Value))); | |||||
} | |||||
private static string CreateJsonString(XStreamingElement element) | |||||
{ | |||||
using (var ms = new MemoryStream()) | |||||
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(ms, Encoding.Unicode)) | |||||
{ | |||||
element.WriteTo(writer); | |||||
writer.Flush(); | |||||
return Encoding.Unicode.GetString(ms.ToArray()); | |||||
} | |||||
} | |||||
// dynamic structure represents JavaScript Object/Array | |||||
readonly XElement xml; | |||||
readonly JsonType jsonType; | |||||
/// <summary>create blank JSObject</summary> | |||||
public DynamicJson() | |||||
{ | |||||
xml = new XElement("root", CreateTypeAttr(JsonType.@object)); | |||||
jsonType = JsonType.@object; | |||||
} | |||||
private DynamicJson(XElement element, JsonType type) | |||||
{ | |||||
Debug.Assert(type == JsonType.array || type == JsonType.@object); | |||||
xml = element; | |||||
jsonType = type; | |||||
} | |||||
public bool IsObject { get { return jsonType == JsonType.@object; } } | |||||
public bool IsArray { get { return jsonType == JsonType.array; } } | |||||
/// <summary>has property or not</summary> | |||||
public bool IsDefined(string name) | |||||
{ | |||||
return IsObject && (xml.Element(name) != null); | |||||
} | |||||
/// <summary>has property or not</summary> | |||||
public bool IsDefined(int index) | |||||
{ | |||||
return IsArray && (xml.Elements().ElementAtOrDefault(index) != null); | |||||
} | |||||
/// <summary>delete property</summary> | |||||
public bool Delete(string name) | |||||
{ | |||||
var elem = xml.Element(name); | |||||
if (elem != null) | |||||
{ | |||||
elem.Remove(); | |||||
return true; | |||||
} | |||||
else return false; | |||||
} | |||||
/// <summary>delete property</summary> | |||||
public bool Delete(int index) | |||||
{ | |||||
var elem = xml.Elements().ElementAtOrDefault(index); | |||||
if (elem != null) | |||||
{ | |||||
elem.Remove(); | |||||
return true; | |||||
} | |||||
else return false; | |||||
} | |||||
/// <summary>mapping to Array or Class by Public PropertyName</summary> | |||||
public T Deserialize<T>() | |||||
{ | |||||
return (T)Deserialize(typeof(T)); | |||||
} | |||||
private object Deserialize(Type type) | |||||
{ | |||||
return (IsArray) ? DeserializeArray(type) : DeserializeObject(type); | |||||
} | |||||
private dynamic DeserializeValue(XElement element, Type elementType) | |||||
{ | |||||
var value = ToValue(element); | |||||
if (value is DynamicJson) | |||||
{ | |||||
value = ((DynamicJson)value).Deserialize(elementType); | |||||
} | |||||
return Convert.ChangeType(value, elementType); | |||||
} | |||||
private object DeserializeObject(Type targetType) | |||||
{ | |||||
var result = Activator.CreateInstance(targetType); | |||||
var dict = targetType.GetProperties(BindingFlags.Public | BindingFlags.Instance) | |||||
.Where(p => p.CanWrite) | |||||
.ToDictionary(pi => pi.Name, pi => pi); | |||||
foreach (var item in xml.Elements()) | |||||
{ | |||||
PropertyInfo propertyInfo; | |||||
if (!dict.TryGetValue(item.Name.LocalName, out propertyInfo)) continue; | |||||
var value = DeserializeValue(item, propertyInfo.PropertyType); | |||||
propertyInfo.SetValue(result, value, null); | |||||
} | |||||
return result; | |||||
} | |||||
private object DeserializeArray(Type targetType) | |||||
{ | |||||
if (targetType.IsArray) // Foo[] | |||||
{ | |||||
var elemType = targetType.GetElementType(); | |||||
dynamic array = Array.CreateInstance(elemType, xml.Elements().Count()); | |||||
var index = 0; | |||||
foreach (var item in xml.Elements()) | |||||
{ | |||||
array[index++] = DeserializeValue(item, elemType); | |||||
} | |||||
return array; | |||||
} | |||||
else // List<Foo> | |||||
{ | |||||
var elemType = targetType.GetGenericArguments()[0]; | |||||
dynamic list = Activator.CreateInstance(targetType); | |||||
foreach (var item in xml.Elements()) | |||||
{ | |||||
list.Add(DeserializeValue(item, elemType)); | |||||
} | |||||
return list; | |||||
} | |||||
} | |||||
// Delete | |||||
public override bool TryInvoke(InvokeBinder binder, object[] args, out object result) | |||||
{ | |||||
result = (IsArray) | |||||
? Delete((int)args[0]) | |||||
: Delete((string)args[0]); | |||||
return true; | |||||
} | |||||
// IsDefined, if has args then TryGetMember | |||||
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result) | |||||
{ | |||||
if (args.Length > 0) | |||||
{ | |||||
result = null; | |||||
return false; | |||||
} | |||||
result = IsDefined(binder.Name); | |||||
return true; | |||||
} | |||||
// Deserialize or foreach(IEnumerable) | |||||
public override bool TryConvert(ConvertBinder binder, out object result) | |||||
{ | |||||
if (binder.Type == typeof(IEnumerable) || binder.Type == typeof(object[])) | |||||
{ | |||||
var ie = (IsArray) | |||||
? xml.Elements().Select(x => ToValue(x)) | |||||
: xml.Elements().Select(x => (dynamic)new KeyValuePair<string, object>(x.Name.LocalName, ToValue(x))); | |||||
result = (binder.Type == typeof(object[])) ? ie.ToArray() : ie; | |||||
} | |||||
else | |||||
{ | |||||
result = Deserialize(binder.Type); | |||||
} | |||||
return true; | |||||
} | |||||
private bool TryGet(XElement element, out object result) | |||||
{ | |||||
if (element == null) | |||||
{ | |||||
result = null; | |||||
return false; | |||||
} | |||||
result = ToValue(element); | |||||
return true; | |||||
} | |||||
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) | |||||
{ | |||||
return (IsArray) | |||||
? TryGet(xml.Elements().ElementAtOrDefault((int)indexes[0]), out result) | |||||
: TryGet(xml.Element((string)indexes[0]), out result); | |||||
} | |||||
public override bool TryGetMember(GetMemberBinder binder, out object result) | |||||
{ | |||||
return (IsArray) | |||||
? TryGet(xml.Elements().ElementAtOrDefault(int.Parse(binder.Name)), out result) | |||||
: TryGet(xml.Element(binder.Name), out result); | |||||
} | |||||
private bool TrySet(string name, object value) | |||||
{ | |||||
var type = GetJsonType(value); | |||||
var element = xml.Element(name); | |||||
if (element == null) | |||||
{ | |||||
xml.Add(new XElement(name, CreateTypeAttr(type), CreateJsonNode(value))); | |||||
} | |||||
else | |||||
{ | |||||
element.Attribute("type").Value = type.ToString(); | |||||
element.ReplaceNodes(CreateJsonNode(value)); | |||||
} | |||||
return true; | |||||
} | |||||
private bool TrySet(int index, object value) | |||||
{ | |||||
var type = GetJsonType(value); | |||||
var e = xml.Elements().ElementAtOrDefault(index); | |||||
if (e == null) | |||||
{ | |||||
xml.Add(new XElement("item", CreateTypeAttr(type), CreateJsonNode(value))); | |||||
} | |||||
else | |||||
{ | |||||
e.Attribute("type").Value = type.ToString(); | |||||
e.ReplaceNodes(CreateJsonNode(value)); | |||||
} | |||||
return true; | |||||
} | |||||
public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value) | |||||
{ | |||||
return (IsArray) | |||||
? TrySet((int)indexes[0], value) | |||||
: TrySet((string)indexes[0], value); | |||||
} | |||||
public override bool TrySetMember(SetMemberBinder binder, object value) | |||||
{ | |||||
return (IsArray) | |||||
? TrySet(int.Parse(binder.Name), value) | |||||
: TrySet(binder.Name, value); | |||||
} | |||||
public override IEnumerable<string> GetDynamicMemberNames() | |||||
{ | |||||
return (IsArray) | |||||
? xml.Elements().Select((x, i) => i.ToString()) | |||||
: xml.Elements().Select(x => x.Name.LocalName); | |||||
} | |||||
/// <summary>Serialize to JsonString</summary> | |||||
public override string ToString() | |||||
{ | |||||
// <foo type="null"></foo> is can't serialize. replace to <foo type="null" /> | |||||
foreach (var elem in xml.Descendants().Where(x => x.Attribute("type").Value == "null")) | |||||
{ | |||||
elem.RemoveNodes(); | |||||
} | |||||
return CreateJsonString(new XStreamingElement("root", CreateTypeAttr(jsonType), xml.Elements())); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<configuration> | |||||
<configSections> | |||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||||
</configSections> | |||||
</configuration> |
@@ -0,0 +1,5 @@ | |||||
<configuration> | |||||
<configSections> | |||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||||
</configSections> | |||||
</configuration> |
@@ -0,0 +1,48 @@ | |||||
TOPIC | |||||
about_EntityFramework | |||||
SHORT DESCRIPTION | |||||
Provides information about Entity Framework commands. | |||||
LONG DESCRIPTION | |||||
This topic describes the Entity Framework commands. Entity Framework is | |||||
Microsoft's recommended data access technology for new applications. | |||||
The following Entity Framework cmdlets are used with Entity Framework | |||||
Migrations. | |||||
Cmdlet Description | |||||
----------------- --------------------------------------------------- | |||||
Enable-Migrations Enables Code First Migrations in a project. | |||||
Add-Migration Scaffolds a migration script for any pending model | |||||
changes. | |||||
Update-Database Applies any pending migrations to the database. | |||||
Get-Migrations Displays the migrations that have been applied to | |||||
the target database. | |||||
The following Entity Framework cmdlets are used by NuGet packages that | |||||
install Entity Framework providers. These commands are not usually used as | |||||
part of normal application development. | |||||
Cmdlet Description | |||||
------------------------------ --------------------------------------- | |||||
Add-EFProvider Adds or updates an Entity Framework | |||||
provider entry in the project config | |||||
file. | |||||
Add-EFDefaultConnectionFactory Adds or updates an Entity Framework | |||||
default connection factory in the | |||||
project config file. | |||||
Initialize-EFConfiguration Initializes the Entity Framework | |||||
section in the project config file and | |||||
sets defaults. | |||||
SEE ALSO | |||||
Enable-Migrations | |||||
Add-Migration | |||||
Update-Database | |||||
Get-Migrations |
@@ -0,0 +1,155 @@ | |||||
param($installPath, $toolsPath, $package, $project) | |||||
if (Get-Module | ?{ $_.Name -eq 'EntityFramework' }) | |||||
{ | |||||
Remove-Module EntityFramework | |||||
} | |||||
Import-Module (Join-Path $toolsPath EntityFramework.psd1) | |||||
# SIG # Begin signature block | |||||
# MIIa4AYJKoZIhvcNAQcCoIIa0TCCGs0CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB | |||||
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR | |||||
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUjXj4E03IfImYfKMB4CA3DfY0 | |||||
# KZmgghWCMIIEwzCCA6ugAwIBAgITMwAAAGJBL8dNiq4TJgAAAAAAYjANBgkqhkiG | |||||
# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G | |||||
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw | |||||
# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTUwMjEwMTgzMzM3 | |||||
# WhcNMTYwNTEwMTgzMzM3WjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp | |||||
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw | |||||
# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO | |||||
# OkMwRjQtMzA4Ni1ERUY4MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT | |||||
# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzpcpEnjOg16e | |||||
# fCoOjWmTxe4NOad07kj+GNlAGb0eel7cppX64uGPcUvvOPSAmxheqTjM2PBEtHGN | |||||
# qjqD6M7STHM5hsVJ0dWsK+5KEY8IbIYHIxJJrNyF5rDLJ3lKlKFVo1mgn/oZM4cM | |||||
# CgfokLOayjIvyxuJIFrFbpO+nF+PhuI3MYT+lsHKdg2ErCNF0Y3KNvmDtP9XBiRK | |||||
# iGS7pVlKB4oaueB+94csweq7LXrUTrOcP8a6hRKzNqjR4pAcybwv508B4otK+jbX | |||||
# lmE2ldsEysu9mwjN1fyDVSnWheoGZiXw3pxG9FeeXsOkNLibTtUVrjkcohq6hvb7 | |||||
# 7q4dco7enQIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFJsuiFXbFF3ayMLtg9j5aH6D | |||||
# oTnHMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw | |||||
# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz | |||||
# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG | |||||
# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv | |||||
# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI | |||||
# hvcNAQEFBQADggEBAAytzvTw859N7K64VMzmnhXGV4ZOeMnn/AJgqOUGsIrVqmth | |||||
# oqscqKq9fSnj3QlC3kyXFID7S69GmvDfylA/mu6HSe0mytg8svbYu7p6arQWe8q1 | |||||
# 2kdagS1kFPBqUySyEx5pdI0r+9WejW98lNiY4PNgoqdvFZaU4fp1tsbJ8f6rJZ7U | |||||
# tVCLOYHbDvlhU0LjKpbCgZ0VlR4Kk1SUuclxtIVETpHS5ToC1EzQRIGLsvkOxg7p | |||||
# Kf/MkuGM4R4dYIVZpPQYLeTb0o0hdnXXez1za9a9zaa/imKXyiV53z1loGFVVYqH | |||||
# AnYnCMw5M16oWdKeG7OaT+qFQL5aK0SaoZSHpuswggTsMIID1KADAgECAhMzAAAA | |||||
# ymzVMhI1xOFVAAEAAADKMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw | |||||
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN | |||||
# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp | |||||
# Z25pbmcgUENBMB4XDTE0MDQyMjE3MzkwMFoXDTE1MDcyMjE3MzkwMFowgYMxCzAJ | |||||
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k | |||||
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx | |||||
# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB | |||||
# BQADggEPADCCAQoCggEBAJZxXe0GRvqEy51bt0bHsOG0ETkDrbEVc2Cc66e2bho8 | |||||
# P/9l4zTxpqUhXlaZbFjkkqEKXMLT3FIvDGWaIGFAUzGcbI8hfbr5/hNQUmCVOlu5 | |||||
# WKV0YUGplOCtJk5MoZdwSSdefGfKTx5xhEa8HUu24g/FxifJB+Z6CqUXABlMcEU4 | |||||
# LYG0UKrFZ9H6ebzFzKFym/QlNJj4VN8SOTgSL6RrpZp+x2LR3M/tPTT4ud81MLrs | |||||
# eTKp4amsVU1Mf0xWwxMLdvEH+cxHrPuI1VKlHij6PS3Pz4SYhnFlEc+FyQlEhuFv | |||||
# 57H8rEBEpamLIz+CSZ3VlllQE1kYc/9DDK0r1H8wQGcCAwEAAaOCAWAwggFcMBMG | |||||
# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQfXuJdUI1Whr5KPM8E6KeHtcu/ | |||||
# gzBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr | |||||
# YjQyMThmMTMtNmZjYS00OTBmLTljNDctM2ZjNTU3ZGZjNDQwMB8GA1UdIwQYMBaA | |||||
# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j | |||||
# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w | |||||
# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6 | |||||
# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx | |||||
# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQB3XOvXkT3NvXuD2YWpsEOdc3wX | |||||
# yQ/tNtvHtSwbXvtUBTqDcUCBCaK3cSZe1n22bDvJql9dAxgqHSd+B+nFZR+1zw23 | |||||
# VMcoOFqI53vBGbZWMrrizMuT269uD11E9dSw7xvVTsGvDu8gm/Lh/idd6MX/YfYZ | |||||
# 0igKIp3fzXCCnhhy2CPMeixD7v/qwODmHaqelzMAUm8HuNOIbN6kBjWnwlOGZRF3 | |||||
# CY81WbnYhqgA/vgxfSz0jAWdwMHVd3Js6U1ZJoPxwrKIV5M1AHxQK7xZ/P4cKTiC | |||||
# 095Sl0UpGE6WW526Xxuj8SdQ6geV6G00DThX3DcoNZU6OJzU7WqFXQ4iEV57MIIF | |||||
# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm | |||||
# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD | |||||
# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx | |||||
# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK | |||||
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 | |||||
# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD | |||||
# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC | |||||
# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw | |||||
# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy | |||||
# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ | |||||
# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP | |||||
# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf | |||||
# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS | |||||
# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB | |||||
# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3 | |||||
# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk | |||||
# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp | |||||
# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE | |||||
# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl | |||||
# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+ | |||||
# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6 | |||||
# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW | |||||
# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb | |||||
# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu | |||||
# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ | |||||
# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB | |||||
# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord | |||||
# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t | |||||
# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh | |||||
# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I | |||||
# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0 | |||||
# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX | |||||
# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290 | |||||
# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx | |||||
# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD | |||||
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf | |||||
# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB | |||||
# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn | |||||
# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0 | |||||
# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n | |||||
# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR | |||||
# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54 | |||||
# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G | |||||
# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG | |||||
# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg | |||||
# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG | |||||
# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg | |||||
# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ | |||||
# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1 | |||||
# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB | |||||
# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z | |||||
# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB | |||||
# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i | |||||
# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r | |||||
# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct | |||||
# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F | |||||
# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo | |||||
# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0 | |||||
# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp | |||||
# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J | |||||
# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0 | |||||
# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng | |||||
# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBMgwggTE | |||||
# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD | |||||
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh | |||||
# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAAAymzVMhI1xOFV | |||||
# AAEAAADKMAkGBSsOAwIaBQCggeEwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw | |||||
# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFOrT | |||||
# ZEbL6mMRie0QxeNrtIXxNuY6MIGABgorBgEEAYI3AgEMMXIwcKBSgFAARQBuAHQA | |||||
# aQB0AHkAIABGAHIAYQBtAGUAdwBvAHIAawAgAFQAbwBvAGwAcwAgAGYAbwByACAA | |||||
# VgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAb6EagBhodHRwOi8vbXNkbi5jb20vZGF0 | |||||
# YS9lZiAwDQYJKoZIhvcNAQEBBQAEggEAgp8YIEwXo8d1C2hJS1OX9nLxFHxKTtF9 | |||||
# n3gnMoqyQ9Cq8nqapIG3LIn8gEzfUgeV3sWhZ4FsZENCqIo/bTWITq7vP5IOT1eb | |||||
# eGP0iudpum8ajts8gxWBdqQRf7+qq1TnU6knpCppn2hFwp/5qsGIMCfqaj0sqIg4 | |||||
# cswc5e443uOMXK6viAjC9ZzeLGH4HZX5eK3DnKsUsqT3dHC/aKhbvITK+pw2f5bP | |||||
# rTRjCXMmXoVs5xMcmz0jEMu5d59yFJDGk9b02FqojlvdJ/sYvMPGpAkEmPkOygwW | |||||
# /kmuemZ6sggDQKPs2trsWGa836uWYTucgQ/f+9Di+FgDc/boMGysr6GCAigwggIk | |||||
# BgkqhkiG9w0BCQYxggIVMIICEQIBATCBjjB3MQswCQYDVQQGEwJVUzETMBEGA1UE | |||||
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z | |||||
# b2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQ | |||||
# Q0ECEzMAAABiQS/HTYquEyYAAAAAAGIwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJ | |||||
# AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDMwMjE3Mjk1OFowIwYJ | |||||
# KoZIhvcNAQkEMRYEFKxtHfNR1GPWPqo0yuBPiJ3WZNX2MA0GCSqGSIb3DQEBBQUA | |||||
# BIIBAAwIulYLc715s8FIBZzA3zKD9IKqlhrzpTNBY014mi1pwl2sMpKyA/xAH4Gj | |||||
# eyo4wzSR7PT2BsYEHElYh7tx/eC45rI2mYIFqfsyqbRBxRfWQCb3pb42kix/RUJ+ | |||||
# ElTkwy7SG6c04KA8Yi/Z3uOxxlBCWfXWupHQMpIsdVI1s/v65Tn3TNyBLtPu507q | |||||
# CNcYfok3IIhcvQCd7vCUK2fnJsuLxbFFqqKoMft10iqAROREkXEhfcyLOUt4BrMh | |||||
# KN2ygSFPCIbFAGvmS84oq8p4FzJAFUL9rE8qzxzXrbEA4UglDj72mW6nXmXaHiOZ | |||||
# J+2fE3M9xcMV3gKEuSL/DiQhPaI= | |||||
# SIG # End signature block |
@@ -0,0 +1,154 @@ | |||||
param($installPath, $toolsPath, $package, $project) | |||||
Initialize-EFConfiguration $project | |||||
Add-EFProvider $project 'System.Data.SqlClient' 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' | |||||
Write-Host | |||||
Write-Host "Type 'get-help EntityFramework' to see all available Entity Framework commands." | |||||
# SIG # Begin signature block | |||||
# MIIa4AYJKoZIhvcNAQcCoIIa0TCCGs0CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB | |||||
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR | |||||
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUt8mwpdjiFmu2B4KBh+vEeQ+V | |||||
# VnSgghWCMIIEwzCCA6ugAwIBAgITMwAAAGJBL8dNiq4TJgAAAAAAYjANBgkqhkiG | |||||
# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G | |||||
# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw | |||||
# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTUwMjEwMTgzMzM3 | |||||
# WhcNMTYwNTEwMTgzMzM3WjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp | |||||
# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw | |||||
# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO | |||||
# OkMwRjQtMzA4Ni1ERUY4MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT | |||||
# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzpcpEnjOg16e | |||||
# fCoOjWmTxe4NOad07kj+GNlAGb0eel7cppX64uGPcUvvOPSAmxheqTjM2PBEtHGN | |||||
# qjqD6M7STHM5hsVJ0dWsK+5KEY8IbIYHIxJJrNyF5rDLJ3lKlKFVo1mgn/oZM4cM | |||||
# CgfokLOayjIvyxuJIFrFbpO+nF+PhuI3MYT+lsHKdg2ErCNF0Y3KNvmDtP9XBiRK | |||||
# iGS7pVlKB4oaueB+94csweq7LXrUTrOcP8a6hRKzNqjR4pAcybwv508B4otK+jbX | |||||
# lmE2ldsEysu9mwjN1fyDVSnWheoGZiXw3pxG9FeeXsOkNLibTtUVrjkcohq6hvb7 | |||||
# 7q4dco7enQIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFJsuiFXbFF3ayMLtg9j5aH6D | |||||
# oTnHMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw | |||||
# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz | |||||
# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG | |||||
# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv | |||||
# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI | |||||
# hvcNAQEFBQADggEBAAytzvTw859N7K64VMzmnhXGV4ZOeMnn/AJgqOUGsIrVqmth | |||||
# oqscqKq9fSnj3QlC3kyXFID7S69GmvDfylA/mu6HSe0mytg8svbYu7p6arQWe8q1 | |||||
# 2kdagS1kFPBqUySyEx5pdI0r+9WejW98lNiY4PNgoqdvFZaU4fp1tsbJ8f6rJZ7U | |||||
# tVCLOYHbDvlhU0LjKpbCgZ0VlR4Kk1SUuclxtIVETpHS5ToC1EzQRIGLsvkOxg7p | |||||
# Kf/MkuGM4R4dYIVZpPQYLeTb0o0hdnXXez1za9a9zaa/imKXyiV53z1loGFVVYqH | |||||
# AnYnCMw5M16oWdKeG7OaT+qFQL5aK0SaoZSHpuswggTsMIID1KADAgECAhMzAAAA | |||||
# ymzVMhI1xOFVAAEAAADKMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw | |||||
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN | |||||
# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp | |||||
# Z25pbmcgUENBMB4XDTE0MDQyMjE3MzkwMFoXDTE1MDcyMjE3MzkwMFowgYMxCzAJ | |||||
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k | |||||
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx | |||||
# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB | |||||
# BQADggEPADCCAQoCggEBAJZxXe0GRvqEy51bt0bHsOG0ETkDrbEVc2Cc66e2bho8 | |||||
# P/9l4zTxpqUhXlaZbFjkkqEKXMLT3FIvDGWaIGFAUzGcbI8hfbr5/hNQUmCVOlu5 | |||||
# WKV0YUGplOCtJk5MoZdwSSdefGfKTx5xhEa8HUu24g/FxifJB+Z6CqUXABlMcEU4 | |||||
# LYG0UKrFZ9H6ebzFzKFym/QlNJj4VN8SOTgSL6RrpZp+x2LR3M/tPTT4ud81MLrs | |||||
# eTKp4amsVU1Mf0xWwxMLdvEH+cxHrPuI1VKlHij6PS3Pz4SYhnFlEc+FyQlEhuFv | |||||
# 57H8rEBEpamLIz+CSZ3VlllQE1kYc/9DDK0r1H8wQGcCAwEAAaOCAWAwggFcMBMG | |||||
# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBQfXuJdUI1Whr5KPM8E6KeHtcu/ | |||||
# gzBRBgNVHREESjBIpEYwRDENMAsGA1UECxMETU9QUjEzMDEGA1UEBRMqMzE1OTUr | |||||
# YjQyMThmMTMtNmZjYS00OTBmLTljNDctM2ZjNTU3ZGZjNDQwMB8GA1UdIwQYMBaA | |||||
# FMsR6MrStBZYAck3LjMWFrlMmgofMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9j | |||||
# cmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY0NvZFNpZ1BDQV8w | |||||
# OC0zMS0yMDEwLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0dHA6 | |||||
# Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljQ29kU2lnUENBXzA4LTMx | |||||
# LTIwMTAuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQB3XOvXkT3NvXuD2YWpsEOdc3wX | |||||
# yQ/tNtvHtSwbXvtUBTqDcUCBCaK3cSZe1n22bDvJql9dAxgqHSd+B+nFZR+1zw23 | |||||
# VMcoOFqI53vBGbZWMrrizMuT269uD11E9dSw7xvVTsGvDu8gm/Lh/idd6MX/YfYZ | |||||
# 0igKIp3fzXCCnhhy2CPMeixD7v/qwODmHaqelzMAUm8HuNOIbN6kBjWnwlOGZRF3 | |||||
# CY81WbnYhqgA/vgxfSz0jAWdwMHVd3Js6U1ZJoPxwrKIV5M1AHxQK7xZ/P4cKTiC | |||||
# 095Sl0UpGE6WW526Xxuj8SdQ6geV6G00DThX3DcoNZU6OJzU7WqFXQ4iEV57MIIF | |||||
# vDCCA6SgAwIBAgIKYTMmGgAAAAAAMTANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZIm | |||||
# iZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQD | |||||
# EyRNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTAwODMx | |||||
# MjIxOTMyWhcNMjAwODMxMjIyOTMyWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK | |||||
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 | |||||
# IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBD | |||||
# QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJyWVwZMGS/HZpgICBC | |||||
# mXZTbD4b1m/My/Hqa/6XFhDg3zp0gxq3L6Ay7P/ewkJOI9VyANs1VwqJyq4gSfTw | |||||
# aKxNS42lvXlLcZtHB9r9Jd+ddYjPqnNEf9eB2/O98jakyVxF3K+tPeAoaJcap6Vy | |||||
# c1bxF5Tk/TWUcqDWdl8ed0WDhTgW0HNbBbpnUo2lsmkv2hkL/pJ0KeJ2L1TdFDBZ | |||||
# +NKNYv3LyV9GMVC5JxPkQDDPcikQKCLHN049oDI9kM2hOAaFXE5WgigqBTK3S9dP | |||||
# Y+fSLWLxRT3nrAgA9kahntFbjCZT6HqqSvJGzzc8OJ60d1ylF56NyxGPVjzBrAlf | |||||
# A9MCAwEAAaOCAV4wggFaMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMsR6MrS | |||||
# tBZYAck3LjMWFrlMmgofMAsGA1UdDwQEAwIBhjASBgkrBgEEAYI3FQEEBQIDAQAB | |||||
# MCMGCSsGAQQBgjcVAgQWBBT90TFO0yaKleGYYDuoMW+mPLzYLTAZBgkrBgEEAYI3 | |||||
# FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQOrIJgQFYnl+UlE/wq4QpTlVnk | |||||
# pDBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtp | |||||
# L2NybC9wcm9kdWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEE | |||||
# SDBGMEQGCCsGAQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2Nl | |||||
# cnRzL01pY3Jvc29mdFJvb3RDZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAgEAWTk+ | |||||
# fyZGr+tvQLEytWrrDi9uqEn361917Uw7LddDrQv+y+ktMaMjzHxQmIAhXaw9L0y6 | |||||
# oqhWnONwu7i0+Hm1SXL3PupBf8rhDBdpy6WcIC36C1DEVs0t40rSvHDnqA2iA6VW | |||||
# 4LiKS1fylUKc8fPv7uOGHzQ8uFaa8FMjhSqkghyT4pQHHfLiTviMocroE6WRTsgb | |||||
# 0o9ylSpxbZsa+BzwU9ZnzCL/XB3Nooy9J7J5Y1ZEolHN+emjWFbdmwJFRC9f9Nqu | |||||
# 1IIybvyklRPk62nnqaIsvsgrEA5ljpnb9aL6EiYJZTiU8XofSrvR4Vbo0HiWGFzJ | |||||
# NRZf3ZMdSY4tvq00RBzuEBUaAF3dNVshzpjHCe6FDoxPbQ4TTj18KUicctHzbMrB | |||||
# 7HCjV5JXfZSNoBtIA1r3z6NnCnSlNu0tLxfI5nI3EvRvsTxngvlSso0zFmUeDord | |||||
# EN5k9G/ORtTTF+l5xAS00/ss3x+KnqwK+xMnQK3k+eGpf0a7B2BHZWBATrBC7E7t | |||||
# s3Z52Ao0CW0cgDEf4g5U3eWh++VHEK1kmP9QFi58vwUheuKVQSdpw5OPlcmN2Jsh | |||||
# rg1cnPCiroZogwxqLbt2awAdlq3yFnv2FoMkuYjPaqhHMS+a3ONxPdcAfmJH0c6I | |||||
# ybgY+g5yjcGjPa8CQGr/aZuW4hCoELQ3UAjWwz0wggYHMIID76ADAgECAgphFmg0 | |||||
# AAAAAAAcMA0GCSqGSIb3DQEBBQUAMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX | |||||
# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290 | |||||
# IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNzA0MDMxMjUzMDlaFw0yMTA0MDMx | |||||
# MzAzMDlaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD | |||||
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf | |||||
# BgNVBAMTGE1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQTCCASIwDQYJKoZIhvcNAQEB | |||||
# BQADggEPADCCAQoCggEBAJ+hbLHf20iSKnxrLhnhveLjxZlRI1Ctzt0YTiQP7tGn | |||||
# 0UytdDAgEesH1VSVFUmUG0KSrphcMCbaAGvoe73siQcP9w4EmPCJzB/LMySHnfL0 | |||||
# Zxws/HvniB3q506jocEjU8qN+kXPCdBer9CwQgSi+aZsk2fXKNxGU7CG0OUoRi4n | |||||
# rIZPVVIM5AMs+2qQkDBuh/NZMJ36ftaXs+ghl3740hPzCLdTbVK0RZCfSABKR2YR | |||||
# JylmqJfk0waBSqL5hKcRRxQJgp+E7VV4/gGaHVAIhQAQMEbtt94jRrvELVSfrx54 | |||||
# QTF3zJvfO4OToWECtR0Nsfz3m7IBziJLVP/5BcPCIAsCAwEAAaOCAaswggGnMA8G | |||||
# A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCM0+NlSRnAK7UD7dvuzK7DDNbMPMAsG | |||||
# A1UdDwQEAwIBhjAQBgkrBgEEAYI3FQEEAwIBADCBmAYDVR0jBIGQMIGNgBQOrIJg | |||||
# QFYnl+UlE/wq4QpTlVnkpKFjpGEwXzETMBEGCgmSJomT8ixkARkWA2NvbTEZMBcG | |||||
# CgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UEAxMkTWljcm9zb2Z0IFJvb3Qg | |||||
# Q2VydGlmaWNhdGUgQXV0aG9yaXR5ghB5rRahSqClrUxzWPQHEy5lMFAGA1UdHwRJ | |||||
# MEcwRaBDoEGGP2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1 | |||||
# Y3RzL21pY3Jvc29mdHJvb3RjZXJ0LmNybDBUBggrBgEFBQcBAQRIMEYwRAYIKwYB | |||||
# BQUHMAKGOGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljcm9z | |||||
# b2Z0Um9vdENlcnQuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEB | |||||
# BQUAA4ICAQAQl4rDXANENt3ptK132855UU0BsS50cVttDBOrzr57j7gu1BKijG1i | |||||
# uFcCy04gE1CZ3XpA4le7r1iaHOEdAYasu3jyi9DsOwHu4r6PCgXIjUji8FMV3U+r | |||||
# kuTnjWrVgMHmlPIGL4UD6ZEqJCJw+/b85HiZLg33B+JwvBhOnY5rCnKVuKE5nGct | |||||
# xVEO6mJcPxaYiyA/4gcaMvnMMUp2MT0rcgvI6nA9/4UKE9/CCmGO8Ne4F+tOi3/F | |||||
# NSteo7/rvH0LQnvUU3Ih7jDKu3hlXFsBFwoUDtLaFJj1PLlmWLMtL+f5hYbMUVbo | |||||
# nXCUbKw5TNT2eb+qGHpiKe+imyk0BncaYsk9Hm0fgvALxyy7z0Oz5fnsfbXjpKh0 | |||||
# NbhOxXEjEiZ2CzxSjHFaRkMUvLOzsE1nyJ9C/4B5IYCeFTBm6EISXhrIniIh0EPp | |||||
# K+m79EjMLNTYMoBMJipIJF9a6lbvpt6Znco6b72BJ3QGEe52Ib+bgsEnVLaxaj2J | |||||
# oXZhtG6hE6a/qkfwEm/9ijJssv7fUciMI8lmvZ0dhxJkAj0tr1mPuOQh5bWwymO0 | |||||
# eFQF1EEuUKyUsKV4q7OglnUa2ZKHE3UiLzKoCG6gW4wlv6DvhMoh1useT8ma7kng | |||||
# 9wFlb4kLfchpyOZu6qeXzjEp/w7FW1zYTRuh2Povnj8uVRZryROj/TGCBMgwggTE | |||||
# AgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD | |||||
# VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xIzAh | |||||
# BgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBAhMzAAAAymzVMhI1xOFV | |||||
# AAEAAADKMAkGBSsOAwIaBQCggeEwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQw | |||||
# HAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFJiz | |||||
# f4JawBv4s6ihwSKoeZTRDcAvMIGABgorBgEEAYI3AgEMMXIwcKBSgFAARQBuAHQA | |||||
# aQB0AHkAIABGAHIAYQBtAGUAdwBvAHIAawAgAFQAbwBvAGwAcwAgAGYAbwByACAA | |||||
# VgBpAHMAdQBhAGwAIABTAHQAdQBkAGkAb6EagBhodHRwOi8vbXNkbi5jb20vZGF0 | |||||
# YS9lZiAwDQYJKoZIhvcNAQEBBQAEggEAFy52TLBcmieavvWab1nArTK05hXGrx+n | |||||
# qn/Aq3b4WpCD3Kotg6ZcmMDgFoBR3CCxOi8DzXowNjnX4aGMnUgGR8oczgU0DVRN | |||||
# 6e9fIaYthchMgS/bDZEyPZ39H2mSuNPkM4rBiB5K0CkQQgjwEKYCRImwSlnBu0jY | |||||
# nH1J/jF0RnYFZ1uxmY8jpWA/km5kj3fSTwC8CPn24I6H520Cka0CiBGl6iNLRAK+ | |||||
# rOokn9Ymw9dbttXINl8WpNCBIR6XBAgBhlyJa6JmTceoXZvIGu1h8KVCWwDv+lKT | |||||
# uRLEKWdVQ5cgNth3csHOUQnBC5FN6TxY9dqozIwcjNUwwOOsqrEW5KGCAigwggIk | |||||
# BgkqhkiG9w0BCQYxggIVMIICEQIBATCBjjB3MQswCQYDVQQGEwJVUzETMBEGA1UE | |||||
# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z | |||||
# b2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQ | |||||
# Q0ECEzMAAABiQS/HTYquEyYAAAAAAGIwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJ | |||||
# AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE1MDMwMjE3Mjk1OFowIwYJ | |||||
# KoZIhvcNAQkEMRYEFAMe6WzqHaLPBigGoS/gaG25ANUpMA0GCSqGSIb3DQEBBQUA | |||||
# BIIBAGFxF739EOC9CNxIDxocqE2PugMRxvX1rrmsvfwnrhaZmL9XqeWgsS8SqJq3 | |||||
# GOASzoTwvkyAE9qavr0o34a84HDSVbapNEribsu6ILaZpd0ucFGbk4L3QcSODtvH | |||||
# XZuCh0cl3ohJT8ShQBNmN9TkqlhnP9AYWcoNaefJkozg7xc3m/CsGkcbSHNk0Bvm | |||||
# IF1zG1axnKwNFXopJLnbqxqajBcH3VaCTo9cEshs9qaUy2NZ4RZJztYnnBQsGvv8 | |||||
# go2qsBgLcALFpVHrSX6yKuH8XVwR+lHofY7nZHs0TLi55SFbpJK+53BCWeH4OK85 | |||||
# wQ6quf2TAX7dc3ct2zrY3TWhf7Q= | |||||
# SIG # End signature block |
@@ -0,0 +1,76 @@ | |||||
<?xml version="1.0"?> | |||||
<doc> | |||||
<assembly> | |||||
<name>ExcelNumberFormat</name> | |||||
</assembly> | |||||
<members> | |||||
<member name="M:ExcelNumberFormat.Formatter.FormatThousands(System.String,System.Boolean,System.Boolean,System.Collections.Generic.List{System.String},System.Globalization.CultureInfo,System.Text.StringBuilder)"> | |||||
<summary> | |||||
Prints right-aligned, left-padded integer before the decimal separator. With optional most-significant zero. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Formatter.FormatDecimals(System.String,System.Collections.Generic.List{System.String},System.Text.StringBuilder)"> | |||||
<summary> | |||||
Prints left-aligned, right-padded integer after the decimal separator. Does not print significant zero. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Formatter.FormatDenominator(System.String,System.Collections.Generic.List{System.String},System.Text.StringBuilder)"> | |||||
<summary> | |||||
Prints left-aligned, left-padded fraction integer denominator. | |||||
Assumes tokens contain only placeholders, valueString has fewer or equal number of digits as tokens. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Formatter.GetLeftAlignedValueDigit(System.String,System.String,System.Int32,System.Boolean,System.Int32@)"> | |||||
<summary> | |||||
Returns the first digit from valueString. If the token is '?' | |||||
returns the first significant digit from valueString, or '0' if there are no significant digits. | |||||
The out valueIndex parameter contains the offset to the next digit in valueString. | |||||
</summary> | |||||
</member> | |||||
<member name="T:ExcelNumberFormat.NumberFormat"> | |||||
<summary> | |||||
Parse ECMA-376 number format strings and format values like Excel and other spreadsheet softwares. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.NumberFormat.#ctor(System.String)"> | |||||
<summary> | |||||
Initializes a new instance of the <see cref="T:ExcelNumberFormat.NumberFormat"/> class. | |||||
</summary> | |||||
<param name="formatString">The number format string.</param> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.IsValid"> | |||||
<summary> | |||||
Gets a value indicating whether the number format string is valid. | |||||
</summary> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.FormatString"> | |||||
<summary> | |||||
Gets the number format string. | |||||
</summary> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.IsDateTimeFormat"> | |||||
<summary> | |||||
Gets a value indicating whether the format represents a DateTime | |||||
</summary> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.IsTimeSpanFormat"> | |||||
<summary> | |||||
Gets a value indicating whether the format represents a TimeSpan | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.NumberFormat.Format(System.Object,System.Globalization.CultureInfo)"> | |||||
<summary> | |||||
Formats a value with this number format in a specified culture. | |||||
</summary> | |||||
<param name="value">The value to format.</param> | |||||
<param name="culture">The culture to use for formatting.</param> | |||||
<returns>The formatted string.</returns> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Parser.ParseNumberTokens(System.Collections.Generic.List{System.String},System.Int32,System.Collections.Generic.List{System.String}@,System.Boolean@,System.Collections.Generic.List{System.String}@)"> | |||||
<summary> | |||||
Parses as many placeholders and literals needed to format a number with optional decimals. | |||||
Returns number of tokens parsed, or 0 if the tokens didn't form a number. | |||||
</summary> | |||||
</member> | |||||
</members> | |||||
</doc> |
@@ -0,0 +1,76 @@ | |||||
<?xml version="1.0"?> | |||||
<doc> | |||||
<assembly> | |||||
<name>ExcelNumberFormat</name> | |||||
</assembly> | |||||
<members> | |||||
<member name="M:ExcelNumberFormat.Formatter.FormatThousands(System.String,System.Boolean,System.Boolean,System.Collections.Generic.List{System.String},System.Globalization.CultureInfo,System.Text.StringBuilder)"> | |||||
<summary> | |||||
Prints right-aligned, left-padded integer before the decimal separator. With optional most-significant zero. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Formatter.FormatDecimals(System.String,System.Collections.Generic.List{System.String},System.Text.StringBuilder)"> | |||||
<summary> | |||||
Prints left-aligned, right-padded integer after the decimal separator. Does not print significant zero. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Formatter.FormatDenominator(System.String,System.Collections.Generic.List{System.String},System.Text.StringBuilder)"> | |||||
<summary> | |||||
Prints left-aligned, left-padded fraction integer denominator. | |||||
Assumes tokens contain only placeholders, valueString has fewer or equal number of digits as tokens. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Formatter.GetLeftAlignedValueDigit(System.String,System.String,System.Int32,System.Boolean,System.Int32@)"> | |||||
<summary> | |||||
Returns the first digit from valueString. If the token is '?' | |||||
returns the first significant digit from valueString, or '0' if there are no significant digits. | |||||
The out valueIndex parameter contains the offset to the next digit in valueString. | |||||
</summary> | |||||
</member> | |||||
<member name="T:ExcelNumberFormat.NumberFormat"> | |||||
<summary> | |||||
Parse ECMA-376 number format strings and format values like Excel and other spreadsheet softwares. | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.NumberFormat.#ctor(System.String)"> | |||||
<summary> | |||||
Initializes a new instance of the <see cref="T:ExcelNumberFormat.NumberFormat"/> class. | |||||
</summary> | |||||
<param name="formatString">The number format string.</param> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.IsValid"> | |||||
<summary> | |||||
Gets a value indicating whether the number format string is valid. | |||||
</summary> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.FormatString"> | |||||
<summary> | |||||
Gets the number format string. | |||||
</summary> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.IsDateTimeFormat"> | |||||
<summary> | |||||
Gets a value indicating whether the format represents a DateTime | |||||
</summary> | |||||
</member> | |||||
<member name="P:ExcelNumberFormat.NumberFormat.IsTimeSpanFormat"> | |||||
<summary> | |||||
Gets a value indicating whether the format represents a TimeSpan | |||||
</summary> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.NumberFormat.Format(System.Object,System.Globalization.CultureInfo)"> | |||||
<summary> | |||||
Formats a value with this number format in a specified culture. | |||||
</summary> | |||||
<param name="value">The value to format.</param> | |||||
<param name="culture">The culture to use for formatting.</param> | |||||
<returns>The formatted string.</returns> | |||||
</member> | |||||
<member name="M:ExcelNumberFormat.Parser.ParseNumberTokens(System.Collections.Generic.List{System.String},System.Int32,System.Collections.Generic.List{System.String}@,System.Boolean@,System.Collections.Generic.List{System.String}@)"> | |||||
<summary> | |||||
Parses as many placeholders and literals needed to format a number with optional decimals. | |||||
Returns number of tokens parsed, or 0 if the tokens didn't form a number. | |||||
</summary> | |||||
</member> | |||||
</members> | |||||
</doc> |
@@ -0,0 +1,61 @@ | |||||
Please see https://docs.hangfire.io for more information on using Hangfire. The | |||||
`Hangfire` meta-package is using SQL Server as a job storage and intended to run | |||||
in any OWIN-based web application when targeting full .NET Framework, or ASP.NET | |||||
Core web application on .NET Core. | |||||
+-----------------------------------------------------------------------------+ | |||||
| !!! DASHBOARD REQUIRES AUTH CONFIGURATION !!! | | |||||
+-----------------------------------------------------------------------------+ | |||||
By default, ONLY LOCAL requests are allowed to access the Dashboard. Please | |||||
see the `Configuring Dashboard authorization` section in Hangfire documentation: | |||||
https://docs.hangfire.io/en/latest/configuration/using-dashboard.html#configuring-authorization | |||||
Sample ASP.NET Core Startup class | |||||
--------------------------------- | |||||
using Microsoft.AspNetCore.Builder; | |||||
using Microsoft.Extensions.DependencyInjection; | |||||
using Hangfire; | |||||
namespace MyWebApplication | |||||
{ | |||||
public class Startup | |||||
{ | |||||
public void ConfigureServices(IServiceCollection services) | |||||
{ | |||||
services.AddHangfire(x => x.UseSqlServerStorage("<connection string>")); | |||||
services.AddHangfireServer(); | |||||
} | |||||
public void Configure(IApplicationBuilder app) | |||||
{ | |||||
app.UseHangfireDashboard(); | |||||
} | |||||
} | |||||
} | |||||
Sample OWIN Startup class | |||||
------------------------- | |||||
using Hangfire; | |||||
using Microsoft.Owin; | |||||
using Owin; | |||||
[assembly: OwinStartup(typeof(MyWebApplication.Startup))] | |||||
namespace MyWebApplication | |||||
{ | |||||
public class Startup | |||||
{ | |||||
public void Configuration(IAppBuilder app) | |||||
{ | |||||
GlobalConfiguration.Configuration | |||||
.UseSqlServerStorage("<name or connection string>"); | |||||
app.UseHangfireDashboard(); | |||||
app.UseHangfireServer(); | |||||
} | |||||
} | |||||
} |