[{"data":1,"prerenderedAt":369},["ShallowReactive",2],{"article-team-foundation-2018-tfs-net-core-command":3},{"article":4,"tags":80,"previous":95,"next":286},{"id":5,"title":6,"author":7,"body":8,"createdAt":69,"description":70,"extension":71,"img":46,"meta":72,"navigation":73,"path":74,"seo":75,"stem":76,"tags":77,"updatedAt":69,"__hash__":79},"articles\u002Farticles\u002Fteam-foundation-2018-tfs-net-core-command.md","Team Foundation 2018 TFS .NET Core Command",null,{"type":9,"value":10,"toc":65},"minimark",[11,15,18,21,35,50],[12,13,14],"p",{},"Using command dotnet push I was wanting to only publish nuget packages that included *.nupkg but also exclude *.symbols.nupkg pattern.",[12,16,17],{},"I figured okay, I would use option to negate a particular path. Using the help guidance",[12,19,20],{},"The pattern to match or path to nupkg files to be uploaded. Multiple patterns can be separated by a semicolon, and you can make a pattern negative by prefixing it with '-:'.",[12,22,23,24,32,34],{},"Example: ",[25,26,27,28],"strong",{},"\u002F",[29,30,31],"em",{},".nupkg;-:",[29,33,27],{},".Tests.nupkg",[12,36,37],{},[38,39,41],"a",{"href":40},"\u002Farticles\u002Fimages\u002Fimage_636764987271419965.png",[42,43],"img",{"style":44,"title":45,"src":46,"alt":45,"width":47,"height":48,"border":49},"border: 0px currentcolor; display: inline; background-image: none;","image","\u002Farticles\u002Fimages\u002Fimage_thumb_636764987272194490.png",240,118,0,[12,51,52,53,56,57,64],{},"The issue is that this is incorrect.  If you wish to pattern negative prefix with ! (with semi-colon for make delimited) such as",[54,55],"br",{},"\n$(Build.ArtifactStagingDirectory)\u002F",[29,58,59,60,63],{},".nupkg",[25,61,62],{},";!","$(Build.ArtifactStagingDirectory)\u002F",".symbols.nupkg",{"title":66,"searchDepth":67,"depth":67,"links":68},"",2,[],"2018-10-30T12:18:47.314Z","The dotnet pack command builds the project and creates NuGet packages. Careful with configuration and specifically negative file pattern matching documentation(incorrect).","md",{},true,"\u002Farticles\u002Fteam-foundation-2018-tfs-net-core-command",{"title":6,"description":70},"articles\u002Fteam-foundation-2018-tfs-net-core-command",[78],"teamfoundationserver","_MZCZimFHc2iJo_tCF1mvmKFsazly7CiZo31fvpUqzE",[81],{"id":82,"title":83,"body":84,"description":88,"extension":71,"img":89,"meta":90,"name":78,"navigation":73,"path":91,"seo":92,"stem":93,"__hash__":94},"tags\u002Ftags\u002Fteamfoundationserver.md","Teamfoundationserver",{"type":9,"value":85,"toc":86},[],{"title":66,"searchDepth":67,"depth":67,"links":87},[],"Team Foundation Server (often abbreviated to TFS) is a Microsoft product that provides tools and technologies designed to help teams collaborate and orchestrate their efforts to finish projects or create a product. It enables DevOps capabilities covering the entire application lifecycle","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1598313183973-4effcded8d5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80",{},"\u002Ftags\u002Fteamfoundationserver",{"description":88},"tags\u002Fteamfoundationserver","CEZSgtqpsn_JuGubePK9lUUC42p0YpLGI5j3KuMwrSY",{"id":96,"title":97,"author":7,"body":98,"createdAt":276,"description":277,"extension":71,"img":278,"meta":279,"navigation":73,"path":280,"seo":281,"stem":282,"tags":283,"updatedAt":276,"__hash__":285},"articles\u002Farticles\u002Fnet-standard-vs-net-core.md",".NET Standard vs. .NET Core",{"type":9,"value":99,"toc":274},[100,103,106,109,112,132,198,256],[12,101,102],{},"In Visual Studio, there are at least 3 different types of class library you can create:",[12,104,105],{},"*Class Library (.NET Framework)\n*Class Library (.NET Standard)\n*Class Library (.NET Core)",[12,107,108],{},"Use a .NET Standard library when you want to increase the number of apps that will be compatible with your library, and you are okay with\na decrease in the .NET API surface area your library can access.",[12,110,111],{},"Use a .NET Core library when you want to increase the .NET API surface area your library can access, and you are okay with allowing only\n.NET Core apps to be compatible with your library.",[12,113,114,115,119,120,123,124,127,128,131],{},"Difference:\nCompatibility: Libraries that target .NET Standard will run on any .NET Standard compliant runtime, such as .NET Core, .NET Framework, Mono\u002FXamarin. On the other hand, libraries that target .NET Core can only run on the .NET Core runtime.\nAPI Surface Area: .NET Standard libraries come with everything in ",[116,117,118],"code",{},"NETStandard.Library"," whereas .NET Core libraries come with everything in ",[116,121,122],{},"Microsoft.NETCore.App",". The latter includes approximately 20 additional libraries, some of which we can add manually to our .NET Standard library (such as ",[116,125,126],{},"System.Threading.Thread",") and some of which are not compatible with the .NET Standard (such as ",[116,129,130],{},"Microsoft.NETCore.CoreCLR",").\nAlso, .NET Core libraries specify a runtime and come with an application model. That's important, for instance, to make unit test class libraries runnable.\nIgnoring libraries for a moment, the reason that .NET Standard exists is for portability; it defines a set of APIs that .NET platforms agree to implement. Any platform that implements a .NET Standard is compatible with libraries that target that .NET Standard. One of those compatible platforms is .NET Core.\nComing back to libraries, the .NET Standard library templates exist to run on multiple runtimes (at the expense of API surface area). Obversely, the .NET Core library templates exist to access more API surface area (at the expense of compatibility) and to specify a platform against which to build an executable.\nSaid another way…",[12,133,134,135,138,139,142,143,146,147,150,151,154,155,158,161,162,150,164,166,167,170,171,150,173,175,176,179,180,182,183,186,187,190,191,193,194,197],{},"A ",[25,136,137],{},".Net Core Class Library"," is built upon the ",[25,140,141],{},".Net Standard",". If you want to implement a library that is portable to the ",[25,144,145],{},".Net Framework",", .",[25,148,149],{},"Net Core"," and ",[25,152,153],{},"Xamarin",", choose a ",[25,156,157],{},".Net Standard Library",[25,159,160],{},".Net Core will ultimately implement .Net Standard 2"," (as will ",[25,163,153],{},[25,165,145],{},")\n",[25,168,169],{},".Net Core",", ",[25,172,153],{},[25,174,145],{}," can, therefore, be identified as ",[25,177,178],{},"flavours"," of ",[25,181,141],{},"\nTo future-proof your applications for code sharing and reuse , you would rather implement .Net Standard libraries.\nMicrosoft also recommends that you use ",[25,184,185],{},".NET Standard"," instead of ",[25,188,189],{},"Portable Class Libraries",".\nTo quote MSDN as an authoritative source, ",[25,192,141],{}," is intended to be ",[25,195,196],{},"One Library to Rule Them All",".",[12,199,200,202,203,205,206,209,210,213,214,217,218,150,221,224,225,228,229,146,232,235,236,238,239,242,243,245,246,248,249,251,252,255],{},[25,201,185],{}," solves the code sharing problem for .NET developers across all platforms by bringing all the APIs that you expect and love across the environments that you need: desktop applications, mobile apps & games, and cloud services:\n",[25,204,185],{}," is a ",[25,207,208],{},"set of APIs"," that ",[25,211,212],{},"all"," .NET platforms ",[25,215,216],{},"have to implement",". This ",[25,219,220],{},"unifies the .NET platforms",[25,222,223],{},"prevents future fragmentation",".\n",[25,226,227],{},".NET Standard 2.0"," will be implemented by ",[25,230,231],{},".NET Framework",[25,233,234],{},"NET Core",", and ",[25,237,153],{},". For ",[25,240,241],{},".NET Core",", this will add many of the existing APIs that have been requested.\n",[25,244,227],{}," includes a compatibility shim for ",[25,247,231],{}," binaries, significantly increasing the set of libraries that you can reference from your .NET Standard libraries.\n",[25,250,185],{}," ",[25,253,254],{},"will replace Portable Class Libraries (PCLs)"," as the tooling story for building multi-platform .NET libraries.",[12,257,258,259,262,251,266,268,271],{},"References: ",[38,260],{"title":261,"href":261},"https:\u002F\u002Fblogs.msdn.microsoft.com\u002Fdotnet\u002F2016\u002F09\u002F26\u002Fintroducing-net-standard\u002F",[38,263,261],{"href":261,"rel":264},[265],"nofollow",[54,267],{},[38,269],{"title":270,"href":270},"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F42939454\u002Fwhat-is-the-difference-between-net-core-and-net-standard-class-library-project",[38,272,270],{"href":270,"rel":273},[265],{"title":66,"searchDepth":67,"depth":67,"links":275},[],"2018-10-30T16:21:49.892Z","Core vs. Standard has come up a lot recently.  I wanted to re-emphasize the differences here for my own purposes using references mentioned below.  Really important to know and understand.","\u002Farticles\u002Fimages\u002Fopen-live-writer-keep-nuget-packages-out-of-tfs-source-co_8714-tfs3_thumb.png",{},"\u002Farticles\u002Fnet-standard-vs-net-core",{"title":97,"description":277},"articles\u002Fnet-standard-vs-net-core",[284],"netcore","kx8ta9AYIZhNb3zhlW22x73UcUBy7FRGgPUlFaQWAC0",{"id":287,"title":288,"author":289,"body":290,"createdAt":360,"description":361,"extension":71,"img":362,"meta":363,"navigation":73,"path":364,"seo":365,"stem":366,"tags":367,"updatedAt":360,"__hash__":368},"articles\u002Farticles\u002Fupdate-npm-on-windows–current-best-approach.md","Update npm on Windows–Current Best Approach","[object Object]",{"type":9,"value":291,"toc":358},[292,299,302,308,319],[12,293,294,295,298],{},"This is the new best way to upgrade ",[25,296,297],{},"npm"," on Windows.",[12,300,301],{},"Run PowerShell as Administrator",[303,304,305],"pre",{},[116,306,307],{},"Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force\nnpm install -g npm-windows-upgrade\nnpm-windows-upgrade",[12,309,310,311,314,315,318],{},"Note: Do not run ",[116,312,313],{},"npm i -g npm",". Instead use ",[116,316,317],{},"npm-windows-upgrade"," to update npm going forward. Also if you run the NodeJS installer, it will replace the node version.",[320,321,322,326,332,335,338,341,347],"ul",{},[323,324,325],"li",{},"Upgrades npm in-place, where node installed it.",[323,327,328,329,197],{},"Easy updating, update to the latest by running ",[116,330,331],{},"npm-windows-upgrade -p -v latest",[323,333,334],{},"Does not modify the default path.",[323,336,337],{},"Does not change the default global package location.",[323,339,340],{},"Allows easy upgrades and downgrades.",[323,342,343,197],{},[38,344,346],{"href":345},"https:\u002F\u002Fgithub.com\u002Fnpm\u002Fnpm\u002Fwiki\u002FTroubleshooting#upgrading-on-windows","Officially recommended by the NPM team",[323,348,349,350,353,354,357],{},"A list of versions matched between NPM and NODE (",[38,351,352],{"href":352},"https:\u002F\u002Fnodejs.org\u002Fen\u002Fdownload\u002Freleases\u002F",") - but you will need to download NODE INSTALLER and run that to update node (",[38,355,356],{"href":356},"https:\u002F\u002Fnodejs.org\u002Fen\u002F",")",{"title":66,"searchDepth":67,"depth":67,"links":359},[],"2018-10-23T18:23:21.082Z","This is the new best way to upgrade npm on Windows","\u002Farticles\u002Fimages\u002Fsingleton_thumb.png",{},"\u002Farticles\u002Fupdate-npm-on-windows-current-best-approach",{"title":288,"description":361},"articles\u002Fupdate-npm-on-windows–current-best-approach",[297],"o4jaqV350CYl-Sj4Y9dUejcdC7WPqrJ9gzKLdNfnykg",1781574768607]