[{"data":1,"prerenderedAt":2027},["ShallowReactive",2],{"tag-visualstudio":3},{"tag":4,"articles":24},{"id":5,"title":6,"body":7,"description":14,"extension":15,"img":16,"meta":17,"name":18,"navigation":19,"path":20,"seo":21,"stem":22,"__hash__":23},"tags\u002Ftags\u002Fvisualstudio.md","Visualstudio",{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],"Develop apps for Android, iOS, Mac, Windows, web, and cloud","md","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1598313183973-4effcded8d5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80",{},"visualstudio",true,"\u002Ftags\u002Fvisualstudio",{"description":14},"tags\u002Fvisualstudio","glm3bYyBlAXGun4NJe-CV_iOzhszydeBRIpbGNNLeEk",[25,202,478,619,862,907,948,1045,1115,1152,1196,1240,1434,1489,1643,1668,1747,1907,1973],{"id":26,"title":27,"author":28,"body":29,"createdAt":194,"description":195,"extension":15,"img":45,"meta":196,"navigation":19,"path":197,"seo":198,"stem":199,"tags":200,"updatedAt":194,"__hash__":201},"articles\u002Farticles\u002Fasp-net-mvc-versions-microsoft-aspnet-mvc.md","ASP.NET MVC Versions of Microsoft.AspNet.Mvc","[object Object]",{"type":8,"value":30,"toc":192},[31,35,49,56,66,85,87,115,125],[32,33,34],"p",{},"While creating a new web application targeting .NET Framework 4 we see a dialog like the following.  Great all good right. ",[32,36,37],{},[38,39,41],"a",{"href":40},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_2.png",[42,43],"img",{"style":44,"src":45,"alt":46,"title":46,"width":47,"height":48},"display: inline;","\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_thumb.png","image",306,83,[32,50,51,52,55],{},"What is Microsoft.AspNet.Mvc? What is System.Web.Mvc.dll?  Are these related…in short yes.  I had some confusion as to the relationship between System.Web.Mvc and the Nuget package Microsoft.AspNet.Mvc.  Here is how….",[53,54],"br",{},"\nYes, they are very much related.  Do things have to be this confusing? ",[32,57,58,59],{},"So tracking this down, I created a new out-of-the-box Asp.Net MVC Application.  Afterwards, I opened up Nuget Manager in order to review what packages were installed.  I see a number of packages needing updating.  In particular, I see one Microsoft.AspNet.Mvc however I do not see this assembly in my project references.  Remember - Nuget packages can and do include one or more assemblies(dll’s) and can be named differently than the package name.  In this particular case, the package Microsoft.AspNet.Mvc contains the System.Web.Mvc.dll.  For the record, the project when created referenced this package..",[60,61,65],"package",{"id":62,"version":63,"targetframework":64},"Microsoft.AspNet.Mvc","4.0.30506.0","net40","  (this package includes the System.Web.Mvc.dll Runtime Version v4.0.30319, Version 4.0.0.0 and specifically Product version 4.0.20710.0 shown via file properties)",[32,67,68,69,71,81,82],{},"Inside the out of box .NET 4, MVC application we have…",[53,70],{},[38,72,74],{"href":73},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_6.png",[42,75],{"style":76,"src":77,"border":78,"alt":46,"title":46,"width":79,"height":80},"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;","\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_thumb_2.png",0,260,285,"  ",[38,83],{"href":84},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_4.png",[38,86],{"href":84},[32,88,89,96,97,99,100],{},[38,90,91],{"href":84},[42,92],{"style":76,"src":93,"border":78,"alt":46,"title":46,"width":94,"height":95},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_thumb_1.png",308,289," ",[53,98],{},"\nLooking at the System.Web.Mvc.dll that was delivered with the new .NET 4 application we have the following dll.  In addition, if we look at the existing Nuget packages in the application we have the following package ",[60,101,102,104,112,114],{"id":62,"version":63,"targetframework":64},[53,103],{},[38,105,107],{"href":106},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_8.png",[42,108],{"style":76,"src":109,"border":78,"alt":46,"title":46,"width":110,"height":111},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_thumb_3.png",346,264,[53,113],{},"\nNow, we will update the Microsoft.AspNet.Mvc version 4.0.30506.0 package to 4.0.40804.0 to see what occurs.",[32,116,117],{},[38,118,120],{"href":119},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_10.png",[42,121],{"style":76,"src":122,"border":78,"alt":46,"title":46,"width":123,"height":124},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_thumb_4.png",134,240,[32,126,127,128],{},"The package in the packages file was updated to ",[60,129,131,132,81,140,148,150,154,156,159,161,162],{"id":62,"version":130,"targetframework":64},"4.0.40804.0","  Looking at the project references after the update we can see System.Web.Mvc Runtime version 4.0.30319 and Version 4.0.0.1.  Note: the file in the bin directory is not updated until after a project build.  Now looking at the file properties we can see File version 4.0.40804.0 and Product version 4.040804.0\n",[38,133,135],{"href":134},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_12.png",[42,136],{"style":76,"src":137,"border":78,"alt":46,"title":46,"width":138,"height":139},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_thumb_5.png",138,226,[38,141,143],{"href":142},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-fa2dee033792_a6f6-image_16.png",[42,144],{"style":76,"src":145,"border":78,"alt":46,"title":46,"width":146,"height":147},"\u002Farticles\u002Fimageswindows-live-writer-fa2dee033792_a6f6-image_thumb_7.png",201,244,[53,149],{},[151,152,153],"strong",{},"In summary…",[53,155],{},[151,157,158],{},"Before",[53,160],{},"\nNuget Package: ",[60,163,164,165,167,170,161,172],{"id":62,"version":63,"targetframework":64},"\nProject Reference: System.Web.Mvc.dll Runtime Version v4.0.30319, Version 4.0.0.0\nFile System: Product version 4.0.20710.0",[53,166],{},[151,168,169],{},"After",[53,171],{},[60,173,174,175,177,178],{"id":62,"version":130,"targetframework":64},"\nProject Reference:System.Web.Mvc Runtime version 4.0.30319 and Version 4.0.0.1\nFile System:File version 4.0.40804.0",[53,176],{},"\nWe also have to note that the web.config was updated by the Nuget package, notice below the newVersion is 4.0.0.1\n",[179,180,181,182],"dependent-assembly",{},"\n  ",[183,184,181,187],"assembly-identity",{"name":185,"publickeytoken":186},"System.Web.Mvc","31bf3856ad364e35",[188,189],"binding-redirect",{"oldversion":190,"newversion":191},"0.0.0.0-4.0.0.1","4.0.0.1",{"title":11,"searchDepth":12,"depth":12,"links":193},[],"2020-06-11T20:28:49.852Z","Versions of Asp.net",{},"\u002Farticles\u002Fasp-net-mvc-versions-microsoft-aspnet-mvc",{"title":27,"description":195},"articles\u002Fasp-net-mvc-versions-microsoft-aspnet-mvc",[18],"j2JjzZkhslYYQHf8dsNiFM_V-AhPEaLg23n12z9xFLw",{"id":203,"title":204,"author":28,"body":205,"createdAt":194,"description":468,"extension":15,"img":469,"meta":470,"navigation":19,"path":471,"seo":472,"stem":473,"tags":474,"updatedAt":194,"__hash__":477},"articles\u002Farticles\u002Fstarting-jquery-and-get-the-downloads-and-patchesfor-visual-studio-net-2008.md","Starting jQuery and Get the downloads and patches(for Visual Studio.NET 2008)",{"type":8,"value":206,"toc":466},[207,220,228,462],[32,208,209,210,215,216,219],{},"1.) Download install VS.NET 2008 SP1 patch   Visual Studio 2008 SP1 has the following patch to allow IntelliSense with jQuery found\n",[38,211,214],{"href":212,"target":213},"http:\u002F\u002Fcode.msdn.microsoft.com\u002FKB958502\u002FRelease\u002FProjectReleases.aspx?ReleaseId=1736","_blank","here",".  Note: this is a patch that is applied\nafter .NET 3.5 SP1 and Visual Studio 2008 SP1.  Information about this patch can be found\n",[38,217,214],{"href":218,"target":213},"http:\u002F\u002Fblogs.msdn.com\u002Fwebdevtools\u002Farchive\u002F2008\u002F11\u002F07\u002Fhotfix-to-enable-vsdoc-js-intellisense-doc-files-is-now-available.aspx",".\nI did find that the vsdoc.js version must match the version of jquery in order for the intellisense to function correctly.  If the versions mismatch intellisense\nwill not work.",[32,221,222,223,227],{},"2.) ",[38,224,226],{"href":225,"target":213},"http:\u002F\u002Fdocs.jquery.com\u002FDownloading_jQuery","Download"," jQuery documentation library  ",[229,230,231,240,246,249,387,392,456,459],"blockquote",{},[32,232,233,234,236,237],{},"3.) ",[38,235,226],{"href":225,"target":213}," jQuery \n",[42,238],{"alt":11,"src":239},"\u002Farticles\u002Fimages\u002FAsp.netCompilationModels_86E6\u002Fimage_4a.png",[32,241,242,243],{},"4.) Copy both 2 and 3 to your solution Scripts folder\n",[42,244],{"alt":11,"src":245},"\u002Farticles\u002Fimages\u002FAsp.netCompilationModels_86E6\u002Fimage_8.png",[32,247,248],{},"5.) In your aspx reference the jquery file",[250,251,255],"pre",{"className":252,"code":253,"language":254,"meta":11,"style":11},"language-js shiki shiki-themes github-light github-dark","\u003Cscript src=\"Scripts\u002Fjquery-1.2.6.min.js\" type=\"text\u002Fjavascript\">\u003C\u002Fscript>    or    \u003Casp:ScriptManager runat=\"server\" ID=\"scriptmanager1\">     \n    \u003CScripts>      \n        \u003Casp:ScriptReference Path=\"~\u002FScripts\u002Fjquery-1.2.6.min\" \u002F>      \n    \u003C\u002FScripts>      \n\u003C\u002Fasp:ScriptManager> \n","js",[256,257,258,327,338,363,373],"code",{"__ignoreMap":11},[259,260,263,267,271,275,279,283,286,288,291,294,296,299,301,304,307,309,312,316,318,321,324],"span",{"class":261,"line":262},"line",1,[259,264,266],{"class":265},"sVt8B","\u003C",[259,268,270],{"class":269},"s9eBZ","script",[259,272,274],{"class":273},"sScJk"," src",[259,276,278],{"class":277},"szBVR","=",[259,280,282],{"class":281},"sZZnC","\"Scripts\u002Fjquery-1.2.6.min.js\"",[259,284,285],{"class":273}," type",[259,287,278],{"class":277},[259,289,290],{"class":281},"\"text\u002Fjavascript\"",[259,292,293],{"class":265},">\u003C\u002F",[259,295,270],{"class":269},[259,297,298],{"class":265},">    or    ",[259,300,266],{"class":277},[259,302,303],{"class":273},"asp",[259,305,306],{"class":265},":ScriptManager runat",[259,308,278],{"class":277},[259,310,311],{"class":281},"\"server\"",[259,313,315],{"class":314},"sj4cs"," ID",[259,317,278],{"class":277},[259,319,320],{"class":281},"\"scriptmanager1\"",[259,322,323],{"class":277},">",[259,325,326],{"class":265},"     \n",[259,328,329,332,335],{"class":261,"line":12},[259,330,331],{"class":265},"    \u003C",[259,333,334],{"class":314},"Scripts",[259,336,337],{"class":265},">      \n",[259,339,341,344,346,349,352,355,357,360],{"class":261,"line":340},3,[259,342,343],{"class":265},"        \u003C",[259,345,303],{"class":269},[259,347,348],{"class":265},":",[259,350,351],{"class":314},"ScriptReference",[259,353,354],{"class":273}," Path",[259,356,278],{"class":277},[259,358,359],{"class":281},"\"~\u002FScripts\u002Fjquery-1.2.6.min\"",[259,361,362],{"class":265}," \u002F>      \n",[259,364,366,369,371],{"class":261,"line":365},4,[259,367,368],{"class":265},"    \u003C\u002F",[259,370,334],{"class":314},[259,372,337],{"class":265},[259,374,376,379,381,384],{"class":261,"line":375},5,[259,377,378],{"class":277},"\u003C\u002F",[259,380,303],{"class":273},[259,382,383],{"class":265},":ScriptManager",[259,385,386],{"class":277},">\n",[32,388,389],{},[151,390,391],{},"Some Quick Tips",[393,394,395,399,411,417,430,436,442],"ul",{},[396,397,398],"li",{},"If you are using a master page the script reference only needs to exist in the master page",[396,400,401,402,404,405,407,408,410],{},"javascript intellisense will not work in user controls by default as\nthe user control doesn’t have a reference to the js file.  A work around (use the following at the top of the user control).  At runtime ASP.NET will\nnot render this tag however Visual Studio will evaluate the script and provide intellisense",[53,403],{},"\n\u003C% if (false) { %>",[53,406],{},"\n      \u003Cscript src=”..\u002FScripts\u002Fjquery-1.2.6.min.js” type=”text\u002Fjavascript”>",[53,409],{},"\n\u003C% } %>",[396,412,413,414,416],{},"a recommended method of including js files is to create one js file which entail will include references to any number of specific js files, then on your web page\ninclude a reference to this one single js file",[53,415],{},"\n\u003Creference path=”~\u002FScripts\u002Fjquery-1.2.6.min.js” \u002F>",[396,418,419,420,422,425,426,429],{},"a good approach is to remove the version number from the jquery files to allow easier updates to these files in the future",[53,421],{},[151,423,424],{},"Path(s) for Script References","     * ",[151,427,428],{},"File-Relative Paths"," i.e. ..\u002F..\u002Ffile.js This type of path\nis relative to the currently loaded file.  Support - ASP.NET Web forms \u002F MVC",[396,431,432,435],{},[151,433,434],{},"App-Relative Paths"," i.e. ~\u002Ffolder\u002Ffile.js  Is calculated\nfrom the base of your application.  ASP.NET Web forms supports this type of path however\nthe path must be within a scriptreference tag or select asp.net\ncontrols which have runat=”server”",[396,437,438,441],{},[151,439,440],{},"Site-Relative Paths"," i.e. \u002Ffolder\u002Ffile.js  Is calculated from the base of your site.  Supported\nby ASP.NET Web forms \u002F MVC however is not supported by Visual Studio",[396,443,444,447,448,451,455],{},[151,445,446],{},"Absolute Paths"," i.e. ",[38,449],{"href":450},"http:\u002F\u002Fsite\u002Ffolder\u002Ffile.js",[38,452,450],{"href":450,"rel":453},[454],"nofollow"," \nSupported by ASP.NET Web forms \u002F MVC and Visual Studio   If using Visual Studio(ASP.NET Web forms) recommended to use App-Relative paths ~\u002Ffolder\u002Ffile.js. ",[32,457,458],{},"If using MVC use file-relative paths.",[42,460],{"src":461,"alt":11},"\u002Farticles\u002Fimages\u002Fjquery.jpg",[463,464,465],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":11,"searchDepth":12,"depth":12,"links":467},[],null,"\u002Farticles\u002Fimages\u002Fimage_thumb.png",{},"\u002Farticles\u002Fstarting-jquery-and-get-the-downloads-and-patchesfor-visual-studio-net-2008",{"title":204,"description":468},"articles\u002Fstarting-jquery-and-get-the-downloads-and-patchesfor-visual-studio-net-2008",[475,476,18],"aspnet","javascript","CaoqzxSPqdjjJIKDlApGzP7mizluXjytJfH68p7chaE",{"id":479,"title":480,"author":468,"body":481,"createdAt":608,"description":609,"extension":15,"img":468,"meta":610,"navigation":19,"path":611,"seo":612,"stem":613,"tags":614,"updatedAt":608,"__hash__":618},"articles\u002Farticles\u002Fsource-control-options-git-and-team-foundation-server-tfs.md","Source Control Options GIT and Team Foundation Server (TFS)",{"type":8,"value":482,"toc":604},[483,488,502,505,528,531,537,547,562,566,573,576,585,593,596],[484,485,487],"h3",{"id":486},"git-is-a-distributed-version-control-system","Git is a Distributed Version Control System",[393,489,490,496],{},[396,491,492,495],{},[151,493,494],{},"Each developer"," has the entire repository, including the entire change history on his\u002Fher local machine",[396,497,498,501],{},[151,499,500],{},"The developer"," can see changeset history offline or commit (check-in) changes offline to his local repository",[32,503,504],{},"Since the entire repository is local, we do everything locally. This includes, but not limited to:",[393,506,507,510,513,516,519,522,525],{},[396,508,509],{},"Committing changes (Check-in)",[396,511,512],{},"Viewing commit history",[396,514,515],{},"Creating a new branch",[396,517,518],{},"Merging branches",[396,520,521],{},"Moving to a different branch",[396,523,524],{},"Deleting branches",[396,526,527],{},"Reverting older commits",[32,529,530],{},"Yes we do have to Check-in or 'Push' our changes to the remote repository.",[32,532,533,534,348],{},"'Check-in' within Git is divided into ",[151,535,536],{},"2 parts",[32,538,539,542,543,546],{},[151,540,541],{},"Commit"," and **Push\n",[151,544,545],{},"Developers can now commit locally","whatever they want – Ugly code, comments, and work in progress. The other developers won’t get those changes as the commit is performed entirely local on their respective PC. When the code is ready for the team, they can Push the code changes to the remote repository.  This workflow gives the developer addition management of changes and when\u002Fhow things are pushed into the central repository for team consumption.",[32,548,549,550,553,554,557,558,561],{},"The ",[151,551,552],{},"Staging","concept …. this is like ",[151,555,556],{},"Included","\u002F",[151,559,560],{},"Excluded","changes in TFS. Only staged files will be committed. Again, why? (well say locally modified configuration files can stay out of source control)",[484,563,565],{"id":564},"branches-and-merges","Branches and Merges",[32,567,568,569,572],{},"In TFS\u002FTFSVC, ",[151,570,571],{},"Branch","will create a new directory with a copy of all files and directories of the parent Branch. For a developer to work on that new branch, they will have to copy that directory to his hard disk, essentially having another folder with the source code.",[32,574,575],{},"With Git, each branch is not a copy of the files from the parent branch. Instead, it’s simply a pointer to the Commit in the parent Branch from where we created our new branch.  With Git when working on a different branch, we tell Git “Move to another branch” (Checkout command) and Git will change our working area to match the desired branch. Again, there is a performance benefit as this entire action is performed locally.  Git already contains all the branches on the local machine.",[32,577,578,581,582,584],{},[151,579,580],{},"Merging"," is a lightweight operation. We can merge any branch to any branch. We can merge the entire difference or a specific Commit. Git will find the “Base” Commit where the branches split and allow us to resolve conflicts (This is the same as in TFS)",[53,583],{},"\nA good practice with Git is to create a new branch to work on a big feature. Eventually, merging that branch to the master branch and discarding the new branch entirely.",[32,586,587],{},[38,588,592],{"href":589,"target":213,"rel":590},"https:\u002F\u002Fgit-scm.com\u002Fbook\u002Fen\u002Fv2\u002FGit-Branching-Branches-in-a-Nutshell",[591],"noopener","Reference\u002FTutorial on GIT branching",[32,594,595],{},"TFS\u002FTFVC is Centralized Version Control System",[393,597,598,601],{},[396,599,600],{},"the developer has a copy of the repository file system on his machine",[396,602,603],{},"offline actions like commits (check-ins)  and seeing history are impossible since the local repository can’t save “changes”",{"title":11,"searchDepth":12,"depth":12,"links":605},[606,607],{"id":486,"depth":340,"text":487},{"id":564,"depth":340,"text":565},"2020-01-21","Git has been gaining momentum lately and continues to be the path forward for all organizations (including Microsoft) as the source control of record.  What are the differences, benefits...read more...",{},"\u002Farticles\u002Fsource-control-options-git-and-team-foundation-server-tfs",{"title":480,"description":609},"articles\u002Fsource-control-options-git-and-team-foundation-server-tfs",[615,616,18,617],"sourcecontrol","teamfoundationserver","git","z27ZBLeINXv4DaOx5aV-Ihtuz5pCxHT3joVG2EXl5Z0",{"id":620,"title":621,"author":468,"body":622,"createdAt":855,"description":468,"extension":15,"img":649,"meta":856,"navigation":19,"path":857,"seo":858,"stem":859,"tags":860,"updatedAt":855,"__hash__":861},"articles\u002Farticles\u002Fvisual-studio-how-to-target-differentlatest-c-version-net-core-3-and-c-8.md","Visual Studio How to target different\u002Flatest c# version (.NET Core 3 and C# 8)",{"type":8,"value":623,"toc":853},[624,627,641,657,668,675,757,759,770,789,795,802,808,811,832,835,840,843,849],[32,625,626],{},"Know which version of c# you were actually using or wanting to try latest c# 8 features?  How to check?",[393,628,629,632,635,638],{},[396,630,631],{},"Open the project properties window (right click on project, select properties)",[396,633,634],{},"Select ‘Build’ from the left hand side options",[396,636,637],{},"Scroll down to the Advanced options",[396,639,640],{},"Select the desired version of c#, click ok   Wanting c# 8 selection? (released with .NET Core 3, and available as part of Visual Studio 2019 (latest release)     * For me, open Visual Studio select Help – Check for Updates (and download the latest release of VS.NET)",[32,642,643,652,653],{},[38,644,646],{"href":645},"\u002Farticles\u002Fimages\u002Fimage_637062268790299787.png",[42,647],{"title":46,"style":648,"border":78,"alt":46,"src":649,"width":650,"height":651},"border: 0px currentcolor; border-image: none; display: inline; background-image: none;","\u002Farticles\u002Fimages\u002Fimage_thumb_637062268791269872.png",393,100,"   After the update, open VS.NET revisit project properties and c# 8 should be available in the ‘Language Version’ selection list….but wait it is not there (the selection list is disabled and they gave me a clue…",[38,654,656],{"href":655,"target":213},"https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fdotnet\u002Fcsharp\u002Flanguage-reference\u002Fconfigure-language-version","Why can’t I select a different c# version?",[32,658,659],{},[38,660,662],{"href":661},"\u002Farticles\u002Fimages\u002Fimage_637062268792583127.png",[42,663],{"title":46,"style":664,"border":78,"alt":46,"src":665,"width":666,"height":667},"margin: 0px; border: 0px currentcolor; border-image: none; display: inline; background-image: none;","\u002Farticles\u002Fimages\u002Fimage_thumb_637062268793729110.png",489,269,[32,669,670,674],{},[671,672,673],"em",{},"”The latest C# compiler determines a default language version based on your project's target framework or frameworks. This is because the C# language may have features that rely on types or runtime components that are not available in every .NET implementation. This also ensures that for whatever target your project is built against, you get the highest compatible language version by default.”","  Ok, so now the c# version is not selectable, it is based on the projects target framework. Here is the conversion chart…    ",[676,677,678,694],"table",{},[679,680,681],"thead",{},[682,683,684,688,691],"tr",{},[685,686,687],"th",{},"Target framework",[685,689,690],{},"version",[685,692,693],{},"C# language version default",[695,696,697,709,719,729,738,747],"tbody",{},[682,698,699,703,706],{},[700,701,702],"td",{},".NET Core",[700,704,705],{},"3.x",[700,707,708],{},"C# 8.0",[682,710,711,713,716],{},[700,712,702],{},[700,714,715],{},"2.x",[700,717,718],{},"C# 7.3",[682,720,721,724,727],{},[700,722,723],{},".NET Standard",[700,725,726],{},"2.1",[700,728,708],{},[682,730,731,733,736],{},[700,732,723],{},[700,734,735],{},"2.0",[700,737,718],{},[682,739,740,742,745],{},[700,741,723],{},[700,743,744],{},"1.x",[700,746,718],{},[682,748,749,752,755],{},[700,750,751],{},".NET Framework",[700,753,754],{},"all",[700,756,718],{},[53,758],{},[32,760,761,762],{},"Finally, that was my answer.  ",[38,763,765],{"href":764},"\u002Farticles\u002Fimages\u002Fimage_637062268794831916.png",[42,766],{"title":46,"style":648,"border":78,"alt":46,"src":767,"width":768,"height":769},"\u002Farticles\u002Fimages\u002Fimage_thumb_637062268796116567.png",499,293,[32,771,772,773,777,778,782,783,786,788],{},"References    ",[38,774,776],{"href":775,"target":213},"https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet-core\u002F3.0","Download .NET Core 3 Direct"," option Released 2019-09-23    ",[38,779,781],{"href":780,"target":213},"https:\u002F\u002Fwww.dotnetcurry.com\u002Fcsharp\u002F1489\u002Fcsharp-8-visual-studio-2019","New C# 8 Features","    ",[151,784,785],{},"One of the more important features…",[53,787],{},"\nNullable reference types (this is good addition)",[32,790,791,792,794],{},"The core idea is to allow variable type definitions to specify whether they can have null value assigned to them or not:     Weapon? canBeNull;",[53,793],{},"\nIWeapon cantBeNull;",[32,796,797,798,801],{},"Assigning a null value or a potential null value to a non-nullable variable results in a compiler warning\n(",[151,799,800],{},"the developer can configure the build to fail in case of such warnings, to be extra safe","):",[32,803,804,805,807],{},"canBeNull = null\n\u002F\u002F no warning",[53,806],{},"\ncantBeNull = null\n\u002F\u002F warning",[32,809,810],{},"cantBeNull = canBeNull;\n\u002F\u002F warning",[32,812,813,814,816,817,819,820,822,823,825,826,828,829,831],{},"Similarly, warnings are generated when dereferencing a nullable variable without checking it for null value first:",[53,815],{},"\ncanBeNull.Repair();\n\u002F\u002F warning",[53,818],{},"\ncantBeNull.Repair();\n\u002F\u002F no warning",[53,821],{},"\nif (canBeNull != null)",[53,824],{},"\n{",[53,827],{},"\ncanBeNull.Repair();\n\u002F\u002F no warning",[53,830],{},"\n}",[32,833,834],{},"The problem with such a change is that it breaks existing code:\nthe feature assumes that all variables from before the change are non-nullable.\nTo cope with that, static analysis for null-safety can be enabled selectively with a compiler switch at the project level.",[32,836,837],{},[151,838,839],{},"Developers can opt-in for nullability checking when they are ready to deal with the resulting warnings.",[32,841,842],{},"Still, this should be in their own best interest, as the warnings might reveal potential bugs in their code.",[32,844,845,846,348],{},"The switch is persisted as a property in the project file. There’s no user interface in Visual Studio 2019 yet for changing its value.\nTherefore, the following line must be ",[151,847,848],{},"added manually to the first PropertyGroup element of the project file to enable\nthe feature for the project",[850,851,852],"nullable-context-options",{},"\nenable\n",{"title":11,"searchDepth":12,"depth":12,"links":854},[],"2019-10-09T14:07:59.731Z",{},"\u002Farticles\u002Fvisual-studio-how-to-target-differentlatest-c-version-net-core-3-and-c-8",{"title":621,"description":468},"articles\u002Fvisual-studio-how-to-target-differentlatest-c-version-net-core-3-and-c-8",[18],"ypmVFhZTDDNRkorn4dMwIhgjCKVDrMBz-yfEqjhwNtM",{"id":863,"title":864,"author":468,"body":865,"createdAt":899,"description":900,"extension":15,"img":894,"meta":901,"navigation":19,"path":902,"seo":903,"stem":904,"tags":905,"updatedAt":899,"__hash__":906},"articles\u002Farticles\u002Fvisual-studio-themes.md","Visual Studio Themes",{"type":8,"value":866,"toc":897},[867,883,886],[32,868,869,870,873,876,877,880],{},"I have not been a fan historically of dark mode however recently I found this site ",[38,871],{"href":872},"https:\u002F\u002Fgithub.com\u002Frainglow\u002Fvs",[38,874,872],{"href":872,"rel":875},[454]," which has 320+ Visual Studio (Not Vs Code @Code) .  You can preview themes here ",[38,878],{"href":879},"http:\u002F\u002Fdaylerees.github.io\u002F",[38,881,879],{"href":879,"rel":882},[454],[32,884,885],{},"I am using one that looks like... and liking it very much (bit easier than vs.net oob dark mode)",[32,887,888],{},[38,889,891],{"href":890},"\u002Farticles\u002Fimages\u002Fimage_636961497088613233.png",[42,892],{"style":893,"title":46,"src":894,"alt":46,"width":895,"height":896,"border":78},"display: inline; background-image: none;","\u002Farticles\u002Fimages\u002Fimage_thumb_636961497090137940.png",642,304,{"title":11,"searchDepth":12,"depth":12,"links":898},[],"2019-06-14T22:55:09.108Z","Make Visual Studio yours, use themes to change the look and feel to meet your desires",{},"\u002Farticles\u002Fvisual-studio-themes",{"title":864,"description":900},"articles\u002Fvisual-studio-themes",[18],"dXCAujKbTq5VbZD6mK7Cqb-0s_3y_nnjAU-TyuojtsA",{"id":908,"title":909,"author":468,"body":910,"createdAt":940,"description":941,"extension":15,"img":935,"meta":942,"navigation":19,"path":943,"seo":944,"stem":945,"tags":946,"updatedAt":940,"__hash__":947},"articles\u002Farticles\u002Fmultiple-solution-explorer-tools-visual-studio-extension.md","Multiple Solution Explorer Tools–Visual Studio Extension",{"type":8,"value":911,"toc":938},[912,915,922,925,928],[32,913,914],{},"This is a must-have for your Visual Studio 2017 and 2019.",[32,916,917],{},[38,918,921],{"href":919,"target":213,"rel":920},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=misaz.multiplesolutionexplorertools",[591],"Multiple Solution Explorer Tools",[32,923,924],{},"This extension mainly makes scoped Solution Explore view (create by New Solution Explorer View in context menu in Solution Explorer) persistent across solution unload and load (ie. it saves state when Visual Studio shutdown and restores it when solution is opened next time). It allows you to rename solution explorer view so you can easily distinguish it.",[32,926,927],{},"It allows you to create multiple solution explorer windows, rename them AND best of all you can close Studio and re-open, and it remembers your settings.",[32,929,930],{},[38,931,933],{"href":932},"\u002Farticles\u002Fimages\u002Fimage_636839483796186628.png",[42,934],{"style":44,"title":46,"src":935,"alt":46,"width":936,"height":937},"\u002Farticles\u002Fimages\u002Fimage_thumb_636839483797297446.png",160,399,{"title":11,"searchDepth":12,"depth":12,"links":939},[],"2019-01-24T17:39:39.809Z","This extension mainly makes scoped Solution Explore view (create by New Solution Explorer View in context menu in Solution Explorer) persistent across solution unload and load (ie. it saves state when Visual Studio shutdown and restores it when solution is opened next time).  Definitely a must have!",{},"\u002Farticles\u002Fmultiple-solution-explorer-tools-visual-studio-extension",{"title":909,"description":941},"articles\u002Fmultiple-solution-explorer-tools-visual-studio-extension",[18],"9vW9DawB66Pk-Z5BJTPAmcJ9KezrCWHX1ISmdlCpLJg",{"id":949,"title":950,"author":468,"body":951,"createdAt":1036,"description":1037,"extension":15,"img":966,"meta":1038,"navigation":19,"path":1039,"seo":1040,"stem":1041,"tags":1042,"updatedAt":1036,"__hash__":1044},"articles\u002Farticles\u002Fattaching-to-net-debugger-wvisual-studio-aspnet-core.md","Attaching to .NET Debugger w\u002FVisual Studio ASP.NET Core",{"type":8,"value":952,"toc":1034},[953,956,977,980,984,987,990,1000,1003,1012,1015,1024],[32,954,955],{},"Attaching from within Visual Studio to the dotnet.exe process Debug – Attach to Process",[229,957,958,959,958,968,958],{},"  \n",[38,960,962],{"href":961},"\u002Farticles\u002Fimages\u002Fimage_thumb3_636794037223872773.png",[42,963],{"style":964,"title":965,"src":966,"alt":965,"width":967,"height":147,"border":78},"margin: 0px; border: 0px currentcolor; display: inline; background-image: none;","image_thumb3","\u002Farticles\u002Fimages\u002Fimage_thumb3_thumb_636794037227151161.png",166,[38,969,971],{"href":970},"\u002Farticles\u002Fimages\u002Fimage_thumb4_636794037229825895.png",[42,972],{"style":973,"title":974,"src":975,"alt":974,"width":147,"height":976,"border":78},"border: 0px currentcolor; display: inline; background-image: none;","image_thumb4","\u002Farticles\u002Fimages\u002Fimage_thumb4_thumb_636794037232542538.png",174,[229,978,979],{},"  \nThis works fine, however to me seems too many clicks\u002Fsteps to do efficiently.  \n",[38,981,983],{"href":982},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=arcticdev.AnotherAttachToAny","AnotherAttachToAny",[32,985,986],{},"Once installed, I then set keystroke shortcut keys to execute the above steps.  This is how it is currently configured to me.  You can see I have Alt-A setup to immediately attach to the w3process (IIS), and Alt-D attaches to dotnet.exe. ",[32,988,989],{},"This is one keystroke to attach to the running process and any breakpoints within my .net code are hit and I can then step through.",[32,991,992],{},[38,993,995],{"href":994},"\u002Farticles\u002Fimages\u002Fimage_636794037234623240.png",[42,996],{"style":997,"title":46,"src":998,"alt":46,"width":147,"height":999,"border":78},"margin: 0px; display: inline; background-image: none;","\u002Farticles\u002Fimages\u002Fimage_thumb_636794037237173898.png",62,[32,1001,1002],{},"Configuration of this extension is done through Tools – Options – Another Attach To Any",[32,1004,1005],{},[38,1006,1008],{"href":1007},"\u002Farticles\u002Fimages\u002Fimage_636794037240524929.png",[42,1009],{"style":997,"title":46,"src":1010,"alt":46,"width":147,"height":1011,"border":78},"\u002Farticles\u002Fimages\u002Fimage_thumb_636794037243711700.png",193,[32,1013,1014],{},"Setting up a keystroke to one of the above commands is done through Tools – Options – Keyboard",[32,1016,1017],{},[38,1018,1020],{"href":1019},"\u002Farticles\u002Fimages\u002Fimage_636794037246961946.png",[42,1021],{"style":997,"title":46,"src":1022,"alt":46,"width":147,"height":1023,"border":78},"\u002Farticles\u002Fimages\u002Fimage_thumb_636794037249700449.png",191,[32,1025,1026,1027],{},"This single extension has saved me hundreds of hours ",[42,1028],{"className":1029,"src":1032,"alt":1033},[1030,1031],"wlEmoticon","wlEmoticon-smile","\u002Farticles\u002Fimages\u002FwlEmoticon-smile_636794037251738341.png","Smile",{"title":11,"searchDepth":12,"depth":12,"links":1035},[],"2018-12-03T03:15:25.405Z","You have a website up and running, and now you want to connect the Visual Studio Debugger.  This is often the case if you do not start with F5 - Debug to start the browser and automatically attach to the .net debugger.  In reality, I almost never push F5.  Instead, I attach to the debugger on the fly with the approach below.  Take a moment to check it out.",{},"\u002Farticles\u002Fattaching-to-net-debugger-wvisual-studio-aspnet-core",{"title":950,"description":1037},"articles\u002Fattaching-to-net-debugger-wvisual-studio-aspnet-core",[1043,475,18],"netcore","Nscy8wnaq8s7ro0UwOm6dGcZvHofFD7TMOQpO4pRHZs",{"id":1046,"title":1047,"author":468,"body":1048,"createdAt":1107,"description":1108,"extension":15,"img":1060,"meta":1109,"navigation":19,"path":1110,"seo":1111,"stem":1112,"tags":1113,"updatedAt":1107,"__hash__":1114},"articles\u002Farticles\u002Fvisual-studio-i-need-a-command-prompt-quick-tip.md","Visual Studio I need a Command Prompt Quick Tip",{"type":8,"value":1049,"toc":1105},[1050,1053,1062,1074,1083,1086,1097],[32,1051,1052],{},"Ok, with today's’ development efforts I am in need of a quick way to open a command prompt to the location of the solution. Here is a quick tip on how to enable a keystroke to immediately open one for you (while working within vs.net).  Tools > External Tools “Add”",[32,1054,1055],{},[38,1056,1058],{"href":1057},"\u002Farticles\u002Fimages\u002Fimage_636774678565575322.png",[42,1059],{"title":46,"style":893,"border":78,"alt":46,"src":1060,"width":147,"height":1061},"\u002Farticles\u002Fimages\u002Fimage_thumb_636774678566514389.png",242,[32,1063,1064,1065,1067,1068,1070,1071,1073],{},"Use the following values  Title: VS Command Prompt",[53,1066],{},"\nCommand: C:\\Windows\\System32\\cmd.exe",[53,1069],{},"\nArguments: \u002Fk “C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\VsDevCmd.bat”",[53,1072],{},"\nInitial Directory: $(SolutionDir) (You can also use $(ProjectDir) to open command prompt in the location of the current project … i like this better)  After you hit OK VS Command Prompt command is available under Tools",[32,1075,1076],{},[38,1077,1079],{"href":1078},"\u002Farticles\u002Fimages\u002Fimage_636774678569077476.png",[42,1080],{"title":46,"style":893,"border":78,"alt":46,"src":1081,"width":1082,"height":147},"\u002Farticles\u002Fimages\u002Fimage_thumb_636774678569735435.png",140,[32,1084,1085],{},"Now you can add a Key Stroke command for this…  Tools > Options > Keyboard (here i have added Alt-C). Shown below the only thing to remember is this was my 2nd external tool so I had to look for Tools.ExternalCommand2 to attach my keystroke command.",[32,1087,1088],{},[38,1089,1091],{"href":1090},"\u002Farticles\u002Fimages\u002FSNAGHTML58a67cb2_636774678570976068.png",[42,1092],{"title":1093,"style":893,"border":78,"alt":1093,"src":1094,"width":1095,"height":1096},"SNAGHTML58a67cb2","\u002Farticles\u002Fimages\u002FSNAGHTML58a67cb2_thumb_636774678571975067.png",400,210,[32,1098,1099,1100,1104],{},"Now ",[42,1101],{"className":1102,"alt":1033,"src":1103},[1030,1031],"\u002Farticles\u002Fimages\u002FwlEmoticon-smile_636774678572557490.png"," I can click Alt-C and immediately a command prompt window opens to the my solution directory.",{"title":11,"searchDepth":12,"depth":12,"links":1106},[],"2018-11-10T17:30:57.333Z","Need a command prompt fast while working in Visual Studio? Yes is the answer, especially with modern web development efforts.  Often this is to start a command line interface tool, install an npm package, start a web server etc.  This is an old tip but is more relevant today than ever.  Alt-C is the answer...read how.",{},"\u002Farticles\u002Fvisual-studio-i-need-a-command-prompt-quick-tip",{"title":1047,"description":1108},"articles\u002Fvisual-studio-i-need-a-command-prompt-quick-tip",[18],"ghOLgPX7maoaDNaCXGN9EJJOfhVA9pCxBkqaMJ6_RJA",{"id":1116,"title":1117,"author":468,"body":1118,"createdAt":1144,"description":1145,"extension":15,"img":468,"meta":1146,"navigation":19,"path":1147,"seo":1148,"stem":1149,"tags":1150,"updatedAt":1144,"__hash__":1151},"articles\u002Farticles\u002Fdotnet-new-install-error.md","dotnet new–install Error",{"type":8,"value":1119,"toc":1142},[1120],[32,1121,1122,1123,1126,1127,1129,1130,1132,1133,1135,1136,1139],{},"Error: Could not install …\nError: Value cannot be null.\nParameter name: key\nUsage: new ",[259,1124,1125],{},"options","\n…",[53,1128],{},"\nWhen building a new solution template for ASP.NET Core solution, I received the above error.  I had not seen this with prior template build efforts.  This was new with .NET Core.",[53,1131],{},"\nThe error occurs when one of the node_modules folders contain a template.json file.  The solution for me, was to entirely remove the node_modules directory before attempting to build the template.",[53,1134],{},"\nReference: ",[38,1137],{"title":1138,"href":1138},"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Fcli\u002Fissues\u002F8989",[38,1140,1138],{"href":1138,"rel":1141},[454],{"title":11,"searchDepth":12,"depth":12,"links":1143},[],"2018-10-01T17:34:36.000Z","When building a new solution template for ASP.NET Core solution, I received the above error.  I had not seen this with prior template build efforts.  This was new with .NET Core.",{},"\u002Farticles\u002Fdotnet-new-install-error",{"title":1117,"description":1145},"articles\u002Fdotnet-new-install-error",[475,18],"XRM2kTE2W4vJBJM2Tq54l8-3P9fLs6wmg5o6w7hhzcA",{"id":1153,"title":1154,"author":28,"body":1155,"createdAt":1188,"description":1189,"extension":15,"img":1185,"meta":1190,"navigation":19,"path":1191,"seo":1192,"stem":1193,"tags":1194,"updatedAt":1188,"__hash__":1195},"articles\u002Farticles\u002Ftelerik-reporting-and-really-impressive.md","Telerik Reporting and Really Impressive",{"type":8,"value":1156,"toc":1186},[1157,1160,1163,1166,1169,1176],[32,1158,1159],{},"My experience with the relatively new Telerik reporting solution has been very positive.  In order to create a report you simply need a 3 dll’s within your solution and a data source.    The data source can be ANY ADO.NET data source as well as business objects, XML, Web Services etc. ",[32,1161,1162],{},"As the data source can be any ADO.NET source the reporting solution works against SQL Server, MySQL, Oracle, Access, OLE DB etc.  I have been a big fan of SQL Reporting Services for quite a while (moving to SQL RS many years ago as I ran from Crystal Reports). ",[32,1164,1165],{},"Unlike SQL RS it is a very fast install on local development workstation and nothing on the server is required.  The product is licensed by developer making utilization by the enterprise not dependent on the number of users.  This really works out well in the Internet type environment.    I found the the designer (within Visual Studio) to be very fast and easier to use that SQL RS.  The drag and drop features and the visual clues are clearly superior than other reporting solutions I have used.",[32,1167,1168],{},"Telerik Reporting supports the most commonly used output formats out-of-the-box: PDF, Excel, RTF, CSV, MHTML, BMP, GIF, JPEG, PNG, TIFF and metafile (EMF).  The Telerik product certainly makes it easy to find the data source, connect within Visual Studio and drag and drop the fields onto the design surface.",[32,1170,1171,1172],{},"More information can be found online at ",[38,1173,1175],{"href":1174,"target":213},"http:\u002F\u002Fwww.telerik.com\u002Fproducts\u002Freporting\u002Foverview.aspx","Telerik Reporting",[32,1177,1178],{},[38,1179,1181],{"href":1180},"\u002Farticles\u002Fimages\u002Fimage_4.png",[42,1182],{"title":46,"style":1183,"height":1184,"alt":46,"src":1185,"width":147,"border":78},"border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px",110,"\u002Farticles\u002Fimages\u002Fimage_thumb_1.png",{"title":11,"searchDepth":12,"depth":12,"links":1187},[],"2017-05-29T20:59:15.8038514Z","Experience with Telerik Reporting",{},"\u002Farticles\u002Ftelerik-reporting-and-really-impressive",{"title":1154,"description":1189},"articles\u002Ftelerik-reporting-and-really-impressive",[18],"VnOxxF6UPPJZuAeC8AeVTJrgkQ8VbTy23tLzCccb3Vs",{"id":1197,"title":1198,"author":28,"body":1199,"createdAt":1233,"description":11,"extension":15,"img":468,"meta":1234,"navigation":19,"path":1235,"seo":1236,"stem":1237,"tags":1238,"updatedAt":1233,"__hash__":1239},"articles\u002Farticles\u002Fvisual-studio-2012-extensions-to-help-you-cope-with-change.md","Visual Studio 2012 Extensions To Help you cope with Change",{"type":8,"value":1200,"toc":1231},[1201],[393,1202,1203,1213,1222],{},[396,1204,1205,1209,1210,1212],{},[38,1206,1208],{"href":1207,"target":213},"http:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F366ad100-0003-4c9a-81a8-337d4e7ace05","Visual Studio 2012 Color Theme Editor"," extension! This extension provides you with seven new color themes to choose from as well as the ability to easily create new custom themes.",[53,1211],{},"\n ",[396,1214,1215,1219,1220,1212],{},[38,1216,1218],{"href":1217,"target":213},"http:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F48dd9c4d-3ba6-4805-9a1f-09099e9af015","All Caps Menu Options","  Allows you to turn all caps in menu titles on and off in the Visual Studio options dialog.",[53,1221],{},[396,1223,1224,1228,1229,1212],{},[38,1225,1226],{"title":1226,"href":1227,"target":213},"AttachTo","http:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002Fd0265ab0-df51-4100-8e10-1f84403c4cd0"," Adds \"Attach to IIS\u002FIIS Express\u002FNUnit\" commands to the Tools menu.",[53,1230],{},{"title":11,"searchDepth":12,"depth":12,"links":1232},[],"2017-05-29T20:59:15.4218512Z",{},"\u002Farticles\u002Fvisual-studio-2012-extensions-to-help-you-cope-with-change",{"title":1198,"description":11},"articles\u002Fvisual-studio-2012-extensions-to-help-you-cope-with-change",[18],"eXEyG5IDOxaAKmdaBzuOQXOkXQO1g5mp6uQo0RU9m-o",{"id":1241,"title":1242,"author":468,"body":1243,"createdAt":1425,"description":1426,"extension":15,"img":1417,"meta":1427,"navigation":19,"path":1428,"seo":1429,"stem":1430,"tags":1431,"updatedAt":1425,"__hash__":1433},"articles\u002Farticles\u002Fnode-js-server-side-javascript-process-consuming-too-much-memory.md","Node.js server-side JavaScript process consuming too much memory",{"type":8,"value":1244,"toc":1423},[1245,1248,1251,1391,1394,1397,1400,1420],[32,1246,1247],{},"After the installation of Visual Studio 2017 latest edition, I have been watching memory consumption. Node.exe seems to be consistently around 500-700mb of RAM!. I did find this post which helps explain what is going on.",[32,1249,1250],{},"The node process you are seeing is powering the JavaScript language service. You will see this process appear anytime you edit a JS file, TS file, or any file with JS\u002FTS inside (html, cshtml, etc). This process is what powers IntelliSense, code navigation, formatting, and other editing features and it does this by analyzing the entire context of your project. If you have a lot of .js files in your project, this can get large, but more than likely the issue is that you have a lot of library files that are being analyzed. By default, we will scan every .js\u002F.ts file in your project. But you can override this behavior and tune the language service to only focus on your code. To do this create a tsconfig.json in your project root with the following settings:”",[250,1252,1254],{"className":252,"code":1253,"language":254,"meta":11,"style":11},"{\n    \"compilerOptions\": {\n        \"allowJs\": true,\n        \"noEmit\": true\n    },\n    \"exclude\": [\n        \"wwwroot\u002Flib\" \u002F\u002Fignore everything in the lib folder (bootstrap, jquery, etc)  \n        \u002F\u002F add any other folders with library code here\n    ],\n    \"typeAcquisition\": { \n        \"enable\": true,\n        \"include\": [\n            \"bootstrap\"\n            \"jquery\"  \u002F\u002Flist libraries you are using here\n        ]\n    }\n}  \n",[256,1255,1256,1261,1269,1283,1293,1298,1307,1317,1323,1329,1338,1350,1358,1364,1373,1379,1385],{"__ignoreMap":11},[259,1257,1258],{"class":261,"line":262},[259,1259,1260],{"class":265},"{\n",[259,1262,1263,1266],{"class":261,"line":12},[259,1264,1265],{"class":281},"    \"compilerOptions\"",[259,1267,1268],{"class":265},": {\n",[259,1270,1271,1274,1277,1280],{"class":261,"line":340},[259,1272,1273],{"class":281},"        \"allowJs\"",[259,1275,1276],{"class":265},": ",[259,1278,1279],{"class":314},"true",[259,1281,1282],{"class":265},",\n",[259,1284,1285,1288,1290],{"class":261,"line":365},[259,1286,1287],{"class":281},"        \"noEmit\"",[259,1289,1276],{"class":265},[259,1291,1292],{"class":314},"true\n",[259,1294,1295],{"class":261,"line":375},[259,1296,1297],{"class":265},"    },\n",[259,1299,1301,1304],{"class":261,"line":1300},6,[259,1302,1303],{"class":281},"    \"exclude\"",[259,1305,1306],{"class":265},": [\n",[259,1308,1310,1313],{"class":261,"line":1309},7,[259,1311,1312],{"class":281},"        \"wwwroot\u002Flib\"",[259,1314,1316],{"class":1315},"sJ8bj"," \u002F\u002Fignore everything in the lib folder (bootstrap, jquery, etc)  \n",[259,1318,1320],{"class":261,"line":1319},8,[259,1321,1322],{"class":1315},"        \u002F\u002F add any other folders with library code here\n",[259,1324,1326],{"class":261,"line":1325},9,[259,1327,1328],{"class":265},"    ],\n",[259,1330,1332,1335],{"class":261,"line":1331},10,[259,1333,1334],{"class":281},"    \"typeAcquisition\"",[259,1336,1337],{"class":265},": { \n",[259,1339,1341,1344,1346,1348],{"class":261,"line":1340},11,[259,1342,1343],{"class":281},"        \"enable\"",[259,1345,1276],{"class":265},[259,1347,1279],{"class":314},[259,1349,1282],{"class":265},[259,1351,1353,1356],{"class":261,"line":1352},12,[259,1354,1355],{"class":281},"        \"include\"",[259,1357,1306],{"class":265},[259,1359,1361],{"class":261,"line":1360},13,[259,1362,1363],{"class":281},"            \"bootstrap\"\n",[259,1365,1367,1370],{"class":261,"line":1366},14,[259,1368,1369],{"class":281},"            \"jquery\"",[259,1371,1372],{"class":1315},"  \u002F\u002Flist libraries you are using here\n",[259,1374,1376],{"class":261,"line":1375},15,[259,1377,1378],{"class":265},"        ]\n",[259,1380,1382],{"class":261,"line":1381},16,[259,1383,1384],{"class":265},"    }\n",[259,1386,1388],{"class":261,"line":1387},17,[259,1389,1390],{"class":265},"}\n",[32,1392,1393],{},"Another option",[32,1395,1396],{},"Disabling the TypeScript extension is a workaround for the moment, at least for me. Click Tools, Extensions and Updates, search for \"TypeScript\" and disable it. Restart Visual Studio.”",[32,1398,1399],{},"Give it a try and let me know how it goes.",[32,1401,1402,1403,1406,1409,1411],{},"Reference: ",[38,1404],{"title":1405,"href":1405},"https:\u002F\u002Fdevelopercommunity.visualstudio.com\u002Fcontent\u002Fproblem\u002F27033\u002Fnodejs-server-side-javascript-process-consuming-to.html",[38,1407,1405],{"href":1405,"rel":1408},[454],[53,1410],{},[38,1412,1415],{"style":1413,"href":1414},"display: none;","\u002Farticles\u002Fimages\u002Fopen-live-writer-nodjs-server-side-javascript-process-co_13be9-js_2.png",[42,1416],{"style":76,"title":254,"src":1417,"alt":254,"width":1418,"height":1419,"border":78},"\u002Farticles\u002Fimages\u002Fopen-live-writer-nodjs-server-side-javascript-process-co_13be9-js_thumb.png",203,156,[463,1421,1422],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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":11,"searchDepth":12,"depth":12,"links":1424},[],"2017-03-17T06:10:45.510Z","After the installation of Visual Studio 2017 latest edition, I have been watching memory consumption.  Node.exe seems to be consistently around 500-700mb of RAM!.  I did find this post which helps explain what is going on.",{},"\u002Farticles\u002Fnode-js-server-side-javascript-process-consuming-too-much-memory",{"title":1242,"description":1426},"articles\u002Fnode-js-server-side-javascript-process-consuming-too-much-memory",[18,1432],"node","tfPFLFfbdUgW8RNm41oUcBHq_jakGfUAHcj1hY7w06Y",{"id":1435,"title":1436,"author":28,"body":1437,"createdAt":1481,"description":468,"extension":15,"img":1482,"meta":1483,"navigation":19,"path":1484,"seo":1485,"stem":1486,"tags":1487,"updatedAt":1481,"__hash__":1488},"articles\u002Farticles\u002Fvisual-studio-2015-toolbox-items-missing.md","Visual Studio 2015 Toolbox Items missing",{"type":8,"value":1438,"toc":1479},[1439,1446,1463,1466,1471],[32,1440,1441,1442,1445],{},"Recently, I was using a 3rd party product that had toolbox items.  All was good after installation, then Visual Studio crashed,\nand my new toolbox items disappeared.  Restarting didn’t help.  I came across the following solution which\n",[151,1443,1444],{},"did ","solve my issue. To understand the cause of Toolbox issues and resolve them, perform the following steps:",[393,1447,1448,1451,1454,1457,1460],{},[396,1449,1450],{},"Open the \"%USERPROFILE%\\AppData\\Local\\Microsoft\\VisualStudio\\14.0\" folder and remove all .TBD files.",[396,1452,1453],{},"Run the Registry Editor (regedit.exe).",[396,1455,1456],{},"Locate the following keys:\n\"HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\14.0\\ToolboxControlsInstaller_AssemblyFoldersExCache\"\n\"HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\14.0\\ToolboxControlsInstallerCache\"",[396,1458,1459],{},"Remove these keys with their sub-keys.",[396,1461,1462],{},"Launch Visual Studio 2014 using the following command line:",[32,1464,1465],{},"In a 32-bit Windows:\n\"C:\\Program Files\\Microsoft Visual Studio 14.0\\Common7\\IDE\\devenv\" \u002FResetSkipPkgs \u002Flog \"\u003Cmy_folder>\\ActivityLog.xml\"\nIn a 64-bit Windows:\n\"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\devenv\" \u002FResetSkipPkgs \u002Flog \"\u003Cmy_folder>\\ActivityLog.xml\"",[393,1467,1468],{},[396,1469,1470],{},"Open Visual Studio – relaunch and hopefully all is good.",[38,1472,1474],{"href":1473},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015toolbox-items-missing_e76b-toolbox_2.jpg",[42,1475],{"title":1476,"style":1477,"border":78,"alt":1476,"src":1478,"width":124,"height":124},"toolbox","border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px","\u002Farticles\u002Fimageswindows-live-writer-visual-studio-2015toolbox-items-missing_e76b-toolbox_thumb.jpg",{"title":11,"searchDepth":12,"depth":12,"links":1480},[],"2016-01-20T12:29:49.0000000-05:00","\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015toolbox-items-missing_e76b-toolbox_thumb.jpg",{},"\u002Farticles\u002Fvisual-studio-2015-toolbox-items-missing",{"title":1436,"description":468},"articles\u002Fvisual-studio-2015-toolbox-items-missing",[18],"zdb7Iz7ZOc2BRjB-2JVcAt2ealuaketM1ImlOxRIVaU",{"id":1490,"title":1491,"author":28,"body":1492,"createdAt":1636,"description":468,"extension":15,"img":1524,"meta":1637,"navigation":19,"path":1638,"seo":1639,"stem":1640,"tags":1641,"updatedAt":1636,"__hash__":1642},"articles\u002Farticles\u002Fvisual-studio-2015-installing-remote-agent-on-a-mac.md","Visual Studio 2015–Installing Remote Agent on a Mac",{"type":8,"value":1493,"toc":1634},[1494,1497,1515,1527,1530,1540,1553,1565,1618],[32,1495,1496],{},"  Why….you need to install Remote Agent on a Mac in order to build\u002Fdeploy Visual Studio Apps that are targeted to the IOS environment.",[393,1498,1499,1502,1505,1508],{},[396,1500,1501],{},"Install Node on a Mac (see prior post)",[396,1503,1504],{},"To download and install remote agent, from a Terminal app on Mac type",[396,1506,1507],{},"sudo npm install –g npm  * sudo npm install –g remotebuild",[396,1509,1510,1511],{},"sudo npm install –g ios ",[38,1512,1514],{"href":1513},"mailto:–sim@3.1.1","–sim@3.1.1",[229,1516,1517,1518],{}," ",[38,1519,1521],{"href":1520},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_2.png",[42,1522],{"title":46,"style":1523,"border":78,"alt":46,"src":1524,"width":1525,"height":1526},"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: \n0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px","\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_thumb.png",448,241,[32,1528,1529],{},"The first command updates npm, the second command installs the remote agent, and the third command is only required if you will be using the iOS Simulator\nfrom Visual Studio.",[32,1531,1532,1533,1536,1539],{},"Reference ",[38,1534],{"title":1535,"href":1535},"https:\u002F\u002Fmsdn.microsoft.com\u002Flibrary\u002Fdn757054.aspx#ios",[38,1537,1535],{"href":1535,"rel":1538},[454],"    * To start the remote agent, from the Terminal app on your Mac type: remotebuild",[393,1541,1542,1550],{},[396,1543,1544,1545,1549],{},"this will start the agent with the default build directory ~\u002F.taco_home\u002Fremote_builds\u002Ftaco-remote\u002Fbuilds  * additional configurations\u002Foptions for the agent are described ",[38,1546,1548],{"href":1547,"target":213},"https:\u002F\u002Fmsdn.microsoft.com\u002Flibrary\u002Fdn771551%20(v=vs.140).aspx#IosConfig","Configure the remote agent"," * The first time you start the agent, you will be provided with\nthe required information to configure the agent in Visual Studio, including the host, the port, and the security PIN.",[396,1551,1552],{},"In fact, the first time\nI ran remote build, it asked me about installing Homebrew – I said continue, then I got a notification that Homebrew is already installed,\nI re-ran this time saying I didn’t want to continue with the install for Homebrew",[32,1554,1555,1564],{},[38,1556,1558],{"href":1557,"target":213},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_4.png",[42,1559],{"title":46,"style":1560,"border":78,"alt":46,"src":1561,"width":1562,"height":1563},"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px","\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_thumb_1.png",344,136,"  ",[393,1566,1567,1583,1607,1610],{},[396,1568,1569,1570,1517,1572,1581],{},"For some reason, I did not get a security PIN for my Visual Studio configuration.  At this point, I ran the remotebuild –secure false (this will disable secure mode and enable http-based connections, choosing False as the Secure mode. ",[229,1571],{},[229,1573,1517,1574],{},[38,1575,1577],{"href":1576,"target":213},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_6.png",[42,1578],{"title":46,"style":1560,"border":78,"alt":46,"src":1579,"width":1580,"height":769},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_thumb_2.png",333,[53,1582],{},[396,1584,1585,1586,1564,1605],{},"Stopping the agent on the mac, Ctrl+C  * Running my first IOS Cordova application (from Visual Studio 2015) ",[229,1587,1588,1589,96,1597],{},"   \n",[38,1590,1592],{"href":1591,"target":213},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_8.png",[42,1593],{"title":46,"style":1560,"border":78,"alt":46,"src":1594,"width":1595,"height":1596},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_thumb_3.png",195,357,[38,1598,1600],{"href":1599,"target":213},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_10.png",[42,1601],{"title":46,"style":1560,"border":78,"alt":46,"src":1602,"width":1603,"height":1604},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_thumb_4.png",192,352,[53,1606],{},[396,1608,1609],{},"While this worked, I wanted to revisit the issue about my missing Security PIN",[396,1611,1612,1613,1617],{},"To ",[38,1614,1616],{"href":1615,"target":213},"https:\u002F\u002Fmsdn.microsoft.com\u002Flibrary\u002Fdn771551%20(v=vs.140).aspx#IosPin","generate"," a new security PIN, type remote build generateClientCert  * Doing this I was able to get my Security PIN, enter it within Visual Studio and all things",[32,1619,1620,1628,1629,1631],{},[38,1621,1623],{"href":1622},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_12.png",[42,1624],{"title":46,"style":1560,"border":78,"alt":46,"src":1625,"width":1626,"height":1627},"\u002Farticles\u002Fimages\u002Fwindows-live-writer-visual-studio-2015install-remote-agent-o_e784-image_thumb_5.png",404,268,"         ",[38,1630],{"title":1535,"href":1535},[38,1632,1535],{"href":1535,"rel":1633},[454],{"title":11,"searchDepth":12,"depth":12,"links":1635},[],"2015-08-12T10:48:58.1300000-04:00",{},"\u002Farticles\u002Fvisual-studio-2015-installing-remote-agent-on-a-mac",{"title":1491,"description":468},"articles\u002Fvisual-studio-2015-installing-remote-agent-on-a-mac",[18],"NQN3PYuMPvYD-UZPG66fDRCJTeDwodVXQmx5fbhj0pE",{"id":1644,"title":1645,"author":28,"body":1646,"createdAt":1661,"description":468,"extension":15,"img":468,"meta":1662,"navigation":19,"path":1663,"seo":1664,"stem":1665,"tags":1666,"updatedAt":1661,"__hash__":1667},"articles\u002Farticles\u002Fweb-site-complete-content-missing.md","Web Site Complete Content Missing",{"type":8,"value":1647,"toc":1659},[1648,1651],[32,1649,1650],{},"Ever have trouble getting content for web projects. ",[32,1652,1653,1654,1658],{},"Pepi Ronalds wrote up a very nice article describing the pains related to getting content (type) for web related projects. \nCheck it out\n",[38,1655,1657],{"target":213,"href":1656},"http:\u002F\u002Fwww.alistapart.com\u002Farticles\u002Fthecureforcontent-delaysyndrome","here\n",".",{"title":11,"searchDepth":12,"depth":12,"links":1660},[],"2015-04-20T08:07:19.7300000-04:00",{},"\u002Farticles\u002Fweb-site-complete-content-missing",{"title":1645,"description":468},"articles\u002Fweb-site-complete-content-missing",[18],"g178fE7iFZl7UCOBlxQgNpfuz8JoGtoRZGftxYd1X7w",{"id":1669,"title":1670,"author":28,"body":1671,"createdAt":1740,"description":468,"extension":15,"img":469,"meta":1741,"navigation":19,"path":1742,"seo":1743,"stem":1744,"tags":1745,"updatedAt":1740,"__hash__":1746},"articles\u002Farticles\u002Fnet-3-5-sp1-how-to-tell-if-it-is-installed.md",".NET 3.5 SP1 How to tell if it is installed?",{"type":8,"value":1672,"toc":1738},[1673,1676,1683,1686,1697,1706,1709,1720,1728,1731],[32,1674,1675],{},"Ever want to know if you have 3.5 SP1 installed?  Shown below are two ways to determine.",[32,1677,1678,1679,1682],{},"1.) Take a look at ",[151,1680,1681],{},"HKLM\\SOFTWARE\\MICROSOFT\\NET Framework Setup\\NDP\\v3.5","  ",[229,1684,1685],{},"   Shown below are two servers.  The top one does not have SP1 installed while the lower one does. ",[229,1687,1688,1690,1682],{},[53,1689],{},[38,1691,1693],{"href":1692},"\u002Farticles\u002Fimages\u002Fimage_2.png",[42,1694],{"title":46,"style":1183,"height":1695,"alt":46,"src":469,"width":1696,"border":78},224,578,[32,1698,1699,1700,1703],{},"2.) An easy way to see if you have 3.5 SP1 installed is to navigate to ",[38,1701],{"title":1702,"href":1702},"http:\u002F\u002Fwww.hanselman.com\u002Fsmallestdotnet\u002F",[38,1704,1702],{"href":1702,"rel":1705},[454],[32,1707,1708],{},"Near the top of this page you will be given an indication if you have the latest installed.  ",[229,1710,1711,1712,1719],{},"   ",[38,1713,1715],{"href":1714},"\u002Farticles\u002Fimages\u002FNET3.5SP1Howtotellifitisinstalled_A860\u002Fimage_4.png",[42,1716],{"title":46,"style":1717,"height":976,"alt":46,"src":1185,"width":1718,"border":78},"border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px",362,"       ",[32,1721,1722,1723,1727],{},"If you do not have it installed you can use the following link to navigate you to Microsoft Downloads for ",[38,1724,1726],{"href":1725,"target":213},"http:\u002F\u002Fwww.microsoft.com\u002Fdownloads\u002Fdetails.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=en","Microsoft .NET Framework 3.5 Service Pack 1",". ",[32,1729,1730],{},"This link will install a small installer that will need to be executed.  A wizard will step you through the installation and additional downloads.",[32,1732,1733,1734,1658],{},"If you prefer a complete download of this SP1 you can use this ",[38,1735,1737],{"href":1736,"target":213},"http:\u002F\u002Fdownload.microsoft.com\u002Fdownload\u002F2\u002F0\u002Fe\u002F20e90413-712f-438c-988e-fdaa79a8ac3d\u002Fdotnetfx35.exe","link",{"title":11,"searchDepth":12,"depth":12,"links":1739},[],"2015-04-20T08:07:17.0200000-04:00",{},"\u002Farticles\u002Fnet-3-5-sp1-how-to-tell-if-it-is-installed",{"title":1670,"description":468},"articles\u002Fnet-3-5-sp1-how-to-tell-if-it-is-installed",[18],"MC9c4Xg0ISnR8LLg7rbn5Q97cgPxY_9Pduqsos6nBgA",{"id":1748,"title":1749,"author":28,"body":1750,"createdAt":1900,"description":468,"extension":15,"img":1897,"meta":1901,"navigation":19,"path":1902,"seo":1903,"stem":1904,"tags":1905,"updatedAt":1900,"__hash__":1906},"articles\u002Farticles\u002Fstrong-names-and-signing-assemblies-net.md","Strong Names and Signing Assemblies .NET",{"type":8,"value":1751,"toc":1898},[1752,1755,1761,1770,1854,1861,1864,1878,1881,1884,1895],[32,1753,1754],{},"Digital signatures are used to verify the integrity of data being passed from the originator (the signer) to a recipient (the verifier). The signatures are generated and verified using public key cryptography.",[32,1756,549,1757,1760],{},[151,1758,1759],{},"signer"," of a message has a pair of cryptographic keys: a public key, which everyone in the world knows, and a private key, which is kept secret by the signer.",[32,1762,549,1763,1766,1767,1769],{},[151,1764,1765],{},"verifier"," knows only the public key, which is used to verify that the signer knew the private key and the message.",[53,1768],{},"\nStrong Named Assemblies",[393,1771,1772,1775,1778,1781,1784,1787,1790,1793,1796,1799,1802,1815,1818,1821,1824,1836,1839,1842,1845,1848,1851],{},[396,1773,1774],{},"Strong names offer a powerful mechanism for giving .NET Framework assemblies unique identities.",[396,1776,1777],{},"The strong name for an assembly consists of five parts:",[396,1779,1780],{},"a public key (RSA cryptographic public key that helps verify the assembly's authenticity)",[396,1782,1783],{},"a simple name (text string—usually the name of the file (without the extension) that contains the assembly)",[396,1785,1786],{},"a version (four-part version number, in the form of Major.Minor.Build.Revision (i.e.  1.0.0.1)",[396,1788,1789],{},"an optional culture (Target audience for the assembly, such as \"neutral\" (default audience), \"en-us\" (English – United States) or \"fr\" (France) etc.)",[396,1791,1792],{},"and an optional processor architecture (Defines the assembly's format, such as MSIL (intermediate language) or x86 (binary for Intel x86 processors)",[396,1794,1795],{},"An assembly is strong-named during the build process using the private key which corresponds to the public key in the strong name.  The strong name can be verified using the public key.",[396,1797,1798],{},"The .NET Framework verifies the strong name signature.  If it cannot be verified the Framework will not load the assembly.",[396,1800,1801],{},"The above has one exception.  Strong named assemblies that are used in the GAC (Global Assembly Cache) are not verified each time the .NET Framework loads them.  The assemblies in the GAC are verified only at the time they are installed in the GAC as the GAC already is locked down and assemblies can only be installed by an individual who has admin permissions.  Once an assembly was installed in the GAC, it's considered to be safe and being verified earlier (during gacutil.exe phase)",[396,1803,1804,1805,1809,1810,1814],{},"Why use strong names…Strong names prevent others from spoofing your code.  i.e. a malicious user cannot modify your code and successfully re-sign it.  ",[38,1806,1808],{"href":1807},"http:\u002F\u002Fwww.codeproject.com\u002Fdotnet\u002FStrongNameExplained.asp","Strong names"," are required to store shared assemblies in the global assembly cache (GAC). This is because the GAC allows multiple versions of the same assembly to reside on your system simultaneously, so that each application can find and use its own version of your assembly. This helps avoid ",[38,1811,1813],{"href":1812},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDLL_hell","DLL Hell",", where applications that may be compiled to different versions of your assembly could potentially break because they are all forced to use the same version of your assembly.",[396,1816,1817],{},"Strong name signatures do not contain any reliable information about the publisher.  In order to trust keys from other organizations ensure you have a secure channel to get their public key.  Remember that through the public key the strong named assembly can be verified that it was signed with the corresponding private key.  Hence strong names are secure only when the strong name private key is kept secure.",[396,1819,1820],{},"Strong-name signing is a good idea for most applications, especially those that are deployed over a network or any medium not fully controlled by the deployer.",[396,1822,1823],{},"All assemblies referenced by a strong-named assembly must also be strong-named. If you reference an assembly written by a third party that is not strong-name signed, you cannot strong-name sign your assembly.",[396,1825,1826,1827,1829,1830,1832,1833,1835],{},"Strong-name signing makes servicing more complicated. Under current versioning policy, an assembly will always attempt to load the exact version of the assembly it was built against. If, for example, your application was built against version 1.0.0.0 of a strong-named assembly and you fix a bug in the assembly, bumping the version number to 1.0.0.1, the existing application will not find the updated assembly.",[53,1828],{},"\nThere are a few ways to deal with this situation. You can rebuild the application against the new assembly. Obviously, this is an annoying process for just picking up a bug fix and it may not be an option in some situations. Still, it works fine when your code is not widely deployed or the assembly being serviced is not widely shared across applications.",[53,1831],{},"\nAnother option is if the assembly is installed in the GAC, you can use publisher policy to redirect loads for version 1.0.0.0 to version 1.0.0.1. However, publisher policy is complicated.",[53,1834],{},"\nYet another option is to fix the bug and not change the assembly version number, so existing applications can still find the assembly. This is the approach the .NET Framework uses for bug fixes, although it’s not appropriate for new features or anything that breaks compatibility. If you are adding new features, you should bump the assembly version up and have applications rebuild to opt in to the new features.",[396,1837,1838],{},"Assemblies loaded in the GAC perform better as they are loaded from central system space and the verification process has already been completed.  The strong name ensures correct component versioning helping to prevent components with the same name from conflicting with each other.",[396,1840,1841],{},"To install assemblies in the GAC they must be strong named(signed).",[396,1843,1844],{},"Delay signing allows you to generate a partial signature during development with access only to the public key. ",[396,1846,1847],{},"The private key can be stored securely out of the hands of the developers and used to apply the final strong name signature just before shipping your code. ",[396,1849,1850],{},"Use the public key to delay sign your assemblies during development.",[396,1852,1853],{},"Because the assemblies are not fully signed yet, you’ll also have to configure your development machines to skip strong name signature verification for your key—otherwise, the .NET Framework will not allow you to load the delay-signed assemblies.  You must configure the .NET Framework to skip verification for the delay-signed assemblies using your public key. To do this, you use the sn.exe tool again. i.e. sn –Vr {assemblyName} ",[32,1855,1856,1857,1860],{},"Another options…to configure your development machine to ",[151,1858,1859],{},"skip all verification"," for delay signed assemblies signed with a particular key.  Using sn –T {assemblyName} will give you the public key token.  Then execute the following to skip strong name verification for any assembly using that public key token sn – Vr *,{public token}  Any assembly delay signed with that public key will now skip strong name signature verification and run on your development machine.  It should never be done on production computers because it opens up those machines to assembly spoofing attacks. ",[32,1862,1863],{},"Another technique to acquire the public key token is to use the public key file alone.\ni.e. sn – tp {publickeyfile}",[393,1865,1866],{},[396,1867,1868,1869,1873,1874,1877],{},"When you are ready to ship your code, use the (well guarded) private key to apply the final strong name signature to your delay-signed assemblies.  sn –R {assemblyName} {your key file}  Now your assembly has a full signature.  It is possible to use command line “",[38,1870,1872],{"href":1871,"target":213},"http:\u002F\u002Fwww.microsoft.com\u002Fresources\u002Fdocumentation\u002Fwindows\u002Fxp\u002Fall\u002Fproddocs\u002Fen-us\u002Ffor.mspx?mfr=true","For","” command to iterate over each dll saving a lot of typing\ni.e. for {%variable|%%variable} in (set) do command ",[259,1875,1876],{}," CommandLineOptions","\nfor %f in (*.dll) do sn –R %f MyKeyFile.snk",[32,1879,1880],{},"if you use this within a batch file replace %f with %ff",[32,1882,1883],{},"Additional Notes:",[393,1885,1886,1889,1892],{},[396,1887,1888],{},"Create a strong name key (often your organization will already have one established)\ni.e. sn –k MyKeyFile.snk  This creates a strong name key pair (both public and private keys in the same file)",[396,1890,1891],{},"Developers typically only need the public key portion.  sn –p MyKeyFile.snk MyKeyFilePublic.snk  This extracts the public key and creates a new file MyKeyFilePublic.snk.  At this point, MyKeyFile.snk should be put in a save location and available to Administrators only",[396,1893,1894],{},"To access the public key value and token sn – tp MyKeyFIlePublic.snk.  At this point, store the output in a text file somewhere.  We will use both the public key value and token.",[42,1896],{"style":1413,"src":1897,"alt":11},"\u002Farticles\u002Fimages\u002Fstrong.jpg",{"title":11,"searchDepth":12,"depth":12,"links":1899},[],"2015-04-20T08:07:15.6200000-04:00",{},"\u002Farticles\u002Fstrong-names-and-signing-assemblies-net",{"title":1749,"description":468},"articles\u002Fstrong-names-and-signing-assemblies-net",[18],"ObgnfB7dmw3KHuTDCYm1Z1HRlE1trT6XiP7-DYrKozk",{"id":1908,"title":1909,"author":28,"body":1910,"createdAt":1962,"description":1963,"extension":15,"img":1964,"meta":1965,"navigation":19,"path":1966,"seo":1967,"stem":1968,"tags":1969,"updatedAt":1962,"__hash__":1972},"articles\u002Farticles\u002Fnew-ssdt-power-tools-now-for-both-visual-studio-2010-and-visual-studio-2012.md","New SSDT Power Tools! Now for both Visual Studio 2010 and Visual Studio 2012",{"type":8,"value":1911,"toc":1960},[1912,1915,1918],[32,1913,1914],{},"Microsoft is pleased to announce the latest release of SSDT Power Tools!",[32,1916,1917],{},"We continue to use power tools to get early versions of experiences or quick features to you and we’re always interested in hearing your feedback.",[32,1919,1920,1921,1925,1926,1929,1932,1933,1936,1939,1940,1682,1944,1948,1949,1951,1952,1954,1957],{},"This release of the tools (Version 1.3) builds on the previous release.  This release of the power tools is",[1922,1923,1924],"i",{}," only ","compatible with the newest update for SQL Server Data Tools. First, get the SSDT – September 2012 update for Visual Studio 2010 or Visual Studio 2012 here:  SSDT for Visual Studio 2012: ",[38,1927],{"href":1928},"http:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Fjj650015",[38,1930,1928],{"href":1928,"rel":1931},[454],"  SSDT for Visual Studio 2010: ",[38,1934],{"href":1935},"http:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Fjj650014",[38,1937,1935],{"href":1935,"rel":1938},[454],"    For the first time, this power tools release provides a version of the power tools for Visual Studio 2012 in addition to the version for Visual Studio 2010. They are separate installs that you can grab here:  ",[38,1941,1943],{"href":1942},"http:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F9b0228c6-15d1-44de-9279-66dde12bf861?SRC=Featured","SSDT Power Tools for Visual Studio 2010",[38,1945,1947],{"href":1946},"http:\u002F\u002Fvisualstudiogallery.msdn.microsoft.com\u002F96a2f8cc-0c8b-47dd-93cd-1e8e9f34a917","SSDT Power Tools for Visual Studio 2012","  Requirements:",[53,1950],{},"\nSQL Server 2008 Service Pack 1",[53,1953],{},[38,1955],{"href":1956},"http:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fdownload\u002Fdetails.aspx?id=20302",[38,1958,1956],{"href":1956,"rel":1959},[454],{"title":11,"searchDepth":12,"depth":12,"links":1961},[],"2015-04-20T08:07:12.8400000-04:00","SQL Server Data Tools (SSDT) provides project templates and design surfaces for building SQL Server content types - relational databases, Analysis Services models, Reporting Services reports, and Integration Services packages.","\u002Farticles\u002Fimages\u002FMdpbTnH58m.png",{},"\u002Farticles\u002Fnew-ssdt-power-tools-now-for-both-visual-studio-2010-and-visual-studio-2012",{"title":1909,"description":1963},"articles\u002Fnew-ssdt-power-tools-now-for-both-visual-studio-2010-and-visual-studio-2012",[18,1970,1971],"sql","sqlserver","e_YUJhN16WAmwBhand1Scn-44WrB72gU7EuktLScjHE",{"id":1974,"title":1975,"author":28,"body":1976,"createdAt":2018,"description":2019,"extension":15,"img":2020,"meta":2021,"navigation":19,"path":2022,"seo":2023,"stem":2024,"tags":2025,"updatedAt":2018,"__hash__":2026},"articles\u002Farticles\u002Fintellisense-and-javascript-in-visual-studio-2012.md","Intellisense and JavaScript in Visual Studio 2012",{"type":8,"value":1977,"toc":2016},[1978,1981],[32,1979,1980],{},"In short use _references.js file with your web projects.  What is _references.js?",[32,1982,1983,1984,1987,1988,1212,1990,1992,1993,1212,1995,1997,1998,1212,2000,2002,2003,1212,2005,2007,2008],{},"With the latest Visual Studio a new file _references.js is found in the scripts directory.  As you probably know, the ",[256,1985,1986],{},"\u002F\u002F &lt;reference path=”…” \u002F&gt;"," syntax was introduced in Visual Studio long time ago to make you able to have intellisense in any JavaScript file to include everything defined in the JavaScript located at this path.  Said another way if you write the very first line in any JavaScript file, say “my-page.js”, and make sure the path points to the proper jQuery file, when you write code in “my-page.js”, you’ll get intellisense for everything in the jQuery file.",[53,1989],{},[53,1991],{},"\nThe quality of the intellisense will vary based on the referenced jQuery file, whether it’s minified file (least intellisense info, only member names, sometimes), just standard source\u002Fdebug file, or even one that VsDoc comments (best intellisense, might even have notes on what types you need to pass to methods, when defined in VsDoc comments).",[53,1994],{},[53,1996],{},"\nVisual Studio will give you intellisense from all files that have references in the “_references.js” file. This way you can define the global \u002F common files you use all the time. This might include some library files like jQuery, or some files you use everywhere in the project like some internal utilities files.  In addition, for related files, you can use the “\u003Creference >” syntax on top of every file to connect them (from intellisense point of view).",[53,1999],{},[53,2001],{},"\nThere is only one _references.js file for each project and is located in the \u002Fscripts directory.",[53,2004],{},[53,2006],{},"\nYou can manage this file manually or in the latest Visual Studio  release you can add\u002Fedit references via Tools > Options > Text Editor –> JavaScript –> Intellisense –> References node\n",[38,2009,2011],{"href":2010},"\u002Fmedia\u002Farticulate-import\u002Fimage_6.png",[42,2012],{"style":2013,"src":2014,"border":78,"alt":46,"title":46,"width":147,"height":2015},"background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;","\u002Farticles\u002Fimages\u002F\u002Fmedia\u002Farticulate-import\u002Fimage_thumb_6.png",143,{"title":11,"searchDepth":12,"depth":12,"links":2017},[],"2015-04-20T08:07:12.1900000-04:00","How to enable intellisense with Visual Studio and JavaScript","\u002Farticles\u002Fimages\u002Fimage_thumb_6.png",{},"\u002Farticles\u002Fintellisense-and-javascript-in-visual-studio-2012",{"title":1975,"description":2019},"articles\u002Fintellisense-and-javascript-in-visual-studio-2012",[475,18],"oVO-9EOZCUi_NY9jWqCmtawNfh0TKJlWULh6dhsTtJY",1781574760675]