{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/core-docs/pulls/comments/48207518","id":48207518,"diff_hunk":"@@ -0,0 +1,586 @@\n+# Writing Console Apps: A Step by Step Guide\n+\n+This guide will show you how to use the .NET CLI tooling to build cross-platform console apps incrementally.  It will start with the most basic console app and eventually span multiple projects, including testing.\n+\n+If you're unfamiliar with the .NET CLI toolset, read [the overview](overview.md).  It's also helpful to have an understanding of the [console app paradigm](paradigm.md) and how [native binary compilation](single-binaries.md) works.\n+\n+## Prerequisites\n+\n+Before you begin, ensure you have the [latest .NET CLI tooling](http://dotnet.github.io/getting-started/).  You'll also need a text editor.\n+\n+## Hello, Console App!\n+\n+First, navigate to or create a new folder with a name you like.  \"Hello\" is the name chosen for the sample code, which can be found [here](https://github.com/dotnet/core-docs/samples/core-projects/console-apps/Hello).\n+\n+Open up a command prompt and type the following:\n+\n+```\n+$ dotnet new\n+$ dotnet restore\n+$ dotnet compile\n+```\n+\n+Let's do a quick walkthrough:\n+\n+1. `$ dotnet init`\n+\n+   `dotnet init` created an up-to-date `project.json` file with NuGet dependencies necessary to build a console app.  It also created a `Program.cs`, a basic file containing the entry point for the application.\n+   \n+   `project.json`:\n+   ```javascript\n+   {\n+        \"version\": \"1.0.0-*\",\n+        \"compilationOptions\": {\n+            \"emitEntryPoint\": true\n+        },\n+    \n+        \"dependencies\": {\n+            \"Microsoft.NETCore.Runtime\": \"1.0.1-beta-*\",\n+            \"System.IO\": \"4.0.11-beta-*\",\n+            \"System.Console\": \"4.0.0-beta-*\",\n+            \"System.Runtime\": \"4.0.21-beta-*\"\n+        },\n+    \n+        \"frameworks\": {\n+            \"dnxcore50\": { }\n+        }\n+   }\n+   ```\n+   `Program.cs`:\n+   ```csharp\n+   using System;\n+\n+   namespace ConsoleApplication\n+   {\n+       public class Program\n+       {\n+           public static void Main(string[] args)\n+           {\n+               Console.WriteLine(\"Hello World!\");\n+           }\n+       }\n+   }\n+   ```\n+\n+2. `$ dotnet restore`\n+\n+   `dotnet restore` analyzed the `project.json` file, downloaded the dependencies stated in the file (or grabbed them from a cache on your machine), and wrote the `project.lock.json` file.  The `project.lock.json` file is necessary to be able to compile and run.\n+   \n+   The `project.lock.json` file is a persisted and complete set of NuGet dependencies and other information describing an app.  This file is read by other tools, such as `dotnet compile` and `dotnet run`, enabling them to process the source code with a correct set of NuGet dependencies and binding resolutions.\n+   \n+3. `$ dotnet run`\n+\n+   `dotnet compile` compiled the source in Intermediate Language (IL) and generated an executable shim and a `Hello.dll` `.dll` file which contains the IL.\n+   \n+You can now invoke the executable.\n+\n+```\n+$ /bin/Debug/dnxcore50/Hello.exe\n+Hello, World!\n+```\n+\n+### Other ways to compile\n+\n+Let's try compiling `dotnet run` to compile and execute the code without generating any build artifacts.  Note that although this has use (mainly by ASP.NET internally), it's not a recommended way to run build and run console applications.\n+\n+```\n+$ dotnet run\n+Hello, World!\n+```\n+\n+Let's try compiling a native binary instead.\n+\n+```\n+$ dotnet compile --native\n+$ ./bin/Debug/dnxcore50/native/Basic\n+Hello World!\n+```\n+\n+Note the difference in compile time versus execution time.\n+\n+### Augmenting the program\n+\n+Let's change the file just a little bit.  Fibonacci numbers are fun, so let's try that out:\n+\n+`Program.cs`:\n+\n+```csharp\n+using System;\n+\n+namespace ConsoleApplication\n+{\n+    public class Program\n+    {\n+        public static int FibonacciNumber(int n)\n+        {\n+            int a = 0;\n+            int b = 1;\n+            int tmp;\n+            \n+            for (int i = 0; i < n; i++)\n+            {\n+                tmp = a;\n+                a = b;\n+                b += tmp;\n+            }\n+            \n+            return a;   \n+        }\n+        \n+        public static void Main(string[] args)\n+        {\n+            Console.WriteLine(\"Hello World!\");\n+            Console.WriteLine(\"Fibonacci Numbers 1-15:\");\n+            \n+            for (int i = 0; i < 15; i++)\n+            {\n+                Console.WriteLine($\"{i+1}: {FibonacciNumber(i)}\");\n+            }\n+        }\n+    }\n+}\n+```\n+\n+And running the program:\n+\n+```\n+$ dotnet compile --native\n+$ ./bin/Debug/dnxcore50/native/Basic\n+1: 0\n+2: 1\n+3: 1\n+4: 2\n+5: 3\n+6: 5\n+7: 8\n+8: 13\n+9: 21\n+10: 34\n+11: 55\n+12: 89\n+13: 144\n+14: 233\n+15: 377\n+```\n+\n+And that's it!  You can augment `Program.cs` any way you like.\n+\n+## Adding some new files\n+\n+Single files are fine for simple one-off programs, but chances are you're going to want to break things out into multiple files if you're building anything which has multiple components.  Multiple files are a way to do that.\n+\n+Create a new file and give it a unique namespace:\n+\n+```csharp\n+using System;\n+\n+namespace NumberFun\n+{\n+    // code can go here\n+} \n+```\n+\n+Next, include it in your `Program.cs` file:\n+\n+```csharp\n+using System;\n+using NumberFun;\n+```\n+\n+And finally, you can compile it:\n+\n+`$ dotnet compile`\n+\n+Now the fun part: making the new file do something!\n+\n+### Example: A Fibonacci Sequence Generator\n+\n+Let's say you want to build off of the previous fibonacci example by caching some fibonacci values and add some corecursive flair.  Your code might look something like this:\n+\n+```csharp\n+using System;\n+using System.Collections.Generic;\n+\n+namespace NumberFun\n+{\n+\tpublic class FibonacciGenerator\n+\t{\n+\t\tprivate Dictionary<int, int> _cache = new Dictionary<int, int>();\n+\t\t\n+\t\tprivate int Fib(int n) => n < 2 ? n : FibValue(n - 1) + FibValue(n - 2);\n+\t\t\n+\t\tprivate int FibValue(int n)\n+\t\t{\n+\t\t\tif (!_cache.ContainsKey(n))\n+\t\t\t{\n+\t\t\t\t_cache.Add(n, Fib(n));\n+\t\t\t}\n+\t\t\t\n+\t\t\treturn _cache[n];\n+\t\t}\n+\t\t\n+\t\tpublic IEnumerable<int> Generate(int n)\n+\t\t{\n+\t\t\tfor (int i = 0; i < n; i++)\n+\t\t\t{\n+\t\t\t\tyield return FibValue(i);\n+\t\t\t}\n+\t\t}\n+\t}\n+}\n+```\n+\n+Note that the use of `Dictionary<int, int>` and `IEnumerable<int>` means incorporating the `System.Collections` library in your `project.json`:\n+\n+```javascript\n+{\n+    \"version\": \"1.0.0-*\",\n+    \"compilationOptions\": {\n+        \"emitEntryPoint\": true\n+    },\n+\n+    \"dependencies\": {\n+        \"Microsoft.NETCore.Runtime\": \"1.0.1-beta-*\",\n+        \"System.IO\": \"4.0.11-beta-*\",\n+        \"System.Console\": \"4.0.0-beta-*\",\n+        \"System.Runtime\": \"4.0.21-beta-*\",\n+        \"System.Collections\": \"4.0.11-beta-23516\"\n+    },\n+\n+    \"frameworks\": {\n+        \"dnxcore50\": { }\n+    }\n+}\n+```\n+\n+Now adjust the `Main()` method in you `Program.cs`:\n+\n+```csharp\n+public static void Main(string[] args)\n+{\n+    var generator = new FibonacciGenerator();\n+    foreach (var digit in generator.Generate(15))\n+    {\n+        Console.WriteLine(digit);\n+    }\n+}\n+```\n+\n+Finally, run it!\n+\n+```\n+$ dotnet run\n+0\n+1\n+1\n+2\n+3\n+5\n+8\n+13\n+21\n+34\n+55\n+89\n+144\n+233\n+377\n+```\n+\n+And that's it!\n+\n+## Using folders to organize code\n+\n+Say you wanted to introduce some new types to do work on.  You can do this by adding more files and making sure to give them namespaces you can include in your `Program.cs` file.\n+\n+```\n+/MyProject\n+|__Program.cs\n+|__Type1.cs\n+|__Type2.cs\n+|__project.json\n+```\n+\n+This works great when the size of your project is relatively small.  However, if you have a larger app with many different data types and potentially multiple layers, you may wish to organize things logically.  This is where folders come into play.  You can either follow along with [the sample project](https://github.com/dotnet/core-docs/samples/core-projects/console-apps/NewTypes) that this guide covers, or create your own files and folders.\n+\n+To begin, create a new folder under the root of your project.  `/Model` is chosen here.\n+\n+```\n+/NewTypes\n+|__/Model\n+|__Program.cs\n+|__project.json\n+```\n+\n+Now add some new types to the folder:\n+\n+```\n+/NewTypes\n+|__/Model\n+   |__Type1.cs\n+   |__Type2.cs\n+|__Program.cs\n+|__project.json\n+```\n+\n+Now, just as if they were files in the same directory, give them all the same namespace so you can include them in your `Program.cs`.","path":"docs/console/incremental-guide.md","position":326,"original_position":326,"commit_id":"3d1e5cadd73e55fef230628baf49480c080aa329","original_commit_id":"3d1e5cadd73e55fef230628baf49480c080aa329","user":{"login":"richlander","id":2608468,"avatar_url":"https://avatars.githubusercontent.com/u/2608468?v=3","gravatar_id":"","url":"https://api.github.com/users/richlander","html_url":"https://github.com/richlander","followers_url":"https://api.github.com/users/richlander/followers","following_url":"https://api.github.com/users/richlander/following{/other_user}","gists_url":"https://api.github.com/users/richlander/gists{/gist_id}","starred_url":"https://api.github.com/users/richlander/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/richlander/subscriptions","organizations_url":"https://api.github.com/users/richlander/orgs","repos_url":"https://api.github.com/users/richlander/repos","events_url":"https://api.github.com/users/richlander/events{/privacy}","received_events_url":"https://api.github.com/users/richlander/received_events","type":"User","site_admin":false},"body":"It seems like choosing the same namespace for everything is just one strategy. It's more the issue that all the namespaces are in your Program.cs and that choosing a single namespace is the easiest approach. I believe for ASP.NET MVC that \".Models\" is added to types in the Models directory.","created_at":"2015-12-22T00:02:11Z","updated_at":"2015-12-22T00:02:11Z","html_url":"https://github.com/dotnet/core-docs/pull/190#discussion_r48207518","pull_request_url":"https://api.github.com/repos/dotnet/core-docs/pulls/190","_links":{"self":{"href":"https://api.github.com/repos/dotnet/core-docs/pulls/comments/48207518"},"html":{"href":"https://github.com/dotnet/core-docs/pull/190#discussion_r48207518"},"pull_request":{"href":"https://api.github.com/repos/dotnet/core-docs/pulls/190"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/core-docs/pulls/190","id":52902615,"html_url":"https://github.com/dotnet/core-docs/pull/190","diff_url":"https://github.com/dotnet/core-docs/pull/190.diff","patch_url":"https://github.com/dotnet/core-docs/pull/190.patch","issue_url":"https://api.github.com/repos/dotnet/core-docs/issues/190","number":190,"state":"open","locked":false,"title":"Step by Step Console app article","user":{"login":"cartermp","id":6309070,"avatar_url":"https://avatars.githubusercontent.com/u/6309070?v=3","gravatar_id":"","url":"https://api.github.com/users/cartermp","html_url":"https://github.com/cartermp","followers_url":"https://api.github.com/users/cartermp/followers","following_url":"https://api.github.com/users/cartermp/following{/other_user}","gists_url":"https://api.github.com/users/cartermp/gists{/gist_id}","starred_url":"https://api.github.com/users/cartermp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cartermp/subscriptions","organizations_url":"https://api.github.com/users/cartermp/orgs","repos_url":"https://api.github.com/users/cartermp/repos","events_url":"https://api.github.com/users/cartermp/events{/privacy}","received_events_url":"https://api.github.com/users/cartermp/received_events","type":"User","site_admin":false},"body":"This the first half of what was discussed in #180.\r\n\r\nIt covers building console applications in an incremental fashion: first the basic setup with `dotnet init` with native  and non-native compilation, extending the console app to do more than \"Hello, World!\", then adding multiple files, then putting files in folders, and finally a multi-project system with unit tests.\r\n\r\nTo be addressed:\r\n\r\n* Embedding sample code when embedding with line number ranges is supported\r\n* Fixing some of the links which point to samples or other articles\r\n* Any changes to the .NET CLI toolchain when they're complete (such as `dotnet init --> dotnet new`)\r\n\r\nThis has also been written with the following assumptions:\r\n\r\n1. The \"Overview and moving pieces\" explains the dotnet driver fairly comprehensively\r\n2. The \"Console app paradigm\" article explains concepts such as the shared runtime, self-contained runtime, what it means to have a single binary, etc\r\n3. The \"Creating single binaries with native compilation\" article explains what happens when you do a native compilation and provides examples of the different ways you can natively compile\r\n\r\nThat means that this is really more of a \"how\" rather than \"what\" article.  I didn't go into much depth at all about what each thing being used meant, and instead focused on what people might want to know how to do with the toolchain.\r\n\r\n/cc @blackdwarf @mairaw @richlander @BethMassi @matthewreily @piotrpMSFT ","created_at":"2015-12-07T21:22:17Z","updated_at":"2015-12-22T00:02:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d429f760389ba487bd6d96762e76f1c9eeac640b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/core-docs/pulls/190/commits","review_comments_url":"https://api.github.com/repos/dotnet/core-docs/pulls/190/comments","review_comment_url":"https://api.github.com/repos/dotnet/core-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/core-docs/issues/190/comments","statuses_url":"https://api.github.com/repos/dotnet/core-docs/statuses/3d1e5cadd73e55fef230628baf49480c080aa329","head":{"label":"cartermp:console-app-article","ref":"console-app-article","sha":"3d1e5cadd73e55fef230628baf49480c080aa329","user":{"login":"cartermp","id":6309070,"avatar_url":"https://avatars.githubusercontent.com/u/6309070?v=3","gravatar_id":"","url":"https://api.github.com/users/cartermp","html_url":"https://github.com/cartermp","followers_url":"https://api.github.com/users/cartermp/followers","following_url":"https://api.github.com/users/cartermp/following{/other_user}","gists_url":"https://api.github.com/users/cartermp/gists{/gist_id}","starred_url":"https://api.github.com/users/cartermp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cartermp/subscriptions","organizations_url":"https://api.github.com/users/cartermp/orgs","repos_url":"https://api.github.com/users/cartermp/repos","events_url":"https://api.github.com/users/cartermp/events{/privacy}","received_events_url":"https://api.github.com/users/cartermp/received_events","type":"User","site_admin":false},"repo":{"id":44759105,"name":"core-docs","full_name":"cartermp/core-docs","owner":{"login":"cartermp","id":6309070,"avatar_url":"https://avatars.githubusercontent.com/u/6309070?v=3","gravatar_id":"","url":"https://api.github.com/users/cartermp","html_url":"https://github.com/cartermp","followers_url":"https://api.github.com/users/cartermp/followers","following_url":"https://api.github.com/users/cartermp/following{/other_user}","gists_url":"https://api.github.com/users/cartermp/gists{/gist_id}","starred_url":"https://api.github.com/users/cartermp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cartermp/subscriptions","organizations_url":"https://api.github.com/users/cartermp/orgs","repos_url":"https://api.github.com/users/cartermp/repos","events_url":"https://api.github.com/users/cartermp/events{/privacy}","received_events_url":"https://api.github.com/users/cartermp/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cartermp/core-docs","description":".NET Core documentation (work in progress).","fork":true,"url":"https://api.github.com/repos/cartermp/core-docs","forks_url":"https://api.github.com/repos/cartermp/core-docs/forks","keys_url":"https://api.github.com/repos/cartermp/core-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cartermp/core-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cartermp/core-docs/teams","hooks_url":"https://api.github.com/repos/cartermp/core-docs/hooks","issue_events_url":"https://api.github.com/repos/cartermp/core-docs/issues/events{/number}","events_url":"https://api.github.com/repos/cartermp/core-docs/events","assignees_url":"https://api.github.com/repos/cartermp/core-docs/assignees{/user}","branches_url":"https://api.github.com/repos/cartermp/core-docs/branches{/branch}","tags_url":"https://api.github.com/repos/cartermp/core-docs/tags","blobs_url":"https://api.github.com/repos/cartermp/core-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cartermp/core-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cartermp/core-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/cartermp/core-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cartermp/core-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/cartermp/core-docs/languages","stargazers_url":"https://api.github.com/repos/cartermp/core-docs/stargazers","contributors_url":"https://api.github.com/repos/cartermp/core-docs/contributors","subscribers_url":"https://api.github.com/repos/cartermp/core-docs/subscribers","subscription_url":"https://api.github.com/repos/cartermp/core-docs/subscription","commits_url":"https://api.github.com/repos/cartermp/core-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/cartermp/core-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/cartermp/core-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/cartermp/core-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/cartermp/core-docs/contents/{+path}","compare_url":"https://api.github.com/repos/cartermp/core-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cartermp/core-docs/merges","archive_url":"https://api.github.com/repos/cartermp/core-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cartermp/core-docs/downloads","issues_url":"https://api.github.com/repos/cartermp/core-docs/issues{/number}","pulls_url":"https://api.github.com/repos/cartermp/core-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/cartermp/core-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/cartermp/core-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cartermp/core-docs/labels{/name}","releases_url":"https://api.github.com/repos/cartermp/core-docs/releases{/id}","created_at":"2015-10-22T16:41:05Z","updated_at":"2015-11-19T00:02:52Z","pushed_at":"2015-12-21T19:20:20Z","git_url":"git://github.com/cartermp/core-docs.git","ssh_url":"git@github.com:cartermp/core-docs.git","clone_url":"https://github.com/cartermp/core-docs.git","svn_url":"https://github.com/cartermp/core-docs","homepage":"http://dotnet.readthedocs.org","size":10073,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"5dc010138ea7a9fb6d19d5c770d633f8200903e2","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":35890081,"name":"core-docs","full_name":"dotnet/core-docs","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars.githubusercontent.com/u/9141961?v=3","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/core-docs","description":".NET Core documentation (work in progress).","fork":false,"url":"https://api.github.com/repos/dotnet/core-docs","forks_url":"https://api.github.com/repos/dotnet/core-docs/forks","keys_url":"https://api.github.com/repos/dotnet/core-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/core-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/core-docs/teams","hooks_url":"https://api.github.com/repos/dotnet/core-docs/hooks","issue_events_url":"https://api.github.com/repos/dotnet/core-docs/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/core-docs/events","assignees_url":"https://api.github.com/repos/dotnet/core-docs/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/core-docs/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/core-docs/tags","blobs_url":"https://api.github.com/repos/dotnet/core-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/core-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/core-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/core-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/core-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/core-docs/languages","stargazers_url":"https://api.github.com/repos/dotnet/core-docs/stargazers","contributors_url":"https://api.github.com/repos/dotnet/core-docs/contributors","subscribers_url":"https://api.github.com/repos/dotnet/core-docs/subscribers","subscription_url":"https://api.github.com/repos/dotnet/core-docs/subscription","commits_url":"https://api.github.com/repos/dotnet/core-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/core-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/core-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/core-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/core-docs/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/core-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/core-docs/merges","archive_url":"https://api.github.com/repos/dotnet/core-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/core-docs/downloads","issues_url":"https://api.github.com/repos/dotnet/core-docs/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/core-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/core-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/core-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/core-docs/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/core-docs/releases{/id}","created_at":"2015-05-19T15:13:32Z","updated_at":"2015-12-19T05:18:07Z","pushed_at":"2015-12-21T19:20:20Z","git_url":"git://github.com/dotnet/core-docs.git","ssh_url":"git@github.com:dotnet/core-docs.git","clone_url":"https://github.com/dotnet/core-docs.git","svn_url":"https://github.com/dotnet/core-docs","homepage":"http://dotnet.github.io/docs/index.html","size":10120,"stargazers_count":38,"watchers_count":38,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":44,"mirror_url":null,"open_issues_count":52,"forks":44,"open_issues":52,"watchers":38,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/core-docs/pulls/190"},"html":{"href":"https://github.com/dotnet/core-docs/pull/190"},"issue":{"href":"https://api.github.com/repos/dotnet/core-docs/issues/190"},"comments":{"href":"https://api.github.com/repos/dotnet/core-docs/issues/190/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/core-docs/pulls/190/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/core-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/core-docs/pulls/190/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/core-docs/statuses/3d1e5cadd73e55fef230628baf49480c080aa329"}}}}