--- /dev/null
+\feff\r
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio Express 2012 for Windows Desktop\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stratum", "StratumLibrary\Stratum.csproj", "{27F0C6C3-DCD6-4588-AFBB-DCE22306F5F8}"\r
+EndProject\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StratumTest", "StratumTest\StratumTest.csproj", "{FB61065F-93BA-497B-A2D5-3574D23B0B62}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Any CPU = Debug|Any CPU\r
+ Release|Any CPU = Release|Any CPU\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {27F0C6C3-DCD6-4588-AFBB-DCE22306F5F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {27F0C6C3-DCD6-4588-AFBB-DCE22306F5F8}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {27F0C6C3-DCD6-4588-AFBB-DCE22306F5F8}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {27F0C6C3-DCD6-4588-AFBB-DCE22306F5F8}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {FB61065F-93BA-497B-A2D5-3574D23B0B62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {FB61065F-93BA-497B-A2D5-3574D23B0B62}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {FB61065F-93BA-497B-A2D5-3574D23B0B62}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {FB61065F-93BA-497B-A2D5-3574D23B0B62}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+\feffusing System;\r
+\r
+namespace Stratum\r
+{\r
+ /// <summary>\r
+ /// Required to expose a method to the Stratum service.\r
+ /// </summary>\r
+ [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]\r
+ public sealed class StratumMethodAttribute : Attribute\r
+ {\r
+ readonly string stratumMethodName;\r
+\r
+ /// <summary>\r
+ /// Required to expose a method to the Stratum service.\r
+ /// </summary>\r
+ /// <param name="stratumMethodName">Lets you specify the method name as it will be referred to by JsonRpc.</param>\r
+ public StratumMethodAttribute(string MethodName = "")\r
+ {\r
+ this.stratumMethodName = MethodName;\r
+ }\r
+\r
+ public string StratumMethodName\r
+ {\r
+ get { return stratumMethodName; }\r
+ }\r
+ }\r
+}\r
--- /dev/null
+\feffusing System.Reflection;\r
+using System.Runtime.CompilerServices;\r
+using System.Runtime.InteropServices;\r
+\r
+// Управление общими сведениями о сборке осуществляется с помощью \r
+// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,\r
+// связанные со сборкой.\r
+[assembly: AssemblyTitle("ClassLibrary1")]\r
+[assembly: AssemblyDescription("")]\r
+[assembly: AssemblyConfiguration("")]\r
+[assembly: AssemblyCompany("")]\r
+[assembly: AssemblyProduct("ClassLibrary1")]\r
+[assembly: AssemblyCopyright("Copyright © 2015")]\r
+[assembly: AssemblyTrademark("")]\r
+[assembly: AssemblyCulture("")]\r
+\r
+// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми \r
+// для COM-компонентов. Если требуется обратиться к типу в этой сборке через \r
+// COM, задайте атрибуту ComVisible значение TRUE для этого типа.\r
+[assembly: ComVisible(false)]\r
+\r
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM\r
+[assembly: Guid("75774b8a-8cf8-44ce-bd6b-6a1254d0cbb5")]\r
+\r
+// Сведения о версии сборки состоят из следующих четырех значений:\r
+//\r
+// Основной номер версии\r
+// Дополнительный номер версии \r
+// Номер построения\r
+// Редакция\r
+//\r
+// Можно задать все значения или принять номер построения и номер редакции по умолчанию, \r
+// используя "*", как показано ниже:\r
+// [assembly: AssemblyVersion("1.0.*")]\r
+[assembly: AssemblyVersion("1.0.0.0")]\r
+[assembly: AssemblyFileVersion("1.0.0.0")]\r
--- /dev/null
+\feffusing System;\r
+using System.Net;\r
+using Newtonsoft.Json.Linq;\r
+\r
+using System.Text;\r
+using System.Threading;\r
+using System.Net.Sockets;\r
+\r
+namespace Stratum\r
+{\r
+ public class Stratum\r
+ {\r
+ private Socket client;\r
+\r
+ /// <summary>\r
+ /// Constructor of Stratum interface class\r
+ /// </summary>\r
+ /// <param name="ipAddress">IPv4 address</param>\r
+ /// <param name="port">Port number</param>\r
+ public Stratum(string ipAddress, int port)\r
+ {\r
+ // End point for the remote device\r
+ IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ipAddress), port);\r
+\r
+ // Create TCP socket\r
+ client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);\r
+\r
+ // Connect done event\r
+ ManualResetEvent connectDone = new ManualResetEvent(false);\r
+\r
+ Action<IAsyncResult> ConnectCallback = null;\r
+ ConnectCallback = (IAsyncResult ar) =>\r
+ {\r
+ // Retrieve socket from the state object\r
+ Socket cli = (Socket)ar.AsyncState;\r
+\r
+ // Complete the connection\r
+ cli.EndConnect(ar);\r
+\r
+ // Signal that connection has been established\r
+ connectDone.Set();\r
+ };\r
+\r
+ // Connect to the remote device\r
+ client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client);\r
+\r
+ // Wait for signal\r
+ connectDone.WaitOne();\r
+ }\r
+\r
+ ~Stratum()\r
+ {\r
+ // Release the socket\r
+ client.Shutdown(SocketShutdown.Both);\r
+ client.Close();\r
+ }\r
+\r
+ private void Send(Socket client, String data)\r
+ {\r
+ // Send done event\r
+ ManualResetEvent sendDone = new ManualResetEvent(false);\r
+\r
+ Action<IAsyncResult> SendCallback = null;\r
+ SendCallback = (IAsyncResult ar) =>\r
+ {\r
+ // Retrieve the socket from the state object\r
+ Socket cli = (Socket)ar.AsyncState;\r
+\r
+ // Complete sending the data to the remote device\r
+ int bytesSent = cli.EndSend(ar);\r
+\r
+ // Signal that all bytes have been sent\r
+ sendDone.Set();\r
+ };\r
+\r
+ // Convert the string data to byte data using ASCII encoding.\r
+ byte[] byteData = Encoding.ASCII.GetBytes(data);\r
+\r
+ // Begin sending the data to the remote device.\r
+ client.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallback), client);\r
+\r
+ // Wait for signal\r
+ sendDone.WaitOne();\r
+ }\r
+\r
+ /// <summary>\r
+ /// Invoke remote method\r
+ /// </summary>\r
+ /// <typeparam name="T">Return type</typeparam>\r
+ /// <param name="method">Method name</param>\r
+ /// <param name="arg">Argument</param>\r
+ /// <returns>StratumResponse object</returns>\r
+ public StratumResponse<T> Invoke<T>(string method, object arg)\r
+ {\r
+ var req = new StratumRequest()\r
+ {\r
+ Method = method,\r
+ Params = new object[] { arg }\r
+ };\r
+ return Invoke<T>(req);\r
+ }\r
+\r
+ /// <summary>\r
+ /// Invoke remote method\r
+ /// </summary>\r
+ /// <typeparam name="T">Return type</typeparam>\r
+ /// <param name="method">Method name</param>\r
+ /// <param name="args">Arguments array</param>\r
+ /// <returns>StratumResponse object</returns>\r
+ public StratumResponse<T> Invoke<T>(string method, object[] args)\r
+ {\r
+ var req = new StratumRequest()\r
+ {\r
+ Method = method,\r
+ Params = args\r
+ };\r
+ return Invoke<T>(req);\r
+ }\r
+\r
+ private StratumResponse<T> Invoke<T>(StratumRequest stratumReq)\r
+ {\r
+ StratumResponse<T> rjson = null;\r
+\r
+ // Serialize stratumReq into JSON string\r
+ var reqJSON = Newtonsoft.Json.JsonConvert.SerializeObject(stratumReq) + '\n';\r
+\r
+ // Send JSON data to the remote device.\r
+ Send(client, reqJSON);\r
+\r
+ // Create the reading state object.\r
+ StratumReadState state = new StratumReadState(client);\r
+\r
+ // Receive event\r
+ ManualResetEvent receiveDone = new ManualResetEvent(false);\r
+\r
+ Action<IAsyncResult> ReceiveCallback = null;\r
+ ReceiveCallback = (IAsyncResult ar) =>\r
+ {\r
+ // Retrieve the state object and the client socket \r
+ // from the asynchronous state object.\r
+ StratumReadState st = (StratumReadState)ar.AsyncState;\r
+ Socket ci = st.workSocket;\r
+\r
+ // Read data from the remote device.\r
+ int bytesRead = ci.EndReceive(ar);\r
+\r
+ if (bytesRead <= 0)\r
+ return;\r
+\r
+ lock (st.sb)\r
+ {\r
+ // There might be more data, so store the data received so far.\r
+ st.sb.Append(Encoding.ASCII.GetString(st.buffer, 0, bytesRead));\r
+\r
+ if (st.buffer[bytesRead - 1] != '\n')\r
+ {\r
+ // No EOL at the end of buffer, going to get the rest of data\r
+ ci.BeginReceive(st.buffer, 0, StratumReadState.BufferSize, SocketFlags.None, new AsyncCallback(ReceiveCallback), st);\r
+ }\r
+ else\r
+ {\r
+ string strResponse = st.sb.ToString();\r
+\r
+ // Deserialize the response\r
+ rjson = Newtonsoft.Json.JsonConvert.DeserializeObject<StratumResponse<T>>(strResponse);\r
+\r
+ if (rjson == null)\r
+ {\r
+ try\r
+ {\r
+ JObject jo = Newtonsoft.Json.JsonConvert.DeserializeObject(strResponse) as JObject;\r
+ throw new Exception(jo["Error"].ToString());\r
+ }\r
+ catch (Newtonsoft.Json.JsonSerializationException)\r
+ {\r
+ throw new Exception("Inconsistent or empty response");\r
+ }\r
+ }\r
+\r
+ // Signal that all bytes have been received.\r
+ receiveDone.Set();\r
+ }\r
+ }\r
+ };\r
+\r
+ // Begin receiving the data from the remote device.\r
+ client.BeginReceive(state.buffer, 0, StratumReadState.BufferSize, SocketFlags.None, new AsyncCallback(ReceiveCallback), state);\r
+ receiveDone.WaitOne();\r
+\r
+ return rjson;\r
+ }\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+\feff<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />\r
+ <PropertyGroup>\r
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+ <ProjectGuid>{27F0C6C3-DCD6-4588-AFBB-DCE22306F5F8}</ProjectGuid>\r
+ <OutputType>Library</OutputType>\r
+ <AppDesignerFolder>Properties</AppDesignerFolder>\r
+ <RootNamespace>Stratum</RootNamespace>\r
+ <AssemblyName>Stratum</AssemblyName>\r
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+ <FileAlignment>512</FileAlignment>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+ <DebugSymbols>true</DebugSymbols>\r
+ <DebugType>full</DebugType>\r
+ <Optimize>false</Optimize>\r
+ <OutputPath>bin\Debug\</OutputPath>\r
+ <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+ <DebugType>pdbonly</DebugType>\r
+ <Optimize>true</Optimize>\r
+ <OutputPath>bin\Release\</OutputPath>\r
+ <DefineConstants>TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <ItemGroup>\r
+ <Reference Include="Newtonsoft.Json">\r
+ <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>\r
+ </Reference>\r
+ <Reference Include="System" />\r
+ <Reference Include="System.Core" />\r
+ <Reference Include="System.Net" />\r
+ <Reference Include="Microsoft.CSharp" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <Compile Include="Attributes.cs" />\r
+ <Compile Include="Stratum.cs" />\r
+ <Compile Include="Properties\AssemblyInfo.cs" />\r
+ <Compile Include="StratumException.cs" />\r
+ <Compile Include="StratumRequest.cs" />\r
+ <Compile Include="StratumResponse.cs" />\r
+ <Compile Include="StratumReadState.cs" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <None Include="packages.config" />\r
+ </ItemGroup>\r
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+ Other similar extension points exist, see Microsoft.Common.targets.\r
+ <Target Name="BeforeBuild">\r
+ </Target>\r
+ <Target Name="AfterBuild">\r
+ </Target>\r
+ -->\r
+</Project>
\ No newline at end of file
--- /dev/null
+\feffusing System;\r
+using Newtonsoft.Json;\r
+\r
+namespace Stratum\r
+{\r
+ [Serializable]\r
+ [JsonObject(MemberSerialization.OptIn)]\r
+ public class StratumException : System.ApplicationException\r
+ {\r
+ /// <summary>\r
+ /// Error code\r
+ /// </summary>\r
+ [JsonProperty]\r
+ public int code { get; set; }\r
+\r
+ /// <summary>\r
+ /// Human readable error message\r
+ /// </summary>\r
+ [JsonProperty]\r
+ public string message { get; set; }\r
+\r
+ [JsonProperty]\r
+ public object data { get; set; }\r
+\r
+ public StratumException(int code, string message, object data)\r
+ {\r
+ this.code = code;\r
+ this.message = message;\r
+ this.data = data;\r
+ }\r
+ }\r
+}\r
--- /dev/null
+\feffusing System.Text;\r
+\r
+using System.Net.Sockets;\r
+\r
+namespace Stratum\r
+{\r
+ /// <summary>\r
+ /// Represents internal state of Stratum interface\r
+ /// </summary>\r
+ class StratumReadState\r
+ {\r
+ public StratumReadState(Socket client)\r
+ {\r
+ workSocket = client;\r
+ }\r
+\r
+ /// <summary>\r
+ /// Client socket\r
+ /// </summary>\r
+ public Socket workSocket = null;\r
+ /// <summary>\r
+ /// Receive buffer size\r
+ /// </summary>\r
+ public const int BufferSize = 8;\r
+ /// <summary>\r
+ /// Receive buffer\r
+ /// </summary>\r
+ public byte[] buffer = new byte[BufferSize];\r
+ /// <summary>\r
+ /// Received data string\r
+ /// </summary>\r
+ public StringBuilder sb = new StringBuilder();\r
+ }\r
+}\r
--- /dev/null
+\feffusing System;\r
+using Newtonsoft.Json;\r
+\r
+namespace Stratum\r
+{\r
+ /// <summary>\r
+ /// Represents a JsonRpc request\r
+ /// </summary>\r
+ [JsonObject(MemberSerialization.OptIn)]\r
+ public class StratumRequest\r
+ {\r
+ public StratumRequest()\r
+ {\r
+ Id = Guid.NewGuid().ToString();\r
+ }\r
+\r
+ /// <summary>\r
+ /// Unique request id\r
+ /// </summary>\r
+ [JsonProperty("id")]\r
+ public object Id { get; private set; }\r
+\r
+ /// <summary>\r
+ /// Stratum method name\r
+ /// </summary>\r
+ [JsonProperty("method")]\r
+ public string Method { get; set; }\r
+\r
+ /// <summary>\r
+ /// Method params\r
+ /// </summary>\r
+ [JsonProperty("params")]\r
+ public object Params { get; set; }\r
+\r
+ }\r
+}\r
--- /dev/null
+\feffusing Newtonsoft.Json;\r
+\r
+namespace Stratum\r
+{\r
+ /// <summary>\r
+ /// Represents a Stratum Response\r
+ /// </summary>\r
+ [JsonObject(MemberSerialization.OptIn)]\r
+ public class StratumResponse\r
+ {\r
+ /// <summary>\r
+ /// Response id, should be null or identical to request id\r
+ /// </summary>\r
+ [JsonProperty(PropertyName = "id")]\r
+ public object Id { get; set; }\r
+\r
+ /// <summary>\r
+ /// Result object\r
+ /// </summary>\r
+ [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "result")]\r
+ public object Result { get; set; }\r
+\r
+ /// <summary>\r
+ /// Error object\r
+ /// </summary>\r
+ [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "error")]\r
+ public StratumException Error { get; set; }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Represents a Stratum Response\r
+ /// </summary>\r
+ [JsonObject(MemberSerialization.OptIn)]\r
+ public class StratumResponse<T>\r
+ {\r
+ /// <summary>\r
+ /// Response id, should be null or identical to request id\r
+ /// </summary>\r
+ [JsonProperty(PropertyName = "id")]\r
+ public object Id { get; set; }\r
+\r
+ /// <summary>\r
+ /// Result object\r
+ /// </summary>\r
+ [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "result")]\r
+ public T Result { get; set; }\r
+\r
+ /// <summary>\r
+ /// Error object\r
+ /// </summary>\r
+ [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "error")]\r
+ public StratumException Error { get; set; }\r
+ }\r
+}\r
--- /dev/null
+\feff<?xml version="1.0" encoding="utf-8"?>\r
+<packages>\r
+ <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />\r
+ <package id="Rx-Core" version="2.2.5" targetFramework="net45" />\r
+ <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />\r
+ <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />\r
+ <package id="Rx-Main" version="2.2.5" targetFramework="net45" />\r
+ <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />\r
+</packages>
\ No newline at end of file
--- /dev/null
+\feff<?xml version="1.0" encoding="utf-8" ?>\r
+<configuration>\r
+ <startup> \r
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />\r
+ </startup>\r
+</configuration>
\ No newline at end of file
--- /dev/null
+\feffusing System;\r
+\r
+\r
+namespace StratumTest\r
+{\r
+ using Stratum;\r
+\r
+ class StratumTest\r
+ {\r
+ static void Main(string[] args)\r
+ {\r
+ Stratum s = new Stratum("192.168.1.100", 40001);\r
+\r
+ while (true)\r
+ {\r
+ var res = s.Invoke<string>("blockchain.transaction.get", "101379cb55ac431c435db40b4325f858568b0de3d8bd652a23a19e5d62521a72");\r
+\r
+ // var res = s.Invoke<Newtonsoft.Json.Linq.JObject>("blockchain.address.get_balance", "4PQtUNZ2aBYpZpVMPV2Qgz1PitCqgoT388");\r
+ // var res = s.Invoke<Newtonsoft.Json.Linq.JArray>("blockchain.address.get_history", "4PQtUNZ2aBYpZpVMPV2Qgz1PitCqgoT388");\r
+ // var res = s.Invoke<Newtonsoft.Json.Linq.JArray>("blockchain.address.listunspent", "4PQtUNZ2aBYpZpVMPV2Qgz1PitCqgoT388");\r
+\r
+ Console.Write(res.Result.ToString());\r
+ Console.ReadLine();\r
+ }\r
+ }\r
+ }\r
+}\r
--- /dev/null
+\feffusing System.Reflection;\r
+using System.Runtime.CompilerServices;\r
+using System.Runtime.InteropServices;\r
+\r
+// Управление общими сведениями о сборке осуществляется с помощью \r
+// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,\r
+// связанные со сборкой.\r
+[assembly: AssemblyTitle("StratumTest")]\r
+[assembly: AssemblyDescription("")]\r
+[assembly: AssemblyConfiguration("")]\r
+[assembly: AssemblyCompany("")]\r
+[assembly: AssemblyProduct("StratumTest")]\r
+[assembly: AssemblyCopyright("Copyright © 2015")]\r
+[assembly: AssemblyTrademark("")]\r
+[assembly: AssemblyCulture("")]\r
+\r
+// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми \r
+// для COM-компонентов. Если требуется обратиться к типу в этой сборке через \r
+// COM, задайте атрибуту ComVisible значение TRUE для этого типа.\r
+[assembly: ComVisible(false)]\r
+\r
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM\r
+[assembly: Guid("61645f69-d823-495a-ab80-3957c430db6f")]\r
+\r
+// Сведения о версии сборки состоят из следующих четырех значений:\r
+//\r
+// Основной номер версии\r
+// Дополнительный номер версии \r
+// Номер построения\r
+// Редакция\r
+//\r
+// Можно задать все значения или принять номер построения и номер редакции по умолчанию, \r
+// используя "*", как показано ниже:\r
+// [assembly: AssemblyVersion("1.0.*")]\r
+[assembly: AssemblyVersion("1.0.0.0")]\r
+[assembly: AssemblyFileVersion("1.0.0.0")]\r
--- /dev/null
+\feff<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />\r
+ <PropertyGroup>\r
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+ <ProjectGuid>{FB61065F-93BA-497B-A2D5-3574D23B0B62}</ProjectGuid>\r
+ <OutputType>Exe</OutputType>\r
+ <AppDesignerFolder>Properties</AppDesignerFolder>\r
+ <RootNamespace>StratumTest</RootNamespace>\r
+ <AssemblyName>StratumTest</AssemblyName>\r
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
+ <FileAlignment>512</FileAlignment>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+ <PlatformTarget>AnyCPU</PlatformTarget>\r
+ <DebugSymbols>true</DebugSymbols>\r
+ <DebugType>full</DebugType>\r
+ <Optimize>false</Optimize>\r
+ <OutputPath>bin\Debug\</OutputPath>\r
+ <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+ <PlatformTarget>AnyCPU</PlatformTarget>\r
+ <DebugType>pdbonly</DebugType>\r
+ <Optimize>true</Optimize>\r
+ <OutputPath>bin\Release\</OutputPath>\r
+ <DefineConstants>TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <ItemGroup>\r
+ <Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">\r
+ <SpecificVersion>False</SpecificVersion>\r
+ <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>\r
+ </Reference>\r
+ <Reference Include="System" />\r
+ <Reference Include="System.Core" />\r
+ <Reference Include="Microsoft.CSharp" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <Compile Include="Program.cs" />\r
+ <Compile Include="Properties\AssemblyInfo.cs" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <None Include="App.config" />\r
+ <None Include="packages.config" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\StratumLibrary\Stratum.csproj">\r
+ <Project>{27f0c6c3-dcd6-4588-afbb-dce22306f5f8}</Project>\r
+ <Name>Stratum</Name>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+ Other similar extension points exist, see Microsoft.Common.targets.\r
+ <Target Name="BeforeBuild">\r
+ </Target>\r
+ <Target Name="AfterBuild">\r
+ </Target>\r
+ -->\r
+</Project>
\ No newline at end of file
--- /dev/null
+\feff<?xml version="1.0" encoding="utf-8"?>\r
+<packages>\r
+ <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />\r
+</packages>
\ No newline at end of file