[{"data":1,"prerenderedAt":995},["ShallowReactive",2],{"i-feather:search":3,"i-feather:x":8,"i-feather:moon":10,"i-feather:sun":12,"i-fa-brands:youtube":14,"i-fa-brands:twitch":18,"i-fa-brands:github":20,"i-fa-brands:linkedin":23,"i-fa-brands:stack-overflow":26,"i-simple-icons:bluesky":29,"i-fa-brands:mastodon":31,"i-fa-regular:envelope":33,"i-fa-solid:rss":35,"post-\u002Fcustom-project-templates-using-dotnet-new\u002F":37,"post-navigation":593,"i-fa-solid:share-alt":975,"i-fa-brands:facebook":977,"i-fa-brands:twitter":979,"i-fa-brands:reddit":981,"i-fa-brands:patreon":983,"i-simple-icons:buymeacoffee":985,"i-fa-brands:paypal":987,"i-fa-regular:question-circle":989,"i-feather:arrow-left":991,"i-feather:arrow-right":993},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003Cpath d=\"m21 21l-4.35-4.35\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 6L6 18M6 6l12 12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 12.79A9 9 0 1 1 11.21 3A7 7 0 0 0 21 12.79\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"5\"\u002F>\u003Cpath d=\"M12 1v2m0 18v2M4.22 4.22l1.42 1.42m12.72 12.72l1.42 1.42M1 12h2m18 0h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":15,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":17},576,512,"\u003Cpath fill=\"currentColor\" d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597c-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821c11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"currentColor\" d=\"M391.17 103.47h-38.63v109.7h38.63ZM285 103h-38.63v109.75H285ZM120.83 0L24.31 91.42v329.16h115.83V512l96.53-91.42h77.25L487.69 256V0Zm328.24 237.75l-77.22 73.12h-77.24l-67.6 64v-64h-86.87V36.58h308.93Z\"\u002F>",{"left":4,"top":4,"width":21,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":22},496,"\u003Cpath fill=\"currentColor\" d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":25},448,"\u003Cpath fill=\"currentColor\" d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5c0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7c-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5c67.2 0 79.7 44.3 79.7 101.9z\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":28},384,"\u003Cpath fill=\"currentColor\" d=\"M290.7 311L95 269.7L86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8l153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24l119.3 160.3l32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":30},"\u003Cpath fill=\"currentColor\" d=\"M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037c-.856 3.061-3.978 3.842-6.755 3.37c4.854.826 6.089 3.562 3.422 6.299c-5.065 5.196-7.28-1.304-7.847-2.97c-.104-.305-.152-.448-.153-.327c0-.121-.05.022-.153.327c-.568 1.666-2.782 8.166-7.847 2.97c-2.667-2.737-1.432-5.473 3.422-6.3c-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\u003Cpath fill=\"currentColor\" d=\"M433 179.11c0-97.2-63.71-125.7-63.71-125.7c-62.52-28.7-228.56-28.4-290.48 0c0 0-63.72 28.5-63.72 125.7c0 115.7-6.6 259.4 105.63 289.1c40.51 10.7 75.32 13 103.33 11.4c50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7c56.12-6.7 105-41.3 111.23-72.9c9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175c25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5l11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1c23.71 27.3 18.4 53 18.4 175z\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":34},"\u003Cpath fill=\"currentColor\" d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48m0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49c-16.841 13.247-50.201 45.072-73.413 44.701c-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646c21.857 17.205 60.134 55.186 103.062 54.955c42.717.231 80.509-37.199 103.053-54.947c49.528-38.783 82.032-64.401 104.947-82.653V400z\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\u003Cpath fill=\"currentColor\" d=\"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041s64.04 28.673 64.04 64.041m175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018c111.832 7.284 201.473 96.702 208.772 208.772c.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79m144.249.288C439.596 229.677 251.465 40.445 16.503 32.01C7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999c191.179 7.839 344.627 161.316 352.465 352.465c.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504\"\u002F>",{"id":38,"title":39,"author":40,"body":41,"comments":409,"date":568,"dateModified":569,"description":570,"extension":571,"headings":572,"heroImage":584,"meta":585,"path":53,"permalink":53,"published":586,"stem":587,"tags":588,"timeToRead":592},"posts\u002Fposts\u002F2017\u002Fcustom-project-templates-using-dotnet-new\u002Findex.md","Custom Project Templates Using dotnet new","Muhammad Rehan Saeed",{"type":42,"value":43,"toc":406},"minimark",[44,67,98,123,133,147,165,172,175,189,196,204,219,226,232,241,255,258,264,278,294,299,313,331,345,354,357,371,385,399,402],[45,46,47,55,61],"ol",{},[48,49,50],"li",{},[51,52,54],"a",{"href":53},"\u002Fcustom-project-templates-using-dotnet-new\u002F","dotnet new - Custom Project Templates Using dotnet new",[48,56,57],{},[51,58,60],{"href":59},"\u002Fdotnet-new-feature-selection\u002F","dotnet new - dotnet new Feature Selection",[48,62,63],{},[51,64,66],{"href":65},"\u002Funit-testing-dotnet-new-templates\u002F","dotnet new - Unit Testing dotnet new Templates",[68,69,72,78],"h1",{"id":70,"data-section-heading":71},"current-dotnet-new","",[73,74,77],"span",{"className":75},[76],"heading__text","Current dotnet new",[79,80,83],"anchor-link",{"href":81,"label":82},"#current-dotnet-new","Link to this section",[84,85,92],"svg",{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink","0 0 16 16","1.1",22,"true",[93,94],"path",{"fill":95,"fill-rule":96,"d":97},"currentColor","evenodd","M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z",[99,100,101,102,106,107,116,117,122],"p",{},"If you run ",[103,104,105],"code",{},"dotnet new"," today, you can create a simple console app. The command has very few options, including selecting the language you want to use (C#, VB or F#). However, this is all about to change. ",[51,108,115],{"href":109,"rel":110,"target":114},"https:\u002F\u002Ftwitter.com\u002Fsayedihashimi",[111,112,113],"nofollow","noopener","noreferrer","_blank","Sayed I. Hashimi"," and ",[51,118,121],{"href":119,"rel":120,"target":114},"https:\u002F\u002Ftwitter.com\u002Fmlorbetske",[111,112,113],"Mike Lorbetske"," who work at Microsoft in the .NET tooling team have been kind enough to show me what they've been working on with the intention of getting some feedback.",[99,124,125],{},[126,127],"img",{"alt":128,"src":129,"width":130,"height":131,"loading":132},"old dotnet new","\u002Fcontent-images\u002Fposts\u002F2017\u002Fcustom-project-templates-using-dotnet-new\u002Fimages\u002Ffirst-dotnet-new.png",979,293,"lazy",[68,134,136,140],{"id":135,"data-section-heading":71},"dotnet-new3",[73,137,139],{"className":138},[76],"dotnet new3",[79,141,143],{"href":142,"label":82},"#dotnet-new3",[84,144,145],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,146],{"fill":95,"fill-rule":96,"d":97},[99,148,149,150,152,153,158,159,161,162,164],{},"Microsoft is working on a new version of the ",[103,151,105],{}," command with support for installing custom project templates from NuGet packages, zip files or folders. If you head over to the ",[51,154,157],{"href":155,"rel":156,"target":114},"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Ftemplating",[111,112,113],"dotnet\u002Ftemplating"," GitHub repository you can follow the very simple instructions and try out a fairly complete version of this command which is temporarily called ",[103,160,139],{},". The full ",[103,163,105],{}," experience is due to be released in conjunction with Visual Studio 2017.",[99,166,167],{},[126,168],{"alt":139,"src":169,"width":170,"height":171,"loading":132},"\u002Fcontent-images\u002Fposts\u002F2017\u002Fcustom-project-templates-using-dotnet-new\u002Fimages\u002Fdotnet-new3.png",1103,639,[99,173,174],{},"If you take a look at the screenshot above, you'll notice that there are a lot more options available. You can list all installed project templates and install new ones too.",[68,176,178,182],{"id":177,"data-section-heading":71},"creating-new-templates",[73,179,181],{"className":180},[76],"Creating New Templates",[79,183,185],{"href":184,"label":82},"#creating-new-templates",[84,186,187],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,188],{"fill":95,"fill-rule":96,"d":97},[99,190,191,192,195],{},"Creating a new project template involves taking a folder containing your project (Mine is called Api-CSharp) and adding a .",[103,193,194],{},"template.config"," folder to it containing two files.",[99,197,198],{},[126,199],{"alt":200,"src":201,"width":202,"height":203,"loading":132},"Custom project template example folder structure","\u002Fcontent-images\u002Fposts\u002F2017\u002Fcustom-project-templates-using-dotnet-new\u002Fimages\u002FCustom-project-template-example-folder-structure.png",335,781,[205,206,208,212],"h2",{"id":207,"data-section-heading":71},"template-metadata",[73,209,211],{"className":210},[76],"Template Metadata",[79,213,215],{"href":214,"label":82},"#template-metadata",[84,216,217],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,218],{"fill":95,"fill-rule":96,"d":97},[99,220,221,222,225],{},"The ",[103,223,224],{},"template.json"," file is where you specify metadata about your project template. This metadata is displayed when someone lists their installed project templates. A really basic one looks like this:",[227,228],"pre",{"className":229,"language":230,"meta":71,"style":71,"html":231},"language-json shiki shiki-themes light-plus monokai","json","\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">{\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"author\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"Muhammad Rehan Saeed (RehanSaeed.com)\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">,\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"classifications\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: [ \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"WebAPI\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">, \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"Boxed\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\"> ], \u003C\u002Fspan>\u003Cspan class=\"s1q82\">\u002F\u002F Tags used to search for the template.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"name\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"Dotnet Boxed API\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">,\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"identity\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"Dotnet.Boxed.Api.CSharp\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">,    \u003C\u002Fspan>\u003Cspan class=\"s1q82\">\u002F\u002F A unique ID for the project template.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"shortName\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"api\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">,                       \u003C\u002Fspan>\u003Cspan class=\"s1q82\">\u002F\u002F You can create the project using this short name instead of the one above.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"tags\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: {\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">    \"language\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"C#\"\u003C\u002Fspan>\u003Cspan class=\"s1q82\">                        \u002F\u002F Specify that this template is in C#.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">  },\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"sourceName\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: \u003C\u002Fspan>\u003Cspan class=\"syaXe\">\"ApiTemplate\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">,              \u003C\u002Fspan>\u003Cspan class=\"s1q82\">\u002F\u002F Name of the csproj file and namespace that will be replaced.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"svrZB\">  \"guids\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">: [                                \u003C\u002Fspan>\u003Cspan class=\"s1q82\">\u002F\u002F GUID's used in the project that will be replaced by new ones.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"syaXe\">    \"837bc53e-0271-4e9c-b5b5-c60ea7a7c7b5\"\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">,\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"syaXe\">    \"113f2d04-69f0-40c3-8797-ba3f356dd812\"\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">  ],\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">}\n\u003C\u002Fspan>\u003C\u002Fspan>",[99,233,234,235,240],{},"The templating repositories ",[51,236,239],{"href":237,"rel":238,"target":114},"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Ftemplating\u002Fwiki\u002F%22Runnable-Project%22-Templates",[111,112,113],"Wiki"," page talks about what all of the properties mean in a lot more detail but I've added some basic comments for your understanding.",[205,242,244,248],{"id":243,"data-section-heading":71},"installing-templates",[73,245,247],{"className":246},[76],"Installing Templates",[79,249,251],{"href":250,"label":82},"#installing-templates",[84,252,253],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,254],{"fill":95,"fill-rule":96,"d":97},[99,256,257],{},"Installing the above template from a folder is as easy as using the install command. You can also install templates from zip files and NuGet packages the same way.",[99,259,260],{},[126,261],{"alt":262,"src":263,"width":170,"height":171,"loading":132},"dotnet new3 install","\u002Fcontent-images\u002Fposts\u002F2017\u002Fcustom-project-templates-using-dotnet-new\u002Fimages\u002Fdotnet-new3-install.png",[205,265,267,271],{"id":266,"data-section-heading":71},"template-nuget-packages",[73,268,270],{"className":269},[76],"Template NuGet Packages",[79,272,274],{"href":273,"label":82},"#template-nuget-packages",[84,275,276],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,277],{"fill":95,"fill-rule":96,"d":97},[99,279,280,281,283,284,289,290,293],{},"So how do you create a NuGet package containing a project template that's compatible with ",[103,282,105],{},"? I'm assuming you are familiar with creating NuGet packages, if not take a look at the NuGet ",[51,285,288],{"href":286,"rel":287,"target":114},"https:\u002F\u002Fdocs.microsoft.com\u002Fen-gb\u002Fnuget\u002Fquickstart\u002Fcreate-and-publish-a-package",[111,112,113],"documentation",". You can create NuGet packages of your project templates by creating a ",[103,291,292],{},"Templates.nuspec"," file like the one below and placing all of your templates in a content folder beside it. The content folder is a special folder which NuGet understands to contain static files. If you look at the nuspec file below, you'll notice the packageType element. This is a new way to tell NuGet that this NuGet package contains project templates.",[227,295],{"className":296,"language":297,"meta":71,"style":71,"html":298},"language-xml shiki shiki-themes light-plus monokai","xml","\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">&lt;?\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">xml\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> version\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"1.0\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> encoding\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"utf-8\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">?&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">&lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">package\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> xmlns\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"http:\u002F\u002Fschemas.microsoft.com\u002Fpackaging\u002F2010\u002F07\u002Fnuspec.xsd\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">  &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">metadata\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">id\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">Boxed.Templates\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">id\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">version\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">1.0.0\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">version\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">description\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">My project description.\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">description\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">authors\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">Muhammad Rehan Saeed (RehanSaeed.com)\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">authors\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">packageTypes\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">      &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">packageType\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"Template\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\"> \u002F&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">packageTypes\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">  &lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">metadata\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">package\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>",[205,300,302,306],{"id":301,"data-section-heading":71},"there-is-more",[73,303,305],{"className":304},[76],"There is More!",[79,307,309],{"href":308,"label":82},"#there-is-more",[84,310,311],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,312],{"fill":95,"fill-rule":96,"d":97},[99,314,315,316,321,322,327,328,330],{},"What I've not told you is that it's possible to add features to your project template that developers can turn on or off based on command line switches a bit like ",[51,317,320],{"href":318,"rel":319,"target":114},"http:\u002F\u002Fyeoman.io\u002F",[111,112,113],"Yeoman"," does for Node based NPM packages. As many of you will know I already do this in my ",[51,323,326],{"href":324,"rel":325,"target":114},"https:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F6cf50a48-fc1e-4eaf-9e82-0b2a6705ca7d",[111,112,113],"ASP.NET Core Boilerplate"," project template but I came up with my own custom method. ",[103,329,105],{}," makes this all a lot easier and I'll cover how to do this in a later blog post.",[68,332,334,338],{"id":333,"data-section-heading":71},"why-this-is-better",[73,335,337],{"className":336},[76],"Why This is Better",[79,339,341],{"href":340,"label":82},"#why-this-is-better",[84,342,343],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,344],{"fill":95,"fill-rule":96,"d":97},[99,346,347,348,353],{},"Traditionally, to create project templates, you could use Visual Studio to create zip files containing your project template or if you were brave you could create Visual Studio extensions (VSIX) to enable installing them directly into Visual Studio and share them on the ",[51,349,352],{"href":350,"rel":351,"target":114},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fvs",[111,112,113],"Visual Studio Marketplace",".",[99,355,356],{},"This new method makes creating project templates about as easy as it's ever going to get and allows really easy sharing, versioning and personalization of project templates. At some point I envisage a website (Possible the Visual Studio Marketplace) where you could go and install these NuGet based project templates.",[68,358,360,364],{"id":359,"data-section-heading":71},"net-boxed-api",[73,361,363],{"className":362},[76],".NET Boxed API",[79,365,367],{"href":366,"label":82},"#net-boxed-api",[84,368,369],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,370],{"fill":95,"fill-rule":96,"d":97},[99,372,373,374,376,377,379,380,353],{},"I have been working on a brand new project template for building API's using ",[103,375,105],{}," with a lot of help from the guys at Microsoft. My project templates are quite complex so it's a good test of the system. The API comes jam packed full of security, performance and best practice features and also implements Swagger right out of the box. You can try installing it with ",[103,378,105],{}," from ",[51,381,384],{"href":382,"rel":383,"target":114},"https:\u002F\u002Fgithub.com\u002FDotnet-Boxed\u002FTemplates",[111,112,113],"NuGet",[68,386,388,392],{"id":387,"data-section-heading":71},"conclusions",[73,389,391],{"className":390},[76],"Conclusions",[79,393,395],{"href":394,"label":82},"#conclusions",[84,396,397],{"xmlns":86,"xmlns:xlink":87,"viewBox":88,"version":89,"width":90,"height":90,"aria-hidden":91},[93,398],{"fill":95,"fill-rule":96,"d":97},[99,400,401],{},"Overall I'm really impressed with where the new project templating system is headed. It's very easy to do something simple but also very powerful should you need to do something complicated. There is a few blog posts worth of material here, so expect a few more posts in the coming weeks.",[403,404,405],"style",{},"html pre.shiki code .sjLUg, html code.shiki .sjLUg{--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .svrZB, html code.shiki .svrZB{--shiki-default:#0451A5;--shiki-default-font-style:inherit;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic}html pre.shiki code .syaXe, html code.shiki .syaXe{--shiki-default:#A31515;--shiki-dark:#CFCFC2}html pre.shiki code .s1q82, html code.shiki .s1q82{--shiki-default:#008000;--shiki-dark:#88846F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sNflI, html code.shiki .sNflI{--shiki-default:#800000;--shiki-dark:#F8F8F2}html pre.shiki code .sjbfc, html code.shiki .sjbfc{--shiki-default:#800000;--shiki-dark:#F92672}html pre.shiki code .snDo4, html code.shiki .snDo4{--shiki-default:#E50000;--shiki-dark:#A6E22E}html pre.shiki code .squEy, html code.shiki .squEy{--shiki-default:#0000FF;--shiki-dark:#E6DB74}",{"title":71,"searchDepth":407,"depth":407,"links":408},2,[],{"issue":410,"comments":414},{"number":411,"title":412,"html_url":413},69,"[Comment] Custom Project Templates Using dotnet new","https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69",[415,427,435,443,451,459,467,475,483,491,499,507,515,523,535,543,552,560],{"id":416,"html_url":417,"body_html":418,"created_at":419,"updated_at":419,"author_association":420,"user":421,"reactions":425},627252592,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252592","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F073a637e433812126b5ee5a88d9b27ce08c510387a14507f2429287cfae86b16\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63386561643331323263363239313934636233306437623331636461363962653f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Mike-EEE\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F073a637e433812126b5ee5a88d9b27ce08c510387a14507f2429287cfae86b16\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63386561643331323263363239313934636233306437623331636461363962653f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fblog.developers.win\u002F\">Mike-EEE\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-01-18 21:38:44\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WOWWWW... \u003Ccode>template.json\u003C\u002Fcode> and \u003Ccode>Templates.nuspec\u003C\u002Fcode> that is described in XML. Great to see that everything is nice and consistent and you aren't forced to constantly switch between data formats! ;)\u003C\u002Fp>\n\u003Cp>You would think we would all learn after project.json. Guess not. Everything else looks cool, though. Well, except for the minor detail that this is all baked in the error-prone and difficult-to-work-with-and-discover CLI that we have spent 20 years after DOS to remove ourselves from...\u003C\u002Fp>\n\u003Cp>But besides that, looks good. :)\u003C\u002Fp>","2020-05-12T10:22:10Z","OWNER",{"login":422,"avatar_url":423,"html_url":424},"RehanSaeed","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2270364?v=4","https:\u002F\u002Fgithub.com\u002FRehanSaeed",{"url":426,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252592\u002Freactions",{"id":428,"html_url":429,"body_html":430,"created_at":431,"updated_at":431,"author_association":420,"user":432,"reactions":433},627252674,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252674","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-01-18 21:49:38\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>WOWWWW... \u003Ccode>template.json\u003C\u002Fcode> and \u003Ccode>Templates.nuspec\u003C\u002Fcode> that is described in XML. Great to see that everything is nice and consistent and you aren't forced to constantly switch between data formats! ;)\u003C\u002Fp>\n\u003Cp>You would think we would all learn after project.json. Guess not. Everything else looks cool, though. Well, except for the minor detail that this is all baked in the error-prone and difficult-to-work-with-and-discover CLI that we have spent 20 years after DOS to remove ourselves from...\u003C\u002Fp>\n\u003Cp>But besides that, looks good. :)\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Ccode>Templates.nuspec\u003C\u002Fcode> is a NuGet file which has been around for a long time in XML. New things tend to get built in JSON because it's less verbose. I tend to think that both formats have their strengths. I really liked \u003Ccode>project.json\u003C\u002Fcode> and am sad to see it go but I can see why they did it.\u003C\u002Fp>","2020-05-12T10:22:17Z",{"login":422,"avatar_url":423,"html_url":424},{"url":434,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252674\u002Freactions",{"id":436,"html_url":437,"body_html":438,"created_at":439,"updated_at":439,"author_association":420,"user":440,"reactions":441},627252730,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252730","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F141960ae1a61d2bdea9db6bd41010cc414ac0e6d4ef20319a597d3a4bc3dae87\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34346537653061333434646634313531636261333564306462626464346261613f733d393626643d6d6d26723d67\">\u003Cimg alt=\"nemke\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F141960ae1a61d2bdea9db6bd41010cc414ac0e6d4ef20319a597d3a4bc3dae87\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34346537653061333434646634313531636261333564306462626464346261613f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>nemke\u003C\u002Fstrong> commented on \u003Cstrong>2017-01-24 19:12:23\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Can this be used for multi-project templates?\u003C\u002Fp>","2020-05-12T10:22:24Z",{"login":422,"avatar_url":423,"html_url":424},{"url":442,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252730\u002Freactions",{"id":444,"html_url":445,"body_html":446,"created_at":447,"updated_at":447,"author_association":420,"user":448,"reactions":449},627252780,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252780","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-01-25 08:58:33\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Can this be used for multi-project templates?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I'm not sure. I've asked the question, just can't remember the answer.\u003C\u002Fp>","2020-05-12T10:22:31Z",{"login":422,"avatar_url":423,"html_url":424},{"url":450,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252780\u002Freactions",{"id":452,"html_url":453,"body_html":454,"created_at":455,"updated_at":455,"author_association":420,"user":456,"reactions":457},627252843,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252843","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fdc0dbe6f339d3bf74d3dc9415c35d2f594b5d7cc7120194ede506137741f9c72\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34366232333738356662376239633236613035393132626331616266633061633f733d393626643d6d6d26723d67\">\u003Cimg alt=\"EBekker\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fdc0dbe6f339d3bf74d3dc9415c35d2f594b5d7cc7120194ede506137741f9c72\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34366232333738356662376239633236613035393132626331616266633061633f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>EBekker\u003C\u002Fstrong> commented on \u003Cstrong>2017-02-01 15:07:12\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>WOWWWW... \u003Ccode>template.json\u003C\u002Fcode> and \u003Ccode>Templates.nuspec\u003C\u002Fcode> that is described in XML. Great to see that everything is nice and consistent and you aren't forced to constantly switch between data formats! ;)\u003C\u002Fp>\n\u003Cp>You would think we would all learn after \u003Ccode>project.json\u003C\u002Fcode>. Guess not. Everything else looks cool, though. Well, except for the minor detail that this is all baked in the error-prone and difficult-to-work-with-and-discover CLI that we have spent 20 years after DOS to remove ourselves from...\u003C\u002Fp>\n\u003Cp>But besides that, looks good. :)\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>For you, there is the Visual Studio IDE.\u003C\u002Fp>","2020-05-12T10:22:39Z",{"login":422,"avatar_url":423,"html_url":424},{"url":458,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252843\u002Freactions",{"id":460,"html_url":461,"body_html":462,"created_at":463,"updated_at":463,"author_association":420,"user":464,"reactions":465},627252903,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252903","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-02-01 15:27:17\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>For you, there is the Visual Studio IDE.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>The VS IDE does not provide optional feature support. The VS IDE will soon use the templating engine I describe here to drive their project and item templates.\u003C\u002Fp>","2020-05-12T10:22:46Z",{"login":422,"avatar_url":423,"html_url":424},{"url":466,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252903\u002Freactions",{"id":468,"html_url":469,"body_html":470,"created_at":471,"updated_at":471,"author_association":420,"user":472,"reactions":473},627252971,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627252971","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F45ebfe2090e87bc93868ffcca033b7605c26f30a5c01342b5fc8374ec513e21f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36316364653263666637616665616261633235633139636339623336666433323f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Sayed Ibrahim Hashimi (MSFT)\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F45ebfe2090e87bc93868ffcca033b7605c26f30a5c01342b5fc8374ec513e21f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36316364653263666637616665616261633235633139636339623336666433323f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fsedodream.com\u002F\">Sayed Ibrahim Hashimi (MSFT)\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-02-08 18:21:21\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Can this be used for multi-project templates?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Yes there is no distinction between single and multi project templates.\u003C\u002Fp>","2020-05-12T10:22:54Z",{"login":422,"avatar_url":423,"html_url":424},{"url":474,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627252971\u002Freactions",{"id":476,"html_url":477,"body_html":478,"created_at":479,"updated_at":479,"author_association":420,"user":480,"reactions":481},627253036,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627253036","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F45ebfe2090e87bc93868ffcca033b7605c26f30a5c01342b5fc8374ec513e21f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36316364653263666637616665616261633235633139636339623336666433323f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Sayed Ibrahim Hashimi (MSFT)\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F45ebfe2090e87bc93868ffcca033b7605c26f30a5c01342b5fc8374ec513e21f\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36316364653263666637616665616261633235633139636339623336666433323f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fsedodream.com\u002F\">Sayed Ibrahim Hashimi (MSFT)\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-02-08 18:23:59\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>WOWWWW... \u003Ccode>template.json\u003C\u002Fcode> and \u003Ccode>Templates.nuspec\u003C\u002Fcode> that is described in XML. Great to see that everything is nice and consistent and you aren't forced to constantly switch between data formats! ;)\u003C\u002Fp>\n\u003Cp>You would think we would all learn after \u003Ccode>project.json\u003C\u002Fcode>. Guess not. Everything else looks cool, though. Well, except for the minor detail that this is all baked in the error-prone and difficult-to-work-with-and-discover CLI that we have spent 20 years after DOS to remove ourselves from...\u003C\u002Fp>\n\u003Cp>But besides that, looks good. :)\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>The format of the template json file is extensible. It doesn't have to be JSON, it can be any format. We just created a provider that reads from JSON to begin with.\u003C\u002Fp>","2020-05-12T10:23:01Z",{"login":422,"avatar_url":423,"html_url":424},{"url":482,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627253036\u002Freactions",{"id":484,"html_url":485,"body_html":486,"created_at":487,"updated_at":487,"author_association":420,"user":488,"reactions":489},627253104,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627253104","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fc6cb35f43c3eee20f3233396754022a486957ac2cd2c3edb58673e57f5b21a75\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f38646262633161333462643363316230383838613335373562653634333966343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Giuseppe Piscopo\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fc6cb35f43c3eee20f3233396754022a486957ac2cd2c3edb58673e57f5b21a75\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f38646262633161333462643363316230383838613335373562653634333966343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Giuseppe Piscopo\u003C\u002Fstrong> commented on \u003Cstrong>2017-02-23 00:04:48\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Just making sure, after reading through whole post: can you include more than one project template in one nuget package? Thank you!\u003C\u002Fp>","2020-05-12T10:23:09Z",{"login":422,"avatar_url":423,"html_url":424},{"url":490,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627253104\u002Freactions",{"id":492,"html_url":493,"body_html":494,"created_at":495,"updated_at":495,"author_association":420,"user":496,"reactions":497},627253179,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627253179","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-02-23 10:13:11\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Just making sure, after reading through whole post: can you include more than one project template in one nuget package? Thank you!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I've not tried this yet but I think you can move the \u003Ccode>.template.config\u003C\u002Fcode> folder up a level so that it exists alongside both project folders and it should still work.\u003C\u002Fp>","2020-05-12T10:23:17Z",{"login":422,"avatar_url":423,"html_url":424},{"url":498,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627253179\u002Freactions",{"id":500,"html_url":501,"body_html":502,"created_at":503,"updated_at":503,"author_association":420,"user":504,"reactions":505},627253232,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627253232","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F04bb35aaf6832611881d11eb7bff9808ac09697fa9526706d24bee6444af198a\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f37303439383033313234633630333134376334333838653036393164626637323f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Sayed Ibrahim Hashimi\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F04bb35aaf6832611881d11eb7bff9808ac09697fa9526706d24bee6444af198a\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f37303439383033313234633630333134376334333838653036393164626637323f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fsedodream.com\u002F\">Sayed Ibrahim Hashimi\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-03-04 00:07:21\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Just making sure, after reading through whole post: can you include more than one project template in one nuget package? Thank you!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Yes a NuGet package can contain several templates.\u003C\u002Fp>","2020-05-12T10:23:24Z",{"login":422,"avatar_url":423,"html_url":424},{"url":506,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627253232\u002Freactions",{"id":508,"html_url":509,"body_html":510,"created_at":511,"updated_at":511,"author_association":420,"user":512,"reactions":513},627253293,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627253293","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F655801b4dfa6e4bebe9baf36a68ad8de90af1a5f9ab3959457a03fd9e0e6874c\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62626663343635613562666634616162323166316261356133353036393737373f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Issa\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F655801b4dfa6e4bebe9baf36a68ad8de90af1a5f9ab3959457a03fd9e0e6874c\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62626663343635613562666634616162323166316261356133353036393737373f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Issa\u003C\u002Fstrong> commented on \u003Cstrong>2019-04-18 21:38:14\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>How can I create the template so that it includes a solution file (.sln) and any other files in the directory.\u003Cbr \u002F>\nCreating the nuget package shows everything in the content folder sln, extra files, subfolder for project.\u003Cbr \u002F>\nEverything is there.\u003C\u002Fp>\n\u003Cp>But doing a dotnet new MySolutionTemplate only creates the csproj and its files.\u003Cbr \u002F>\nIt ignores the parent directory which includes the solution file.\u003C\u002Fp>\n\u003Cp>Is there a way to do this?\u003C\u002Fp>","2020-05-12T10:23:31Z",{"login":422,"avatar_url":423,"html_url":424},{"url":514,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627253293\u002Freactions",{"id":516,"html_url":517,"body_html":518,"created_at":519,"updated_at":519,"author_association":420,"user":520,"reactions":521},627253358,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-627253358","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-04-19 14:29:59\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>How can I create the template so that it includes a solution file (.sln) and any other files in the directory.\u003Cbr \u002F>\nCreating the nuget package shows everything in the content folder sln, extra files, subfolder for project.\u003Cbr \u002F>\nEverything is there.\u003C\u002Fp>\n\u003Cp>But doing a dotnet new MySolutionTemplate only creates the csproj and its files.\u003Cbr \u002F>\nIt ignores the parent directory which includes the solution file.\u003C\u002Fp>\n\u003Cp>Is there a way to do this?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>You can look at \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FDotnet-Boxed\u002FTemplates\">https:\u002F\u002Fgithub.com\u002FDotnet-Boxed\u002FTemplates\u003C\u002Fa> for an example.\u003C\u002Fp>","2020-05-12T10:23:38Z",{"login":422,"avatar_url":423,"html_url":424},{"url":522,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627253358\u002Freactions",{"id":524,"html_url":525,"body_html":526,"created_at":527,"updated_at":527,"author_association":528,"user":529,"reactions":533},670344982,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-670344982","\u003Cp>Hello, after installing these templates.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>It's listing in command line \"dotnet new --list\"\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>But the problem is, It is not showing in Visual Studio Project Templates.\u003Cbr \u002F>\nCan you please let me why it's not showing in visual sudio?\u003C\u002Fp>","2020-08-07T06:09:23Z","NONE",{"login":530,"avatar_url":531,"html_url":532},"Malayp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3540508?v=4","https:\u002F\u002Fgithub.com\u002FMalayp",{"url":534,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F670344982\u002Freactions",{"id":536,"html_url":537,"body_html":538,"created_at":539,"updated_at":539,"author_association":420,"user":540,"reactions":541},670346521,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-670346521","\u003Cp>A UI in Visual Studio does not exist yet, although it's \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Ftemplating\u002Fissues\u002F481\">currently being built\u003C\u002Fa>.\u003C\u002Fp>","2020-08-07T06:14:29Z",{"login":422,"avatar_url":423,"html_url":424},{"url":542,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F670346521\u002Freactions",{"id":544,"html_url":545,"body_html":546,"created_at":547,"updated_at":548,"author_association":528,"user":549,"reactions":550},670416843,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-670416843","\u003Cp>Hi \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FRehanSaeed\">@RehanSaeed\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Thank you so much for your quick response.\u003C\u002Fp>\n\u003Cp>I am having few more questions :\u003Cbr \u002F>\nWhat is the installation path for both VSIX Project templates and dotnet CLI Project templates?\u003C\u002Fp>\n\u003Cp>And can you please give a rough timeline, when that UI will be ready in Visual Studio? So that we can answer our clients as they are facing difficulties by using command line and visual studio both.\u003C\u002Fp>\n\u003Cp>And Is there a way to PACK VSIX installer for NUGET sharing?\u003C\u002Fp>","2020-08-07T09:09:05Z","2020-08-07T09:11:37Z",{"login":530,"avatar_url":531,"html_url":532},{"url":551,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F670416843\u002Freactions",{"id":553,"html_url":554,"body_html":555,"created_at":556,"updated_at":556,"author_association":420,"user":557,"reactions":558},670426447,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-670426447","\u003Cp>Not sure about install path.\u003C\u002Fp>\n\u003Cp>Regarding timeline, that's something you can ask in the thread I linked.\u003C\u002Fp>","2020-08-07T09:31:01Z",{"login":422,"avatar_url":423,"html_url":424},{"url":559,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F670426447\u002Freactions",{"id":561,"html_url":562,"body_html":563,"created_at":564,"updated_at":564,"author_association":528,"user":565,"reactions":566},670460063,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F69#issuecomment-670460063","\u003Cp>Thank you 👍  \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FRehanSaeed\">@RehanSaeed\u003C\u002Fa>\u003Cbr \u002F>\nI will ask that in that linked thread.\u003C\u002Fp>","2020-08-07T10:58:05Z",{"login":530,"avatar_url":531,"html_url":532},{"url":567,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F670460063\u002Freactions","2017-01-18T00:00:00+00:00",null,"How to create project templates using dotnet new and the template.json file. How to share project templates by creating NuGet packages.","md",[573,575,576,577,578,579,580,581,582,583],{"depth":574,"value":77},1,{"depth":574,"value":139},{"depth":574,"value":181},{"depth":407,"value":211},{"depth":407,"value":247},{"depth":407,"value":270},{"depth":407,"value":305},{"depth":574,"value":337},{"depth":574,"value":363},{"depth":574,"value":391},"\u002Fimages\u002Fhero\u002FMicrosoft-.NET-1366x768.png",{},true,"posts\u002F2017\u002Fcustom-project-templates-using-dotnet-new\u002Findex",[589,590,105,384,591],".NET","dotnet","Project Template",4,[594,598,601,606,610,613,616,620,624,628,631,635,640,643,646,650,654,658,661,665,669,673,676,680,685,689,692,695,698,703,707,710,715,719,723,727,730,734,738,742,746,750,754,758,761,765,769,773,777,780,784,788,791,792,796,800,804,808,812,816,820,824,828,831,834,837,841,845,848,852,855,858,861,864,868,872,875,878,882,886,888,891,894,898,902,906,910,913,916,921,924,927,931,934,938,942,945,949,952,955,959,963,967,971],{"title":595,"permalink":596,"heroImage":597,"timeToRead":574},"Just Start - The First Blog Post","\u002Fjust-start-the-first-blog-post\u002F","\u002Fimages\u002Fhero\u002FJust-Start-1366x768.png",{"title":599,"permalink":600,"heroImage":584,"timeToRead":407},"ConfigureAwait in Task Parallel Library (TPL)","\u002Fconfigureawait-task-parallel-library\u002F",{"title":602,"permalink":603,"heroImage":604,"timeToRead":605},"Stop The Brace Wars, Use StyleCop","\u002Fstop-brace-wars-use-stylecop\u002F","\u002Fimages\u002Fhero\u002FStyleCop-1366x768.png",3,{"title":607,"permalink":608,"heroImage":609,"timeToRead":592},"Reactive Extensions (Rx) - Part 1 - Replacing C# Events","\u002Freactive-extensions-part1-replacing-events\u002F","\u002Fimages\u002Fhero\u002FReactive-Extensions-1366x768.png",{"title":611,"permalink":612,"heroImage":609,"timeToRead":605},"Reactive Extensions (Rx) - Part 2 - Wrapping C# Events","\u002Freactive-extensions-part2-wrapping-events\u002F",{"title":614,"permalink":615,"heroImage":609,"timeToRead":407},"Reactive Extensions (Rx) - Part 3 - Naming Conventions","\u002Freactive-extensions-part3-naming-conventions\u002F",{"title":617,"permalink":618,"heroImage":619,"timeToRead":605},"WPF Metro Part 1 - Modern UI for WPF","\u002Fwpf-metro-part1-modern-ui-for-wpf\u002F","\u002Fimages\u002Fhero\u002FModern-UI-for-WPF-1366x768.png",{"title":621,"permalink":622,"heroImage":623,"timeToRead":605},"WPF Metro Part 2 - MahApps Metro","\u002Fwpf-metro-part2-mahapps-metro\u002F","\u002Fimages\u002Fhero\u002FMahApps-Metro-1366x768.png",{"title":625,"permalink":626,"heroImage":627,"timeToRead":605},"Windows 8.1 TouchScreen Gaming Laptops","\u002Fwindows-8-touchscreen-gaming-laptops\u002F","\u002Fimages\u002Fhero\u002FFry-Shutup-And-Take-My-Money-1366x768.png",{"title":629,"permalink":630,"heroImage":609,"timeToRead":605},"Reactive Extensions (Rx) - Part 4 - Replacing Timers","\u002Freactive-extensions-part4-replacing-timers\u002F",{"title":632,"permalink":633,"heroImage":634,"timeToRead":407},"WPF Metro Part 3 - Elysium","\u002Fwpf-metro-part3-elysium\u002F","\u002Fimages\u002Fhero\u002FElysium-1366x768.png",{"title":636,"permalink":637,"heroImage":638,"timeToRead":639},"WPF Metro Part 4 - Elysium Extra","\u002Fwpf-metro-part4-elysium-extra\u002F","\u002Fimages\u002Fhero\u002FElysium-Extra-1366x768.png",8,{"title":641,"permalink":642,"heroImage":609,"timeToRead":592},"Reactive Extensions (Rx) - Part 5 - Awaiting Observables","\u002Freactive-extensions-part5-awaiting-observables\u002F",{"title":644,"permalink":645,"heroImage":584,"timeToRead":639},"GetHashCode Made Easy","\u002Fgethashcode-made-easy\u002F",{"title":647,"permalink":648,"heroImage":609,"timeToRead":649},"Reactive Extensions (Rx) - Part 6 - Task ToObservable","\u002Freactive-extensions-part6-task-toobservable\u002F",5,{"title":651,"permalink":652,"heroImage":653,"timeToRead":574},"Portable Class Library (PCL) version of NotificationsExtensions NuGet package","\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002F","\u002Fimages\u002Fhero\u002FNuGet-1366x768.png",{"title":655,"permalink":656,"heroImage":657,"timeToRead":649},"Model-View-ViewModel (MVVM) - Part 1 - Overview","\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002F","\u002Fimages\u002Fhero\u002FMVVM-1366x768.png",{"title":659,"permalink":660,"heroImage":657,"timeToRead":592},"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002F",{"title":662,"permalink":663,"heroImage":657,"timeToRead":664},"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002F",11,{"title":666,"permalink":667,"heroImage":668,"timeToRead":605},"Naming Conventions","\u002Fnaming-conventions\u002F","\u002Fimages\u002Fhero\u002FNaming-Conventions-1366x768.png",{"title":670,"permalink":671,"heroImage":657,"timeToRead":672},"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002F",12,{"title":674,"permalink":675,"heroImage":638,"timeToRead":592},"Elysium Extra 1.1 Released","\u002Felysium-extra-1-1-released\u002F",{"title":326,"permalink":677,"heroImage":678,"timeToRead":679},"\u002Fasp-net-mvc-boilerplate\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Boilerplate-1366x768.png",7,{"title":681,"permalink":682,"heroImage":683,"timeToRead":684},"Internet Favicon Madness (Updated)","\u002Finternet-favicon-madness\u002F","\u002Fimages\u002Fhero\u002FFavicons-1366x768.png",17,{"title":686,"permalink":687,"heroImage":688,"timeToRead":679},"Custom Visual Studio Project Templates","\u002Fcustom-visual-studio-project-templates\u002F","\u002Fimages\u002Fhero\u002FVisual-Studio-1366x768.png",{"title":690,"permalink":691,"heroImage":688,"timeToRead":605},"Configuration File Transforms In Visual Studio Should Be Built In","\u002Fconfiguration-file-transforms-in-visual-studio-should-be-built-in\u002F",{"title":693,"permalink":694,"heroImage":678,"timeToRead":664},"Securing the ASP.NET MVC Web.config","\u002Fsecuring-the-aspnet-mvc-web-config\u002F",{"title":696,"permalink":697,"heroImage":609,"timeToRead":407},"Reactive Extensions (Rx) - Part 7 - Sample Events","\u002Freactive-extensions-part7-sample-events\u002F",{"title":699,"permalink":700,"heroImage":701,"timeToRead":702},"NWebSec ASP.NET MVC Security Through HTTP Headers","\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002F","\u002Fimages\u002Fhero\u002FNWebSec-1366x768.png",6,{"title":704,"permalink":705,"heroImage":706,"timeToRead":90},"Content Security Policy (CSP) for ASP.NET MVC","\u002Fcontent-security-policy-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FContent-Security-Policy-CSP-for-ASP.NET-MVC-1366x768.png",{"title":708,"permalink":709,"heroImage":584,"timeToRead":649},"C# 6.0 - Saving Developers From Themselves","\u002Fc-6-0-saving-developers-from-themselves\u002F",{"title":711,"permalink":712,"heroImage":713,"timeToRead":714},"Building RSS\u002FAtom Feeds for ASP.NET MVC","\u002Fbuilding-rssatom-feeds-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRSS-And-Atom-1366x768.png",19,{"title":716,"permalink":717,"heroImage":718,"timeToRead":664},"Canonical URL's for ASP.NET MVC","\u002Fcanonical-urls-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FLink-Juice-1366x768.png",{"title":720,"permalink":721,"heroImage":722,"timeToRead":592},"Dynamically Generating Robots.txt Using ASP.NET MVC","\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRobots.txt-1366x768.jpg",{"title":724,"permalink":725,"heroImage":726,"timeToRead":592},"Minifying HTML for ASP.NET MVC","\u002Fminifying-html-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FThe-Internet-Is-A-Series-Of-Tubes-1366x768.jpg",{"title":728,"permalink":729,"heroImage":678,"timeToRead":407},"Whats New in ASP.NET Core Boilerplate","\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002F",{"title":731,"permalink":732,"heroImage":733,"timeToRead":679},"Dynamically Generating Sitemap.xml for ASP.NET MVC","\u002Fdynamically-generating-sitemap-xml-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FSitemaps-1366x768.png",{"title":735,"permalink":736,"heroImage":737,"timeToRead":407},"So I've Been Awarded Microsoft MVP Status!","\u002Fso-ive-been-awarded-microsoft-mvp-status\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-MVP-1366x768.png",{"title":739,"permalink":740,"heroImage":741,"timeToRead":574},".NET Big-O Algorithm Complexity Cheat Sheet","\u002Fnet-big-o-algorithm-complexity-cheat-sheet\u002F","\u002Fimages\u002Fhero\u002FNET-Big-O-Algorithm-Complexity-Cheat-Sheet-1366x768.jpg",{"title":743,"permalink":744,"heroImage":745,"timeToRead":605},"Logging with Serilog.Exceptions","\u002Flogging-with-serilog-exceptions\u002F","\u002Fimages\u002Fhero\u002FSerilog.Exceptions-1366x768.png",{"title":747,"permalink":748,"heroImage":749,"timeToRead":574},"Make Certificate","\u002Fmake-certificate\u002F","\u002Fimages\u002Fhero\u002FMake-Certificate-1366x768.png",{"title":751,"permalink":752,"heroImage":753,"timeToRead":407},"Colorful.Console","\u002Fcolorful-console\u002F","\u002Fimages\u002Fhero\u002FColorful.Console-1366x768.png",{"title":755,"permalink":756,"heroImage":757,"timeToRead":605},"Subresource Integrity TagHelper Using ASP.NET Core - Part 1","\u002Fsubresource-integrity-taghelper-using-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FMake-Security-Easy-1366x768.png",{"title":759,"permalink":760,"heroImage":757,"timeToRead":592},"Subresource Integrity TagHelper Using ASP.NET Core - Part 2","\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002F",{"title":762,"permalink":763,"heroImage":764,"timeToRead":649},"Social TagHelpers for ASP.NET Core","\u002Fsocial-taghelpers-for-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSocial-Media-1366x768.png",{"title":766,"permalink":767,"heroImage":768,"timeToRead":702},"Azure Active Directory Versus Identity Server","\u002Fazure-active-directory-versus-identity-server\u002F","\u002Fimages\u002Fhero\u002FAzure-Active-Directory-Versus-Identity-Server-1366x768.png",{"title":770,"permalink":771,"heroImage":772,"timeToRead":407},"ASP.NET Core Fluent Interface Extensions","\u002Fasp-net-core-fluent-interface-extensions\u002F","\u002Fimages\u002Fhero\u002FFluent-Interface-All-The-Things-1366x768.png",{"title":774,"permalink":775,"heroImage":776,"timeToRead":664},"NGINX for ASP.NET Core In-Depth","\u002Fnginx-asp-net-core-depth\u002F","\u002Fimages\u002Fhero\u002FNGINX-1366x768.png",{"title":778,"permalink":779,"heroImage":584,"timeToRead":407},"The Dotnet Watch Tool","\u002Fthe-dotnet-watch-tool\u002F",{"title":781,"permalink":782,"heroImage":783,"timeToRead":592},"Making Application Insights Fast & Secure","\u002Fmaking-application-insights-fast-and-secure\u002F","\u002Fimages\u002Fhero\u002FApplication-Insights-1366x768.png",{"title":785,"permalink":786,"heroImage":787,"timeToRead":679},"SEO Friendly URL's for ASP.NET Core","\u002Fseo-friendly-urls-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSearch-Engine-Optimization-SEO-1366x768.png",{"title":789,"permalink":790,"heroImage":609,"timeToRead":574},"Reactive Extensions (Rx) - Part 8 - Timeouts","\u002Freactive-extensions-rx-part-8-timeouts\u002F",{"title":39,"permalink":53,"heroImage":584,"timeToRead":592},{"title":793,"permalink":794,"heroImage":795,"timeToRead":639},"Cross-Platform DevOps for .NET Core","\u002Fcross-platform-devops-net-core\u002F","\u002Fimages\u002Fhero\u002FDotnet-Cake-AppVeyor-Travis-1366x768.png",{"title":797,"permalink":798,"heroImage":799,"timeToRead":679},"Cleaning Up CSPROJ","\u002Fcleaning-up-csproj\u002F","\u002Fimages\u002Fhero\u002FCleaning-Up-CSPROJ-1366x768.png",{"title":801,"permalink":59,"heroImage":802,"timeToRead":803},"dotnet new Feature Selection","\u002Fimages\u002Fhero\u002FWho-Wants-To-Be-A-Millionaire-1366x768.png",9,{"title":805,"permalink":806,"heroImage":807,"timeToRead":592},"ASP.NET Core Lazy Command Pattern","\u002Fasp-net-core-lazy-command-pattern\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Lazy-Command-Pattern-1366x768.png",{"title":809,"permalink":810,"heroImage":811,"timeToRead":407},"Structured Data using Schema.NET","\u002Fstructured-data-using-schema-net\u002F","\u002Fimages\u002Fhero\u002FSchema.NET-1366x768.png",{"title":813,"permalink":814,"heroImage":815,"timeToRead":702},"Keeping Up With Software Development","\u002Fkeeping-software-development\u002F","\u002Fimages\u002Fhero\u002FKeeping-up-with-Software-Development-1366x768.png",{"title":817,"permalink":818,"heroImage":819,"timeToRead":407},"A Very Generic .editorconfig File (Updated)","\u002Fgeneric-editorconfig-file\u002F","\u002Fimages\u002Fhero\u002FA-Very-Generic-Editorconfig-File-1366x768.png",{"title":821,"permalink":822,"heroImage":823,"timeToRead":649},"ASP.NET Core Caching in Practice","\u002Fasp-net-core-caching-in-practice\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Caching-in-Practice-1366x768.png",{"title":825,"permalink":826,"heroImage":827,"timeToRead":574},"Docker Read-Only File Systems","\u002Fdocker-read-file-systems\u002F","\u002Fimages\u002Fhero\u002FDocker-1366x768.png",{"title":829,"permalink":830,"heroImage":827,"timeToRead":605},"Docker Labels in Depth","\u002Fdocker-labels-depth\u002F",{"title":832,"permalink":833,"heroImage":827,"timeToRead":592},"Useful Docker Images - Part 1","\u002Fuseful-docker-images-part1\u002F",{"title":835,"permalink":836,"heroImage":827,"timeToRead":649},"Useful Docker Images - Part 2","\u002Fuseful-docker-images-part2\u002F",{"title":838,"permalink":839,"heroImage":840,"timeToRead":592},"Writing your Webpack configuration in TypeScript","\u002Fwriting-your-webpack-configuration-in-typescript\u002F","\u002Fimages\u002Fhero\u002FTypeScript-1366x768.png",{"title":842,"permalink":843,"heroImage":844,"timeToRead":649},"Writing Code while Asleep","\u002Fwriting-code-asleep\u002F","\u002Fimages\u002Fhero\u002FWhile-Alive-Eat-Sleep-Code-Repeat-1366x768.png",{"title":846,"permalink":847,"heroImage":584,"timeToRead":407},"The Dotnet Watch Tool Revisited","\u002Fthe-dotnet-watch-tool-revisited\u002F",{"title":849,"permalink":850,"heroImage":851,"timeToRead":407},".NET Boxed","\u002Fnet-boxed\u002F","\u002Fimages\u002Fhero\u002FDotnet-Boxed-1366x768.png",{"title":853,"permalink":854,"heroImage":584,"timeToRead":407},"Migrating to Entity Framework Core Seed Data","\u002Fmigrating-to-entity-framework-core-seed-data\u002F",{"title":856,"permalink":857,"heroImage":584,"timeToRead":605},"Optimally Configuring Entity Framework Core","\u002Foptimally-configuring-entity-framework-core\u002F",{"title":859,"permalink":860,"heroImage":584,"timeToRead":574},"ASP.NET Core Hidden Gem - QueryHelpers","\u002Fasp-net-core-hidden-gem-queryhelpers\u002F",{"title":862,"permalink":863,"heroImage":584,"timeToRead":803},"Optimally Configuring ASP.NET Core HttpClientFactory","\u002Foptimally-configuring-asp-net-core-httpclientfactory\u002F",{"title":865,"permalink":866,"heroImage":867,"timeToRead":679},"PluralSight vs LinkedIn Learning vs FrontendMasters vs Egghead.io vs YouTube","\u002Fpluralsight-vs-linkedin-learning-vs-frontendmasters-vs-egghead-io-vs-youtube\u002F","\u002Fimages\u002Fhero\u002FOnline-Learning-1366x768.png",{"title":869,"permalink":870,"heroImage":871,"timeToRead":803},"Is ASP.NET Core now a Mature Platform?","\u002Fis-asp-net-core-now-a-mature-platform\u002F","\u002Fimages\u002Fhero\u002FRocket-1366x768.jpg",{"title":873,"permalink":874,"heroImage":851,"timeToRead":803},"A Simple and Fast Object Mapper","\u002Fa-simple-and-fast-object-mapper\u002F",{"title":876,"permalink":877,"heroImage":827,"timeToRead":574},"Securing ASP.NET Core in Docker","\u002Fsecuring-asp-net-core-in-docker\u002F",{"title":879,"permalink":880,"heroImage":881,"timeToRead":592},"Git Cloning the Windows OS Repo","\u002Fgit-cloning-the-windows-os-repo\u002F","\u002Fimages\u002Fhero\u002FWindows-1366x768.png",{"title":883,"permalink":884,"heroImage":885,"timeToRead":679},".gitattributes Best Practices","\u002Fgitattributes-best-practices\u002F","\u002Fimages\u002Fhero\u002FGit-1366x768.png",{"title":887,"permalink":65,"heroImage":584,"timeToRead":605},"Unit Testing dotnet new Templates",{"title":889,"permalink":890,"heroImage":851,"timeToRead":649},"What dotnet new Could Be","\u002Fwhat-dotnet-new-could-be\u002F",{"title":892,"permalink":893,"heroImage":584,"timeToRead":592},"ASP.NET Core Integration Testing & Mocking using Moq","\u002Fasp-net-core-integration-testing-mocking-using-moq\u002F",{"title":895,"permalink":896,"heroImage":897,"timeToRead":679},"Choosing a Static Site Generator","\u002Fchoosing-a-static-site-generator\u002F","\u002Fimages\u002Fhero\u002FStatic-Site-Generators-1600x900.png",{"title":899,"permalink":900,"heroImage":901,"timeToRead":407},"Spicing up your Browser Console","\u002Fspicing-up-your-browser-console\u002F","\u002Fimages\u002Fhero\u002FFiglet-Fonts-1600x900.png",{"title":903,"permalink":904,"heroImage":905,"timeToRead":649},"Racism in Software Development & Beyond","\u002Fracism-in-software-development-and-beyond\u002F","\u002Fimages\u002Fhero\u002FBlack-Glowing-Fist-1600x900.png",{"title":907,"permalink":908,"heroImage":909,"timeToRead":649},"The Easiest Way to Version NuGet Packages","\u002Fthe-easiest-way-to-version-nuget-packages\u002F","\u002Fimages\u002Fhero\u002FSemantic-Versioning-1600x900.png",{"title":911,"permalink":912,"heroImage":653,"timeToRead":702},"The Fastest NuGet Package Ever Published (Probably)","\u002Fthe-fastest-nuget-package-ever-published-probably\u002F",{"title":914,"permalink":915,"heroImage":584,"timeToRead":605},"Automating .NET Security Updates","\u002Fautomating-dotnet-security-updates\u002F",{"title":917,"permalink":918,"heroImage":919,"timeToRead":920},"Deep Dive into Open Telemetry for .NET","\u002Fdeep-dive-into-open-telemetry-for-net\u002F","\u002Fimages\u002Fhero\u002FOpen-Telemetry-1600x900.png",10,{"title":922,"permalink":923,"heroImage":919,"timeToRead":605},"Open Telemetry for ASP.NET Core","\u002Fopen-telemetry-for-asp-net-core\u002F",{"title":925,"permalink":926,"heroImage":919,"timeToRead":605},"Exporting Open Telemetry Data to Jaeger","\u002Fexporting-open-telemetry-data-to-jaeger\u002F",{"title":928,"permalink":929,"heroImage":930,"timeToRead":605},"A System for Grouping & Sorting CSS Properties","\u002Fsystem-for-grouping-and-sorting-css-properties\u002F","\u002Fimages\u002Fhero\u002FCSS-1600x900.png",{"title":932,"permalink":933,"heroImage":930,"timeToRead":702},"CSS General Rules of Thumb","\u002Fcss-general-rules-of-thumb\u002F",{"title":935,"permalink":936,"heroImage":937,"timeToRead":592},"Web Component Custom Element Gotchas","\u002Fweb-component-custom-element-gotchas\u002F","\u002Fimages\u002Fhero\u002FWeb-Components-1600x900.png",{"title":939,"permalink":940,"heroImage":941,"timeToRead":407},"Code Coverage & Frontend Testing","\u002Fcode-coverage-and-frontend-testing\u002F","\u002Fimages\u002Fhero\u002FJest-Cypress-1600x900.png",{"title":943,"permalink":944,"heroImage":688,"timeToRead":574},".NET Boxed Visual Studio Integration","\u002Fdotnet-boxed-visual-studio-integration\u002F",{"title":946,"permalink":947,"heroImage":948,"timeToRead":605},"The Windows Package Manager","\u002Fwindows-package-manager\u002F","\u002Fimages\u002Fhero\u002FWinget-1600x900.png",{"title":950,"permalink":951,"heroImage":584,"timeToRead":605},"The Problem with C# 10 Implicit Usings","\u002Fthe-problem-with-csharp-10-implicit-usings\u002F",{"title":953,"permalink":954,"heroImage":919,"timeToRead":592},"Optimally Configuring Open Telemetry Tracing for ASP.NET Core","\u002Foptimally-configuring-open-telemetry-tracing-for-asp-net-core\u002F",{"title":956,"permalink":957,"heroImage":958,"timeToRead":407},"Live Streaming .NET","\u002Flive-streaming-dotnet\u002F","\u002Fimages\u002Fhero\u002FMy-YouTube-1920x1080.jpg",{"title":960,"permalink":961,"heroImage":962,"timeToRead":407},"I Was Awarded as an Open UK Honouree","\u002Fopen-uk-honouree\u002F","\u002Fimages\u002Fhero\u002FOpen-UK-Honours-1366x768.jpg",{"title":964,"permalink":965,"heroImage":966,"timeToRead":592},"On the Etiquette of Pull Request Comments","\u002Fon-the-etiquette-of-pull-request-comments\u002F","\u002Fimages\u002Fhero\u002FPrecious-PR-1600x900.jpg",{"title":968,"permalink":969,"heroImage":970,"timeToRead":574},"AI Gone Rogue","\u002Fai-gone-rogue\u002F","\u002Fimages\u002Fhero\u002FHAL-9000-Prop-1600x900.png",{"title":972,"permalink":973,"heroImage":974,"timeToRead":649},"AI Learnings from Upgrading My Blog","\u002Fai-learnings-from-upgrading-my-blog\u002F","\u002Fimages\u002Fhero\u002FAI-Agents-Upgrading-a-Blog-With-Human-Code-Review-1600x900.png",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":976},"\u003Cpath fill=\"currentColor\" d=\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.55 96.55 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.3 96.3 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96s-42.981-96-96-96\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":978},"\u003Cpath fill=\"currentColor\" d=\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48c27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":980},"\u003Cpath fill=\"currentColor\" d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645c0 138.72-105.583 298.558-298.558 298.558c-59.452 0-114.68-17.219-161.137-47.106c8.447.974 16.568 1.299 25.34 1.299c49.055 0 94.213-16.568 130.274-44.832c-46.132-.975-84.792-31.188-98.112-72.772c6.498.974 12.995 1.624 19.818 1.624c9.421 0 18.843-1.3 27.614-3.573c-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319c-28.264-18.843-46.781-51.005-46.781-87.391c0-19.492 5.197-37.36 14.294-52.954c51.655 63.675 129.3 105.258 216.365 109.807c-1.624-7.797-2.599-15.918-2.599-24.04c0-57.828 46.782-104.934 104.934-104.934c30.213 0 57.502 12.67 76.67 33.137c23.715-4.548 46.456-13.32 66.599-25.34c-7.798 24.366-24.366 44.833-46.132 57.827c21.117-2.273 41.584-8.122 60.426-16.243c-14.292 20.791-32.161 39.308-52.628 54.253\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":982},"\u003Cpath fill=\"currentColor\" d=\"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6c0-13.8 11.1-24.9 24.9-24.9c13.6 0 24.6 11.1 24.6 24.9c0 13.6-11.1 24.6-24.6 24.6M504 256c0 137-111 248-248 248S8 393 8 256S119 8 256 8s248 111 248 248m-132.3-41.2c-9.4 0-17.7 3.9-23.8 10c-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3l55.4 12.5c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8c-6.1-6.4-14.7-10.2-24.1-10.2c-34.9 0-46.3 46.9-14.4 62.8c-1.1 5-1.7 10.2-1.7 15.5c0 52.6 59.2 95.2 132 95.2c73.1 0 132.3-42.6 132.3-95.2c0-5.3-.6-10.8-1.9-15.8c31.3-16 19.8-62.5-14.9-62.5M302.8 331c-18.2 18.2-76.1 17.9-93.6 0c-2.2-2.2-6.1-2.2-8.3 0c-2.5 2.5-2.5 6.4 0 8.6c22.8 22.8 87.3 22.8 110.2 0c2.5-2.2 2.5-6.1 0-8.6c-2.2-2.2-6.1-2.2-8.3 0m7.7-75c-13.6 0-24.6 11.1-24.6 24.9c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.1 24.9-24.6c0-13.8-11-24.9-24.9-24.9\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":984},"\u003Cpath fill=\"currentColor\" d=\"M512 194.8c0 101.3-82.4 183.8-183.8 183.8c-101.7 0-184.4-82.4-184.4-183.8c0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8M0 501.5h90v-491H0z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":986},"\u003Cpath fill=\"currentColor\" d=\"m20.216 6.415l-.132-.666c-.119-.598-.388-1.163-1.001-1.379c-.197-.069-.42-.098-.57-.241c-.152-.143-.196-.366-.231-.572c-.065-.378-.125-.756-.192-1.133c-.057-.325-.102-.69-.25-.987c-.195-.4-.597-.634-.996-.788a6 6 0 0 0-.626-.194c-1-.263-2.05-.36-3.077-.416a26 26 0 0 0-3.7.062c-.915.083-1.88.184-2.75.5c-.318.116-.646.256-.888.501c-.297.302-.393.77-.177 1.146c.154.267.415.456.692.58c.36.162.737.284 1.123.366c1.075.238 2.189.331 3.287.37q1.829.074 3.65-.118q.449-.05.896-.119c.352-.054.578-.513.474-.834c-.124-.383-.457-.531-.834-.473c-.466.074-.96.108-1.382.146q-1.767.12-3.536.006a22 22 0 0 1-1.157-.107c-.086-.01-.18-.025-.258-.036q-.364-.055-.724-.13c-.111-.027-.111-.185 0-.212h.005q.416-.09.838-.147h.002c.131-.009.263-.032.394-.048a25 25 0 0 1 3.426-.12q1.011.029 2.017.144l.228.031q.4.06.798.145c.392.085.895.113 1.07.542c.055.137.08.288.111.431l.319 1.484a.237.237 0 0 1-.199.284h-.003l-.112.015a37 37 0 0 1-4.743.295a37 37 0 0 1-4.699-.304c-.14-.017-.293-.042-.417-.06c-.326-.048-.649-.108-.973-.161c-.393-.065-.768-.032-1.123.161c-.29.16-.527.404-.675.701c-.154.316-.199.66-.267 1c-.069.34-.176.707-.135 1.056c.087.753.613 1.365 1.37 1.502a39.7 39.7 0 0 0 11.343.376a.483.483 0 0 1 .535.53l-.071.697l-1.018 9.907c-.041.41-.047.832-.125 1.237c-.122.637-.553 1.028-1.182 1.171q-.868.197-1.756.205c-.656.004-1.31-.025-1.966-.022c-.699.004-1.556-.06-2.095-.58c-.475-.458-.54-1.174-.605-1.793l-.731-7.013l-.322-3.094c-.037-.351-.286-.695-.678-.678c-.336.015-.718.3-.678.679l.228 2.185l.949 9.112c.147 1.344 1.174 2.068 2.446 2.272c.742.12 1.503.144 2.257.156c.966.016 1.942.053 2.892-.122c1.408-.258 2.465-1.198 2.616-2.657l1.024-9.995l.215-2.087a.48.48 0 0 1 .39-.426c.402-.078.787-.212 1.074-.518c.455-.488.546-1.124.385-1.766zm-1.478.772c-.145.137-.363.201-.578.233c-2.416.359-4.866.54-7.308.46c-1.748-.06-3.477-.254-5.207-.498c-.17-.024-.353-.055-.47-.18c-.22-.236-.111-.71-.054-.995c.052-.26.152-.609.463-.646c.484-.057 1.046.148 1.526.22q.865.132 1.737.212c2.48.226 5.002.19 7.472-.14q.675-.09 1.345-.21c.399-.072.84-.206 1.08.206c.166.281.188.657.162.974a.54.54 0 0 1-.169.364zm-6.159 3.9c-.862.37-1.84.788-3.109.788a6 6 0 0 1-1.569-.217l.877 9.004c.065.78.717 1.38 1.5 1.38c0 0 1.243.065 1.658.065c.447 0 1.786-.065 1.786-.065c.783 0 1.434-.6 1.499-1.38l.94-9.95a4 4 0 0 0-1.322-.238c-.826 0-1.491.284-2.26.613\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":988},"\u003Cpath fill=\"currentColor\" d=\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134c-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9c152.3 0 165.1-3.7 204 11.4c60.1 23.3 65.6 79.5 44 140.3c-21.5 62.6-72.5 89.5-140.1 90.3c-43.4.7-69.5-7-75.3 24.2M357.1 152c-1.8-1.3-2.5-1.8-3 1.3c-2 11.4-5.1 22.5-8.8 33.6c-39.9 113.8-150.5 103.9-204.5 103.9c-6.1 0-10.1 3.3-10.9 9.4c-22.6 140.4-27.1 169.7-27.1 169.7c-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9c.7-5.4-1.1 6.1 14.4-91.3c4.6-22 14.3-19.7 29.3-19.7c71 0 126.4-28.8 142.9-112.3c6.5-34.8 4.6-71.4-23.8-92.6\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":990},"\u003Cpath fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8m0 448c-110.532 0-200-89.431-200-200c0-110.495 89.472-200 200-200c110.491 0 200 89.471 200 200c0 110.53-89.431 200-200 200m107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516c17.561-9.845 28.324-16.541 28.324-29.579c0-17.246-21.999-28.693-39.784-28.693c-23.189 0-33.894 10.977-48.942 29.969c-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8M298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42s18.841-42 42-42s42 18.841 42 42\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":992},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 12H5m7 7l-7-7l7-7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":994},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1794232714361]