[{"data":1,"prerenderedAt":1007},["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-visual-studio-project-templates\u002F":37,"post-navigation":603,"i-fa-solid:share-alt":987,"i-fa-brands:facebook":989,"i-fa-brands:twitter":991,"i-fa-brands:reddit":993,"i-fa-brands:patreon":995,"i-simple-icons:buymeacoffee":997,"i-fa-brands:paypal":999,"i-fa-regular:question-circle":1001,"i-feather:arrow-left":1003,"i-feather:arrow-right":1005},{"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":521,"date":579,"dateModified":580,"description":581,"extension":582,"headings":583,"heroImage":591,"meta":592,"path":593,"permalink":593,"published":594,"stem":595,"tags":596,"timeToRead":602},"posts\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Findex.md","Custom Visual Studio Project Templates","Muhammad Rehan Saeed",{"type":42,"value":43,"toc":518},"minimark",[44,48,68,78,80,111,119,127,133,136,144,146,149,155,157,162,169,175,180,187,190,204,212,215,229,238,252,264,270,272,278,286,288,291,299,301,307,314,316,330,337,359,364,371,377,379,386,394,400,412,415,421,423,426,432,434,448,455,464,472,474,477,481,483,486,492,494,508,514],[45,46,47],"p",{},"Creating a custom Visual Studio project template that you can use from the 'New Project' dialogue is a great way to reduce the amount of repetitive code you have to write. It gets you running through the jungle with the leaves brushing against your face, instead of sitting at the starting block wondering where your shoes are.",[45,49,50,51,61,62,67],{},"The ",[52,53,60],"a",{"href":54,"rel":55,"target":59},"https:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com",[56,57,58],"nofollow","noopener","noreferrer","_blank","Visual Studio Gallery"," is a great place to share your custom Visual Studio project template with the community. There are actually two ways to create a template. I recently had to create one for ",[52,63,66],{"href":64,"rel":65,"target":59},"https:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F6cf50a48-fc1e-4eaf-9e82-0b2a6705ca7d",[56,57,58],"ASP.NET Core Boilerplate"," and found it less than simple. This post talks you through creating one and submitting it to the Visual Studio Gallery, allowing anyone to use it from the 'New Project' dialogue.",[45,69,70],{},[71,72],"img",{"alt":73,"src":74,"width":75,"height":76,"loading":77},"The project template shown in the 'Web' section of Visual Studio's 'New Project' dialogue.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FVisualStudioGallery2.png",955,660,"lazy",[45,79,73],{},[81,82,85,91],"h1",{"id":83,"data-section-heading":84},"export-template-as-zip","",[86,87,90],"span",{"className":88},[89],"heading__text","Export Template as .zip",[92,93,96],"anchor-link",{"href":94,"label":95},"#export-template-as-zip","Link to this section",[97,98,105],"svg",{"xmlns":99,"xmlns:xlink":100,"viewBox":101,"version":102,"width":103,"height":103,"aria-hidden":104},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink","0 0 16 16","1.1",22,"true",[106,107],"path",{"fill":108,"fill-rule":109,"d":110},"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",[45,112,113,114,118],{},"The first method of creating a custom project template is to use the 'Export Template' wizard in Visual Studio, as shown in the steps below, you can create a ",[115,116,117],"code",{},".zip"," file which contains a template of your selected project.",[45,120,121],{},[71,122],{"alt":123,"src":124,"width":125,"height":126,"loading":77},"Export .zip Project Template","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportTemplate1.png",320,406,[45,128,129,130,132],{},"The Visual Studio Export Template menu item for exporting a ",[115,131,117],{}," project template.",[45,134,135],{},"The wizard allows you to select the project from your solution you want to export as a template.",[45,137,138],{},[71,139],{"alt":140,"src":141,"width":142,"height":143,"loading":77},"The export template 'Choose template type' screen.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportTemplate2.png",721,553,[45,145,140],{},[45,147,148],{},"You can even specify an icon and preview image of the project template. This is perfect as this information also gets displayed in the Visual Studio 'New Project' dialogue.",[45,150,151],{},[71,152],{"alt":153,"src":154,"width":142,"height":143,"loading":77},"The export template 'Select template options' screen, where you can describe your template.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportTemplate3.png",[45,156,153],{},[45,158,50,159,161],{},[115,160,117],{}," file that is output must be copied into the following folder, for Visual Studio to pick it up:",[163,164],"pre",{"className":165,"language":167,"html":168},[166],"language-text","text","C:\u002FUsers\u002F[Your User Name]\u002FDocuments\u002FVisual Studio [2010|2012|2013|2015]\u002FTemplates\u002FProjectTemplates\n",[45,170,171],{},[71,172],{"alt":173,"src":174,"width":142,"height":143,"loading":77},"The .zip file output as part of the Visual Studio Export Template wizard.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportTemplate4.png",[45,176,50,177,179],{},[115,178,117],{}," file output as part of the Visual Studio Export Template wizard.",[45,181,182,183,186],{},"This is a super easy process and you should really consider creating your own templates if you find yourself making the same old changes to every project you are creating. The downside is that its not very customizable and these types of project templates cannot be submitted to the ",[52,184,60],{"href":54,"rel":185,"target":59},[56,57,58],".",[45,188,189],{},"The gallery website only supports project templates created using the VSIX package. Creating a VSIX package is a pretty involved process and will take a couple of hours.",[81,191,193,197],{"id":192,"data-section-heading":84},"export-template-wizard-extension",[86,194,196],{"className":195},[89],"Export Template Wizard Extension",[92,198,200],{"href":199,"label":95},"#export-template-wizard-extension",[97,201,202],{"xmlns":99,"xmlns:xlink":100,"viewBox":101,"version":102,"width":103,"height":103,"aria-hidden":104},[106,203],{"fill":108,"fill-rule":109,"d":110},[45,205,206,211],{},[52,207,210],{"href":208,"rel":209,"target":59},"https:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F57320b20-34a2-42e4-b97e-e615c71aca24",[56,57,58],"This"," Visual Studio extension claims to support exporting your projects into VSIX packages using a simple wizard interface. Unfortunately, this tool is only available for Visual Studio 2010 and the Microsoft developers of the extension seem to have stopped further development.",[45,213,214],{},"This is a real shame. Here we have an excellent tool which the community really needs. A tool that makes creating a VSIX project template package, a matter of a few clicks. This should be built into Visual Studio out of the box!",[81,216,218,222],{"id":217,"data-section-heading":84},"sidewaffle-project-templates",[86,219,221],{"className":220},[89],"SideWaffle Project Templates",[92,223,225],{"href":224,"label":95},"#sidewaffle-project-templates",[97,226,227],{"xmlns":99,"xmlns:xlink":100,"viewBox":101,"version":102,"width":103,"height":103,"aria-hidden":104},[106,228],{"fill":108,"fill-rule":109,"d":110},[45,230,231,232,237],{},"There is even an alternative method of creating project templates and sharing them with the community that I should mention. It's called ",[52,233,236],{"href":234,"rel":235,"target":59},"http:\u002F\u002Fsidewaffle.com",[56,57,58],"SideWaffle"," (I like the name for some reason). It makes it slightly easier to create a template but its still not as simple as a few clicks. It's certainly something worth taking a look at though.",[81,239,241,245],{"id":240,"data-section-heading":84},"creating-a-vsix-package",[86,242,244],{"className":243},[89],"Creating a VSIX Package",[92,246,248],{"href":247,"label":95},"#creating-a-vsix-package",[97,249,250],{"xmlns":99,"xmlns:xlink":100,"viewBox":101,"version":102,"width":103,"height":103,"aria-hidden":104},[106,251],{"fill":108,"fill-rule":109,"d":110},[45,253,254,255,257,258,263],{},"The first step is to create a ",[115,256,117],{}," project template package using the steps above. Once you've done that, download and install the ",[52,259,262],{"href":260,"rel":261,"target":59},"https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fdownload\u002Fdetails.aspx?id=40758",[56,57,58],"Microsoft Visual Studio 2013 SDK",". This will give you new project templates to create VSIX packages. The first thing to do is create a new C# Project Template (Or a Visual Basic one if you prefer).",[45,265,266],{},[71,267],{"alt":268,"src":269,"width":75,"height":76,"loading":77},"The new project dialogue, showing how to create a new VSIX C# project.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX1.png",[45,271,268],{},[45,273,274,275,277],{},"The next step is to open the ",[115,276,117],{}," version of your project template and copy the contents into your new project. Copy everything (Including the project file), except the 'Properties' folder as this will conflict with the existing one in the project.",[45,279,280],{},[71,281],{"alt":282,"src":283,"width":284,"height":285,"loading":77},"An example of a VSIX C# project from the ASP.NET Core Boilerplate project template.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX2.png",269,587,[45,287,282],{},[45,289,290],{},"Select all the files in the project and in the properties window, ensure that their 'Build Action' is set to 'Content'.",[45,292,293],{},[71,294],{"alt":295,"src":296,"width":297,"height":298,"loading":77},"The properties window for a file in a VSIX C# project. Note, that the file build action has been set to 'Content'.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX3.png",395,323,[45,300,295],{},[45,302,50,303,306],{},[115,304,305],{},".vstemplate"," file in the project contains all the information about the contents of the project template. If you select it and go to the 'Properties' window, you can set the 'Category' property which determines where your project template will appear in the 'New Project' dialogue.",[45,308,309],{},[71,310],{"alt":311,"src":312,"width":297,"height":313,"loading":77},"The category a VSIX C# project is displayed under, in the Visual Studio New Project dialogue.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX4.png",382,[45,315,311],{},[45,317,318,319,321,322,325,326,329],{},"An example of the ",[115,320,305],{}," file is shown below. Note, that I've set the project template name, description and the default name of the project which is shown in the 'New Project' dialogue and the user can rename. The XML then goes on to declare the name of the ",[115,323,324],{},".csproj"," file in the ",[115,327,328],{},"Project"," node, followed by each and every file and folder to be included in the template.",[45,331,332,333,336],{},"Note, that the ",[115,334,335],{},"AssemblyInfo.cs"," file is a little special. There are two of them in the project. The one we are interested in was already located in the root of the project when we created it. We also need to add it to the XML below slightly differently than the other files (See below).",[45,338,339,340,343,344,347,348,351,352,354,355,358],{},"You can use the ",[115,341,342],{},"OpenInWebBrowser"," or ",[115,345,346],{},"OpenInEditor"," attributes on a ",[115,349,350],{},"ProjectItem"," to get the file to be opened in a web browser or text editor when the project is first created. I've used ",[115,353,342],{}," to open the ",[115,356,357],{},"ReadMe.html"," file containing basic information about the project, when the project is first created.",[163,360],{"className":361,"language":362,"meta":84,"style":84,"html":363},"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\">VSTemplate\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> Version\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"3.0.0\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> Type\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"Project\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> xmlns\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"http:\u002F\u002Fschemas.microsoft.com\u002Fdeveloper\u002Fvstemplate\u002F2005\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> xmlns:sdk\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"http:\u002F\u002Fschemas.microsoft.com\u002Fdeveloper\u002Fvstemplate-sdkextension\u002F2010\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">  &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">TemplateData\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Name\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">ASP.NET Core Boilerplate\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Name\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\">A professional ASP.NET MVC template for building secure, fast, robust and adaptable web applications or sites. It provides the minimum amount of code required on top of the default MVC template provided by Microsoft. Find out more at RehanSaeed.com\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\">Icon\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">MvcBoilerplateTemplate.ico\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Icon\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectType\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">CSharp\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectType\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">RequiredFrameworkVersion\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">4.5\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">RequiredFrameworkVersion\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">SortOrder\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">1000\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">SortOrder\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">TemplateID\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">f2d50b53-cff3-41b4-8481-dac14c18ea48\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">TemplateID\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">CreateNewFolder\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">true\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">CreateNewFolder\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">DefaultName\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">WebProject\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">DefaultName\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProvideDefaultName\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">true\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProvideDefaultName\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">  &lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">TemplateData\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">  &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">TemplateContent\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Project\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> File\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"MvcBoilerplate.csproj\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">      &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> TargetFileName\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"Properties%5CAssemblyInfo.cs\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">AssemblyInfo.cs\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">      &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Folder\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> Name\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"App_Start\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">        &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> OpenInEditor\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"false\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">BundleConfig.cs\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">        &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> OpenInEditor\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"false\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">FilterConfig.cs\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">        &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> OpenInEditor\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"false\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">RouteConfig.cs\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">        &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> OpenInEditor\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"false\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">Startup.Container.cs\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">      &lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Folder\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">      &lt;!-- Omitted lots of Folder and ProjectItem nodes... --&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">      &lt;\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> ReplaceParameters\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"snDo4\"> OpenInWebBrowser\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=\u003C\u002Fspan>\u003Cspan class=\"squEy\">\"true\"\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">ReadMe.html\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">ProjectItem\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">    &lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">Project\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">  &lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">TemplateContent\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sNflI\">&lt;\u002F\u003C\u002Fspan>\u003Cspan class=\"sjbfc\">VSTemplate\u003C\u002Fspan>\u003Cspan class=\"sNflI\">&gt;\n\u003C\u002Fspan>\u003C\u002Fspan>",[45,365,366,367,370],{},"The next step is to add a VSIX Project to our solution. This is the project that will actually build a ",[115,368,369],{},".vsix"," file.",[45,372,373],{},[71,374],{"alt":375,"src":376,"width":75,"height":76,"loading":77},"The new project dialogue, showing how to create a new VSIX project.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX5.png",[45,378,375],{},[45,380,381,382,385],{},"If you open the ",[115,383,384],{},".vsixmanifest"," file, you can fill in basic information about the template. This information will be displayed in the 'New Project' dialogue. I have specified an Icon, Preview Image and Licence file. All three of these files are added to the project.",[45,387,388],{},[71,389],{"alt":390,"src":391,"width":392,"height":393,"loading":77},"The metadata for the VSIX project, describing the .vsix installer file and also the project shown in the solution explorer, showing the files included.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX6.png",1284,1024,[45,395,396,397,399],{},"The metadata for the VSIX project, describing the ",[115,398,369],{}," installer file and also the project shown in the solution explorer, showing the files included.",[45,401,402,403,406,407,186],{},"The 'Install Targets' tab lets you target a specific version of Visual Studio. I changed this to support Visual Studio 2012 and above by specifying the version range to be ",[115,404,405],{},"[11.0,]",". More information ",[52,408,411],{"href":409,"rel":410,"target":59},"http:\u002F\u002Fblogs.msdn.com\u002Fb\u002Fvisualstudio\u002Farchive\u002F2013\u002F08\u002F08\u002Fupdate-for-extension-authors-vsix-manifest-version-ranges.aspx",[56,57,58],"here",[45,413,414],{},"The 'Dependencies' tab is very similar. Here you can specify which version of the .NET Framework your project depends on. I stuck with the defaults of .NET 4.5 only.",[45,416,417],{},[71,418],{"alt":419,"src":420,"width":392,"height":393,"loading":77},"The installation targets or versions of Visual Studio your VSIX extension will install to.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX7.png",[45,422,419],{},[45,424,425],{},"If you click on the 'Assets' tab on the left, you can add a reference to your other 'C# Project Template' project.",[45,427,428],{},[71,429],{"alt":430,"src":431,"width":392,"height":393,"loading":77},"The VSIX C# projects you want to add to the VSIX extension as an asset to be installed.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FExportVSIX8.png",[45,433,430],{},[81,435,437,441],{"id":436,"data-section-heading":84},"submitting-your-vsix-project-template-to-the-visual-studio-gallery",[86,438,440],{"className":439},[89],"Submitting your VSIX Project Template to the Visual Studio Gallery",[92,442,444],{"href":443,"label":95},"#submitting-your-vsix-project-template-to-the-visual-studio-gallery",[97,445,446],{"xmlns":99,"xmlns:xlink":100,"viewBox":101,"version":102,"width":103,"height":103,"aria-hidden":104},[106,447],{"fill":108,"fill-rule":109,"d":110},[45,449,450,451,454],{},"Submitting your new VSIX extension to the Visual Studio Gallery is a great way to share your new Project Template with the world. The ",[52,452,66],{"href":64,"rel":453,"target":59},[56,57,58]," extension now has over a hundred downloads within two days of submitting it!",[45,456,457,458,463],{},"If you've followed the steps above to create a VSIX package and tested that it works correctly then submitting one to the site is really easy. Follow ",[52,459,462],{"href":460,"rel":461,"target":59},"https:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002Fsite\u002Fupload\u002Fview",[56,57,58],"this"," link to the submission page and fill in the form. An example of what it looks like can be seen below:",[45,465,466],{},[71,467],{"alt":468,"src":469,"width":470,"height":471,"loading":77},"An example of the Visual Studio Gallery Submission Page.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FVisualStudioGallery1.png",960,1593,[45,473,468],{},[45,475,476],{},"Once you have made your submission and you go to the 'New Project' dialogue, you can go to the 'Online' section and see your project template listed.",[45,478,479],{},[71,480],{"alt":73,"src":74,"width":75,"height":76,"loading":77},[45,482,73],{},[45,484,485],{},"If you use the template above, explicitly install it from the Visual Studio Gallery or install it from 'Extensions and Updates', you will then see the project appear in the 'New Project' dialogue under the category you specified in the settings above.",[45,487,488],{},[71,489],{"alt":490,"src":491,"width":75,"height":76,"loading":77},"The project template shown in the 'Online' section of Visual Studio's 'New Project' dialogue.","\u002Fcontent-images\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Fimages\u002FVisualStudioGallery3.png",[45,493,490],{},[81,495,497,501],{"id":496,"data-section-heading":84},"conclusions",[86,498,500],{"className":499},[89],"Conclusions",[92,502,504],{"href":503,"label":95},"#conclusions",[97,505,506],{"xmlns":99,"xmlns:xlink":100,"viewBox":101,"version":102,"width":103,"height":103,"aria-hidden":104},[106,507],{"fill":108,"fill-rule":109,"d":110},[45,509,510,511,513],{},"Creating a simple ",[115,512,117],{}," project template is super simple and something everyone should know and use for larger projects. Creating VSIX project templates is a lot more involved but to be honest, there is no reason why it should be. I hope Microsoft makes this process a lot easier.",[515,516,517],"style",{},"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 .sjLUg, html code.shiki .sjLUg{--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .squEy, html code.shiki .squEy{--shiki-default:#0000FF;--shiki-dark:#E6DB74}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);}",{"title":84,"searchDepth":519,"depth":519,"links":520},2,[],{"issue":522,"comments":526},{"number":523,"title":524,"html_url":525},70,"[Comment] Custom Visual Studio Project Templates","https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70",[527,539,547,555,563,571],{"id":528,"html_url":529,"body_html":530,"created_at":531,"updated_at":531,"author_association":532,"user":533,"reactions":537},627253476,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70#issuecomment-627253476","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd2ff808bc8657a936631334322e2ee81c841e85827df39c300d378294db6e9a0\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f33313766346236326461326230313836666561633962363230393739333530353f733d393626643d6d6d26723d67\">\u003Cimg alt=\"B. Clay Shannon\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd2ff808bc8657a936631334322e2ee81c841e85827df39c300d378294db6e9a0\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f33313766346236326461326230313836666561633962363230393739333530353f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fapps.microsoft.com\u002Fwindows\u002Fen-us\u002Fapp\u002Fphotrax\u002F75c18e6c-96bd-4607-ac43-531aab098ab4\">B. Clay Shannon\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2014-12-12 15:43:53\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Is it possible to create a project template that has Nuget packages added (such as for Bing Maps, SQlite, sqlite-net, etc.)?\u003C\u002Fp>\n\u003Cp>BTW, I like your retro sci-fi font.\u003C\u002Fp>","2020-05-12T10:23:52Z","OWNER",{"login":534,"avatar_url":535,"html_url":536},"RehanSaeed","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2270364?v=4","https:\u002F\u002Fgithub.com\u002FRehanSaeed",{"url":538,"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\u002F627253476\u002Freactions",{"id":540,"html_url":541,"body_html":542,"created_at":543,"updated_at":543,"author_association":532,"user":544,"reactions":545},627253536,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70#issuecomment-627253536","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Rehan\" 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\">Rehan\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2014-12-12 16:25:14\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Is it possible to create a project template that has Nuget packages added (such as for Bing Maps, SQlite, sqlite-net, etc.)?\u003C\u002Fp>\n\u003Cp>BTW, I like your retro sci-fi font.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Of course it is. You don't need to include the NuGet packages themselves. The key is the packages.config file, you just need to include it in your project template. When Visual Studio first loads the project and sees the NuGet packages installed from the packages.config but does not see that they are loaded, it will download them all for you.\u003C\u002Fp>\n\u003Cp>If you want an example, go ahead and download the code for \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FDotnet-Boxed\u002FTemplates\">ASP.NET Core Boilerplate\u003C\u002Fa> (It's very simple, only three projects). You can set the bottom VSIX project as the startup project, hit F5 to start and see what happens.\u003C\u002Fp>\n\u003Cp>Thanks for the comment about the font, I added it because it's unusual.\u003C\u002Fp>\n\u003Cp>Good Luck!\u003C\u002Fp>","2020-05-12T10:23:58Z",{"login":534,"avatar_url":535,"html_url":536},{"url":546,"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\u002F627253536\u002Freactions",{"id":548,"html_url":549,"body_html":550,"created_at":551,"updated_at":551,"author_association":532,"user":552,"reactions":553},627253591,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70#issuecomment-627253591","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F83fdadf1b910e4e55ddbe78677b871f913d2b936a2f67007e0c40dad4c0c735c\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f33653038363939653362343738633361373838376333393931646336316264363f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Data Juggler\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F83fdadf1b910e4e55ddbe78677b871f913d2b936a2f67007e0c40dad4c0c735c\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f33653038363939653362343738633361373838376333393931646336316264363f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fwww.datajuggler.com\u002F\">Data Juggler\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2014-12-18 22:29:58\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Thanks for the article; I watched the video on the Side Waffle site; is Side Waffle similar to Nuget? It looks like it does the same thing.\u003C\u002Fp>\n\u003Cp>If you want to do a part 2 on 'Working With Multiple Projects and Solution Folders', it is always a pain for me to set them up; it has been on my to do list to build a Package Deployment solution for multiple projects for a long time; It seems to take me forever to export one of our solutions that contains over a dozen projects.\u003C\u002Fp>","2020-05-12T10:24:06Z",{"login":534,"avatar_url":535,"html_url":536},{"url":554,"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\u002F627253591\u002Freactions",{"id":556,"html_url":557,"body_html":558,"created_at":559,"updated_at":559,"author_association":532,"user":560,"reactions":561},627253639,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70#issuecomment-627253639","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Rehan\" 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\">Rehan\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2014-12-19 07:17:16\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Thanks for the article; I watched the video on the Side Waffle site; is Side Waffle similar to Nuget? It looks like it does the same thing.\u003C\u002Fp>\n\u003Cp>If you want to do a part 2 on 'Working With Multiple Projects and Solution Folders', it is always a pain for me to set them up; it has been on my to do list to build a Package Deployment solution for multiple projects for a long time; It seems to take me forever to export one of our solutions that contains over a dozen projects.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I'm no expert but SideWaffle seems to be an alternative to the Visual Studio Gallery. You install the SideWaffle extension and you get some project templates and item templates added to your 'New Project' dialogue.\u003C\u002Fp>\n\u003Cp>I haven't looked into doing multiple projects in one project template yet but in theory it should be pretty easy. There is a special project XML node in the .vstemplate file that you need to use. If you want to do multiple project \u003Cstrong>templates\u003C\u002Fstrong> in one extension, then that is super easy. You just need to create a new C# VSIX Project, follow my instructions for it and add it as another reference in the VSIX project. Not sure if I'll write another article, this one was a by-product of having to create a VSIX for the ASP.NET Core Boilerplate project I'm working on. I just found it really hard to find any good up to date articles on the subject, so naturally I wrote a blog post.\u003C\u002Fp>","2020-05-12T10:24:13Z",{"login":534,"avatar_url":535,"html_url":536},{"url":562,"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\u002F627253639\u002Freactions",{"id":564,"html_url":565,"body_html":566,"created_at":567,"updated_at":567,"author_association":532,"user":568,"reactions":569},627253699,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70#issuecomment-627253699","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F786ba7334bfc4db7dd38766c050a337ff5832bf49dc4ceba0db6f5abcb707bcc\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64303963316237343762313766396437376463366566376465383630303536333f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Anand\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F786ba7334bfc4db7dd38766c050a337ff5832bf49dc4ceba0db6f5abcb707bcc\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64303963316237343762313766396437376463366566376465383630303536333f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Anand\u003C\u002Fstrong> commented on \u003Cstrong>2017-04-05 20:44:42\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Hi,\u003Cbr \u002F>\nI have a project template created but I'm trying to explore the option to have this converted as nuget package. the idea is that next person has to just get the nuget and basic project skeleton will be set. Is it possible?\u003C\u002Fp>","2020-05-12T10:24:19Z",{"login":534,"avatar_url":535,"html_url":536},{"url":570,"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\u002F627253699\u002Freactions",{"id":572,"html_url":573,"body_html":574,"created_at":575,"updated_at":575,"author_association":532,"user":576,"reactions":577},627253761,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F70#issuecomment-627253761","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Rehan\" 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\">Rehan\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2017-04-08 08:46:37\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Hi,\u003Cbr \u002F>\nI have a project template created but I'm trying to explore the option to have this converted as nuget package. the idea is that next person has to just get the nuget and basic project skeleton will be set. Is it possible?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>It is with \u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002Fcustom-project-templates-using-dotnet-new\u002F\">dotnet new\u003C\u002Fa> based project templates.\u003C\u002Fp>","2020-05-12T10:24:27Z",{"login":534,"avatar_url":535,"html_url":536},{"url":578,"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\u002F627253761\u002Freactions","2014-12-10T00:00:00+00:00",null,"A guide to creating custom Visual Studio project templates in .zip and VSIX form and submitting them to the Visual Studio Gallery, so it can be downloaded.","md",[584,586,587,588,589,590],{"depth":585,"value":90},1,{"depth":585,"value":196},{"depth":585,"value":221},{"depth":585,"value":244},{"depth":585,"value":440},{"depth":585,"value":500},"\u002Fimages\u002Fhero\u002FVisual-Studio-1366x768.png",{},"\u002Fcustom-visual-studio-project-templates\u002F",true,"posts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Findex",[597,598,66,599,600,601],".NET","ASP.NET MVC","C#","Project Template","VSIX",7,[604,608,612,617,622,625,628,632,636,640,643,647,652,655,658,662,666,670,673,677,681,685,688,691,696,697,700,703,706,711,715,718,723,727,731,735,738,742,746,750,754,758,762,766,769,773,777,781,785,788,792,796,799,802,806,810,815,819,823,827,831,835,839,842,845,848,852,856,859,863,866,869,872,875,879,883,886,889,893,897,900,903,906,910,914,918,922,925,928,933,936,939,943,946,950,954,957,961,964,967,971,975,979,983],{"title":605,"permalink":606,"heroImage":607,"timeToRead":585},"Just Start - The First Blog Post","\u002Fjust-start-the-first-blog-post\u002F","\u002Fimages\u002Fhero\u002FJust-Start-1366x768.png",{"title":609,"permalink":610,"heroImage":611,"timeToRead":519},"ConfigureAwait in Task Parallel Library (TPL)","\u002Fconfigureawait-task-parallel-library\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-.NET-1366x768.png",{"title":613,"permalink":614,"heroImage":615,"timeToRead":616},"Stop The Brace Wars, Use StyleCop","\u002Fstop-brace-wars-use-stylecop\u002F","\u002Fimages\u002Fhero\u002FStyleCop-1366x768.png",3,{"title":618,"permalink":619,"heroImage":620,"timeToRead":621},"Reactive Extensions (Rx) - Part 1 - Replacing C# Events","\u002Freactive-extensions-part1-replacing-events\u002F","\u002Fimages\u002Fhero\u002FReactive-Extensions-1366x768.png",4,{"title":623,"permalink":624,"heroImage":620,"timeToRead":616},"Reactive Extensions (Rx) - Part 2 - Wrapping C# Events","\u002Freactive-extensions-part2-wrapping-events\u002F",{"title":626,"permalink":627,"heroImage":620,"timeToRead":519},"Reactive Extensions (Rx) - Part 3 - Naming Conventions","\u002Freactive-extensions-part3-naming-conventions\u002F",{"title":629,"permalink":630,"heroImage":631,"timeToRead":616},"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":633,"permalink":634,"heroImage":635,"timeToRead":616},"WPF Metro Part 2 - MahApps Metro","\u002Fwpf-metro-part2-mahapps-metro\u002F","\u002Fimages\u002Fhero\u002FMahApps-Metro-1366x768.png",{"title":637,"permalink":638,"heroImage":639,"timeToRead":616},"Windows 8.1 TouchScreen Gaming Laptops","\u002Fwindows-8-touchscreen-gaming-laptops\u002F","\u002Fimages\u002Fhero\u002FFry-Shutup-And-Take-My-Money-1366x768.png",{"title":641,"permalink":642,"heroImage":620,"timeToRead":616},"Reactive Extensions (Rx) - Part 4 - Replacing Timers","\u002Freactive-extensions-part4-replacing-timers\u002F",{"title":644,"permalink":645,"heroImage":646,"timeToRead":519},"WPF Metro Part 3 - Elysium","\u002Fwpf-metro-part3-elysium\u002F","\u002Fimages\u002Fhero\u002FElysium-1366x768.png",{"title":648,"permalink":649,"heroImage":650,"timeToRead":651},"WPF Metro Part 4 - Elysium Extra","\u002Fwpf-metro-part4-elysium-extra\u002F","\u002Fimages\u002Fhero\u002FElysium-Extra-1366x768.png",8,{"title":653,"permalink":654,"heroImage":620,"timeToRead":621},"Reactive Extensions (Rx) - Part 5 - Awaiting Observables","\u002Freactive-extensions-part5-awaiting-observables\u002F",{"title":656,"permalink":657,"heroImage":611,"timeToRead":651},"GetHashCode Made Easy","\u002Fgethashcode-made-easy\u002F",{"title":659,"permalink":660,"heroImage":620,"timeToRead":661},"Reactive Extensions (Rx) - Part 6 - Task ToObservable","\u002Freactive-extensions-part6-task-toobservable\u002F",5,{"title":663,"permalink":664,"heroImage":665,"timeToRead":585},"Portable Class Library (PCL) version of NotificationsExtensions NuGet package","\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002F","\u002Fimages\u002Fhero\u002FNuGet-1366x768.png",{"title":667,"permalink":668,"heroImage":669,"timeToRead":661},"Model-View-ViewModel (MVVM) - Part 1 - Overview","\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002F","\u002Fimages\u002Fhero\u002FMVVM-1366x768.png",{"title":671,"permalink":672,"heroImage":669,"timeToRead":621},"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002F",{"title":674,"permalink":675,"heroImage":669,"timeToRead":676},"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002F",11,{"title":678,"permalink":679,"heroImage":680,"timeToRead":616},"Naming Conventions","\u002Fnaming-conventions\u002F","\u002Fimages\u002Fhero\u002FNaming-Conventions-1366x768.png",{"title":682,"permalink":683,"heroImage":669,"timeToRead":684},"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002F",12,{"title":686,"permalink":687,"heroImage":650,"timeToRead":621},"Elysium Extra 1.1 Released","\u002Felysium-extra-1-1-released\u002F",{"title":66,"permalink":689,"heroImage":690,"timeToRead":602},"\u002Fasp-net-mvc-boilerplate\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Boilerplate-1366x768.png",{"title":692,"permalink":693,"heroImage":694,"timeToRead":695},"Internet Favicon Madness (Updated)","\u002Finternet-favicon-madness\u002F","\u002Fimages\u002Fhero\u002FFavicons-1366x768.png",17,{"title":39,"permalink":593,"heroImage":591,"timeToRead":602},{"title":698,"permalink":699,"heroImage":591,"timeToRead":616},"Configuration File Transforms In Visual Studio Should Be Built In","\u002Fconfiguration-file-transforms-in-visual-studio-should-be-built-in\u002F",{"title":701,"permalink":702,"heroImage":690,"timeToRead":676},"Securing the ASP.NET MVC Web.config","\u002Fsecuring-the-aspnet-mvc-web-config\u002F",{"title":704,"permalink":705,"heroImage":620,"timeToRead":519},"Reactive Extensions (Rx) - Part 7 - Sample Events","\u002Freactive-extensions-part7-sample-events\u002F",{"title":707,"permalink":708,"heroImage":709,"timeToRead":710},"NWebSec ASP.NET MVC Security Through HTTP Headers","\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002F","\u002Fimages\u002Fhero\u002FNWebSec-1366x768.png",6,{"title":712,"permalink":713,"heroImage":714,"timeToRead":103},"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":716,"permalink":717,"heroImage":611,"timeToRead":661},"C# 6.0 - Saving Developers From Themselves","\u002Fc-6-0-saving-developers-from-themselves\u002F",{"title":719,"permalink":720,"heroImage":721,"timeToRead":722},"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":724,"permalink":725,"heroImage":726,"timeToRead":676},"Canonical URL's for ASP.NET MVC","\u002Fcanonical-urls-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FLink-Juice-1366x768.png",{"title":728,"permalink":729,"heroImage":730,"timeToRead":621},"Dynamically Generating Robots.txt Using ASP.NET MVC","\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRobots.txt-1366x768.jpg",{"title":732,"permalink":733,"heroImage":734,"timeToRead":621},"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":736,"permalink":737,"heroImage":690,"timeToRead":519},"Whats New in ASP.NET Core Boilerplate","\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002F",{"title":739,"permalink":740,"heroImage":741,"timeToRead":602},"Dynamically Generating Sitemap.xml for ASP.NET MVC","\u002Fdynamically-generating-sitemap-xml-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FSitemaps-1366x768.png",{"title":743,"permalink":744,"heroImage":745,"timeToRead":519},"So I've Been Awarded Microsoft MVP Status!","\u002Fso-ive-been-awarded-microsoft-mvp-status\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-MVP-1366x768.png",{"title":747,"permalink":748,"heroImage":749,"timeToRead":585},".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":751,"permalink":752,"heroImage":753,"timeToRead":616},"Logging with Serilog.Exceptions","\u002Flogging-with-serilog-exceptions\u002F","\u002Fimages\u002Fhero\u002FSerilog.Exceptions-1366x768.png",{"title":755,"permalink":756,"heroImage":757,"timeToRead":585},"Make Certificate","\u002Fmake-certificate\u002F","\u002Fimages\u002Fhero\u002FMake-Certificate-1366x768.png",{"title":759,"permalink":760,"heroImage":761,"timeToRead":519},"Colorful.Console","\u002Fcolorful-console\u002F","\u002Fimages\u002Fhero\u002FColorful.Console-1366x768.png",{"title":763,"permalink":764,"heroImage":765,"timeToRead":616},"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":767,"permalink":768,"heroImage":765,"timeToRead":621},"Subresource Integrity TagHelper Using ASP.NET Core - Part 2","\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002F",{"title":770,"permalink":771,"heroImage":772,"timeToRead":661},"Social TagHelpers for ASP.NET Core","\u002Fsocial-taghelpers-for-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSocial-Media-1366x768.png",{"title":774,"permalink":775,"heroImage":776,"timeToRead":710},"Azure Active Directory Versus Identity Server","\u002Fazure-active-directory-versus-identity-server\u002F","\u002Fimages\u002Fhero\u002FAzure-Active-Directory-Versus-Identity-Server-1366x768.png",{"title":778,"permalink":779,"heroImage":780,"timeToRead":519},"ASP.NET Core Fluent Interface Extensions","\u002Fasp-net-core-fluent-interface-extensions\u002F","\u002Fimages\u002Fhero\u002FFluent-Interface-All-The-Things-1366x768.png",{"title":782,"permalink":783,"heroImage":784,"timeToRead":676},"NGINX for ASP.NET Core In-Depth","\u002Fnginx-asp-net-core-depth\u002F","\u002Fimages\u002Fhero\u002FNGINX-1366x768.png",{"title":786,"permalink":787,"heroImage":611,"timeToRead":519},"The Dotnet Watch Tool","\u002Fthe-dotnet-watch-tool\u002F",{"title":789,"permalink":790,"heroImage":791,"timeToRead":621},"Making Application Insights Fast & Secure","\u002Fmaking-application-insights-fast-and-secure\u002F","\u002Fimages\u002Fhero\u002FApplication-Insights-1366x768.png",{"title":793,"permalink":794,"heroImage":795,"timeToRead":602},"SEO Friendly URL's for ASP.NET Core","\u002Fseo-friendly-urls-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSearch-Engine-Optimization-SEO-1366x768.png",{"title":797,"permalink":798,"heroImage":620,"timeToRead":585},"Reactive Extensions (Rx) - Part 8 - Timeouts","\u002Freactive-extensions-rx-part-8-timeouts\u002F",{"title":800,"permalink":801,"heroImage":611,"timeToRead":621},"Custom Project Templates Using dotnet new","\u002Fcustom-project-templates-using-dotnet-new\u002F",{"title":803,"permalink":804,"heroImage":805,"timeToRead":651},"Cross-Platform DevOps for .NET Core","\u002Fcross-platform-devops-net-core\u002F","\u002Fimages\u002Fhero\u002FDotnet-Cake-AppVeyor-Travis-1366x768.png",{"title":807,"permalink":808,"heroImage":809,"timeToRead":602},"Cleaning Up CSPROJ","\u002Fcleaning-up-csproj\u002F","\u002Fimages\u002Fhero\u002FCleaning-Up-CSPROJ-1366x768.png",{"title":811,"permalink":812,"heroImage":813,"timeToRead":814},"dotnet new Feature Selection","\u002Fdotnet-new-feature-selection\u002F","\u002Fimages\u002Fhero\u002FWho-Wants-To-Be-A-Millionaire-1366x768.png",9,{"title":816,"permalink":817,"heroImage":818,"timeToRead":621},"ASP.NET Core Lazy Command Pattern","\u002Fasp-net-core-lazy-command-pattern\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Lazy-Command-Pattern-1366x768.png",{"title":820,"permalink":821,"heroImage":822,"timeToRead":519},"Structured Data using Schema.NET","\u002Fstructured-data-using-schema-net\u002F","\u002Fimages\u002Fhero\u002FSchema.NET-1366x768.png",{"title":824,"permalink":825,"heroImage":826,"timeToRead":710},"Keeping Up With Software Development","\u002Fkeeping-software-development\u002F","\u002Fimages\u002Fhero\u002FKeeping-up-with-Software-Development-1366x768.png",{"title":828,"permalink":829,"heroImage":830,"timeToRead":519},"A Very Generic .editorconfig File (Updated)","\u002Fgeneric-editorconfig-file\u002F","\u002Fimages\u002Fhero\u002FA-Very-Generic-Editorconfig-File-1366x768.png",{"title":832,"permalink":833,"heroImage":834,"timeToRead":661},"ASP.NET Core Caching in Practice","\u002Fasp-net-core-caching-in-practice\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Caching-in-Practice-1366x768.png",{"title":836,"permalink":837,"heroImage":838,"timeToRead":585},"Docker Read-Only File Systems","\u002Fdocker-read-file-systems\u002F","\u002Fimages\u002Fhero\u002FDocker-1366x768.png",{"title":840,"permalink":841,"heroImage":838,"timeToRead":616},"Docker Labels in Depth","\u002Fdocker-labels-depth\u002F",{"title":843,"permalink":844,"heroImage":838,"timeToRead":621},"Useful Docker Images - Part 1","\u002Fuseful-docker-images-part1\u002F",{"title":846,"permalink":847,"heroImage":838,"timeToRead":661},"Useful Docker Images - Part 2","\u002Fuseful-docker-images-part2\u002F",{"title":849,"permalink":850,"heroImage":851,"timeToRead":621},"Writing your Webpack configuration in TypeScript","\u002Fwriting-your-webpack-configuration-in-typescript\u002F","\u002Fimages\u002Fhero\u002FTypeScript-1366x768.png",{"title":853,"permalink":854,"heroImage":855,"timeToRead":661},"Writing Code while Asleep","\u002Fwriting-code-asleep\u002F","\u002Fimages\u002Fhero\u002FWhile-Alive-Eat-Sleep-Code-Repeat-1366x768.png",{"title":857,"permalink":858,"heroImage":611,"timeToRead":519},"The Dotnet Watch Tool Revisited","\u002Fthe-dotnet-watch-tool-revisited\u002F",{"title":860,"permalink":861,"heroImage":862,"timeToRead":519},".NET Boxed","\u002Fnet-boxed\u002F","\u002Fimages\u002Fhero\u002FDotnet-Boxed-1366x768.png",{"title":864,"permalink":865,"heroImage":611,"timeToRead":519},"Migrating to Entity Framework Core Seed Data","\u002Fmigrating-to-entity-framework-core-seed-data\u002F",{"title":867,"permalink":868,"heroImage":611,"timeToRead":616},"Optimally Configuring Entity Framework Core","\u002Foptimally-configuring-entity-framework-core\u002F",{"title":870,"permalink":871,"heroImage":611,"timeToRead":585},"ASP.NET Core Hidden Gem - QueryHelpers","\u002Fasp-net-core-hidden-gem-queryhelpers\u002F",{"title":873,"permalink":874,"heroImage":611,"timeToRead":814},"Optimally Configuring ASP.NET Core HttpClientFactory","\u002Foptimally-configuring-asp-net-core-httpclientfactory\u002F",{"title":876,"permalink":877,"heroImage":878,"timeToRead":602},"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":880,"permalink":881,"heroImage":882,"timeToRead":814},"Is ASP.NET Core now a Mature Platform?","\u002Fis-asp-net-core-now-a-mature-platform\u002F","\u002Fimages\u002Fhero\u002FRocket-1366x768.jpg",{"title":884,"permalink":885,"heroImage":862,"timeToRead":814},"A Simple and Fast Object Mapper","\u002Fa-simple-and-fast-object-mapper\u002F",{"title":887,"permalink":888,"heroImage":838,"timeToRead":585},"Securing ASP.NET Core in Docker","\u002Fsecuring-asp-net-core-in-docker\u002F",{"title":890,"permalink":891,"heroImage":892,"timeToRead":621},"Git Cloning the Windows OS Repo","\u002Fgit-cloning-the-windows-os-repo\u002F","\u002Fimages\u002Fhero\u002FWindows-1366x768.png",{"title":894,"permalink":895,"heroImage":896,"timeToRead":602},".gitattributes Best Practices","\u002Fgitattributes-best-practices\u002F","\u002Fimages\u002Fhero\u002FGit-1366x768.png",{"title":898,"permalink":899,"heroImage":611,"timeToRead":616},"Unit Testing dotnet new Templates","\u002Funit-testing-dotnet-new-templates\u002F",{"title":901,"permalink":902,"heroImage":862,"timeToRead":661},"What dotnet new Could Be","\u002Fwhat-dotnet-new-could-be\u002F",{"title":904,"permalink":905,"heroImage":611,"timeToRead":621},"ASP.NET Core Integration Testing & Mocking using Moq","\u002Fasp-net-core-integration-testing-mocking-using-moq\u002F",{"title":907,"permalink":908,"heroImage":909,"timeToRead":602},"Choosing a Static Site Generator","\u002Fchoosing-a-static-site-generator\u002F","\u002Fimages\u002Fhero\u002FStatic-Site-Generators-1600x900.png",{"title":911,"permalink":912,"heroImage":913,"timeToRead":519},"Spicing up your Browser Console","\u002Fspicing-up-your-browser-console\u002F","\u002Fimages\u002Fhero\u002FFiglet-Fonts-1600x900.png",{"title":915,"permalink":916,"heroImage":917,"timeToRead":661},"Racism in Software Development & Beyond","\u002Fracism-in-software-development-and-beyond\u002F","\u002Fimages\u002Fhero\u002FBlack-Glowing-Fist-1600x900.png",{"title":919,"permalink":920,"heroImage":921,"timeToRead":661},"The Easiest Way to Version NuGet Packages","\u002Fthe-easiest-way-to-version-nuget-packages\u002F","\u002Fimages\u002Fhero\u002FSemantic-Versioning-1600x900.png",{"title":923,"permalink":924,"heroImage":665,"timeToRead":710},"The Fastest NuGet Package Ever Published (Probably)","\u002Fthe-fastest-nuget-package-ever-published-probably\u002F",{"title":926,"permalink":927,"heroImage":611,"timeToRead":616},"Automating .NET Security Updates","\u002Fautomating-dotnet-security-updates\u002F",{"title":929,"permalink":930,"heroImage":931,"timeToRead":932},"Deep Dive into Open Telemetry for .NET","\u002Fdeep-dive-into-open-telemetry-for-net\u002F","\u002Fimages\u002Fhero\u002FOpen-Telemetry-1600x900.png",10,{"title":934,"permalink":935,"heroImage":931,"timeToRead":616},"Open Telemetry for ASP.NET Core","\u002Fopen-telemetry-for-asp-net-core\u002F",{"title":937,"permalink":938,"heroImage":931,"timeToRead":616},"Exporting Open Telemetry Data to Jaeger","\u002Fexporting-open-telemetry-data-to-jaeger\u002F",{"title":940,"permalink":941,"heroImage":942,"timeToRead":616},"A System for Grouping & Sorting CSS Properties","\u002Fsystem-for-grouping-and-sorting-css-properties\u002F","\u002Fimages\u002Fhero\u002FCSS-1600x900.png",{"title":944,"permalink":945,"heroImage":942,"timeToRead":710},"CSS General Rules of Thumb","\u002Fcss-general-rules-of-thumb\u002F",{"title":947,"permalink":948,"heroImage":949,"timeToRead":621},"Web Component Custom Element Gotchas","\u002Fweb-component-custom-element-gotchas\u002F","\u002Fimages\u002Fhero\u002FWeb-Components-1600x900.png",{"title":951,"permalink":952,"heroImage":953,"timeToRead":519},"Code Coverage & Frontend Testing","\u002Fcode-coverage-and-frontend-testing\u002F","\u002Fimages\u002Fhero\u002FJest-Cypress-1600x900.png",{"title":955,"permalink":956,"heroImage":591,"timeToRead":585},".NET Boxed Visual Studio Integration","\u002Fdotnet-boxed-visual-studio-integration\u002F",{"title":958,"permalink":959,"heroImage":960,"timeToRead":616},"The Windows Package Manager","\u002Fwindows-package-manager\u002F","\u002Fimages\u002Fhero\u002FWinget-1600x900.png",{"title":962,"permalink":963,"heroImage":611,"timeToRead":616},"The Problem with C# 10 Implicit Usings","\u002Fthe-problem-with-csharp-10-implicit-usings\u002F",{"title":965,"permalink":966,"heroImage":931,"timeToRead":621},"Optimally Configuring Open Telemetry Tracing for ASP.NET Core","\u002Foptimally-configuring-open-telemetry-tracing-for-asp-net-core\u002F",{"title":968,"permalink":969,"heroImage":970,"timeToRead":519},"Live Streaming .NET","\u002Flive-streaming-dotnet\u002F","\u002Fimages\u002Fhero\u002FMy-YouTube-1920x1080.jpg",{"title":972,"permalink":973,"heroImage":974,"timeToRead":519},"I Was Awarded as an Open UK Honouree","\u002Fopen-uk-honouree\u002F","\u002Fimages\u002Fhero\u002FOpen-UK-Honours-1366x768.jpg",{"title":976,"permalink":977,"heroImage":978,"timeToRead":621},"On the Etiquette of Pull Request Comments","\u002Fon-the-etiquette-of-pull-request-comments\u002F","\u002Fimages\u002Fhero\u002FPrecious-PR-1600x900.jpg",{"title":980,"permalink":981,"heroImage":982,"timeToRead":585},"AI Gone Rogue","\u002Fai-gone-rogue\u002F","\u002Fimages\u002Fhero\u002FHAL-9000-Prop-1600x900.png",{"title":984,"permalink":985,"heroImage":986,"timeToRead":661},"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":988},"\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":990},"\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":992},"\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":994},"\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":996},"\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":998},"\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":1000},"\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":1002},"\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":1004},"\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":1006},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1794091029922]