Posted on Leave a comment

Meet Surface Pro 6, Surface Laptop 2, Surface Studio 2 and Surface Headphones

New Surface devices, along with new innovations in Windows and Office 365, offer more performance and productivity across your whole life.

Today we are proud to share four new Surface products with the world. Products built for people.

We put our hearts and souls into making these products, for people who want to do more, dream more, and achieve more. We understand the way people work and live is changing, with different areas of our lives are blending together, and the need to spend our valuable time on the things that really matter is increasing. With that understanding, we build Surface products to empower people to accomplish these great things. And to do this, the technology needs to fade to the background so you can get into your most creative state, your flow. You need the right devices and technology that can travel with you, be ready when you are – whenever and wherever inspiration strikes.

That’s the power of Surface, Windows, and Office connected together through the cloud, creating the right instrument for you. We’ve designed them together to optimize every ounce, every pixel, and every line of code to empower you to be more productive and more creative. As you watch the videos below, you’ll see this… we obsess over every detail, every line of the device, every sound, every fit, finish and feel, creating a symphony with our hardware, software and intelligence experiences.

We’re pumped about our next generation of incredible Surface products and experiences.

Introducing Surface Pro 6 and Surface Laptop 2
We love to hear from our customers about why they love Surface. With Surface Pro and Surface Laptop we hear time and again how their lightweight and thin designs make them easy to carry, while the performance capabilities mean they can use their Surface for a huge range of activities whether they’re designing a PowerPoint for school, crunching numbers in Excel at work, or watching Netflix at home on the couch. We wanted to keep all the things we know customers love about Surface while giving them even more performance. Both of these incredible products come in an all new finish, a timeless and sophisticated matte black.

Surface Pro 6

Surface Pro 6 is the most powerful Surface Pro yet, introducing the latest 8th generation Intel® Quad Core™ processor. At more than 67 percent faster than 5th generation Surface Pro, we’ve redesigned Surface Pro 6 to pack in power but keep the portability, versatility and all-day battery we know our fans love.

Featuring our PixelSense™ Touch Display, Surface Pro 6 adapts to help you take your ideas to the next level and create your best work with Office 365* on Windows and features like intelligent inking. And to get more in their flow, customers can take advantage of helpful time savers, including password-free Windows Hello sign-in and Windows Timeline.

Surface Laptop 2

With boosted performance from the new Quad Core 8th generation Intel® processor, Surface Laptop 2 is an astounding 85 percent faster than the original Surface Laptop. Meticulously crafted with its premium design, PixelSense™ Touch Display, and best in class keyboard and trackpad, this new generation delivers the perfect balance of quiet beauty, performance and portability, without sacrificing the 14.5 hours of battery life you need to get through your day.

Every detail optimized for black
As a team we explore different finishes. And when we modeled our devices in this beautiful matte black, we fell in love. We knew we had to bring it to life for our customers. We obsess about the way this finish looks and feels in the same way we obsess about the sound of the kickstand and the quality of every pixel of the display. This is what brings the element of beauty to the product.
Every connector, radius, port, hinge, come together to bring an elegance that is stunning.

Introducing Surface Studio 2

Surface Studio 2 is the most powerful Surface ever. It’s built for creators who need vibrancy, high graphics performance, and fast processing, providing them with an immersive experience as the tech fades into the background allowing for space to focus. People who use Studio need high end performance, especially graphics performance. And Surface Studio 2 delivers with next generation Pascal graphics and 50 percent faster GPU.

One of the things we hear most from our fans is how much they love the vibrancy of the luminous display – an incredible floating sheet of pixels. And the new Surface Studio is 38 percent brighter, with 22 percent more contrast, ensuring whatever you create looks amazing. With 4,096 levels of pressure, tilt sensitivity for drawing and sketching, and best-in-class ink latency, Surface Studio 2 and Surface Pen were designed together to deliver the ultimate creative canvas.

Surface Headphones

We built Surface Headphones to complete the Surface experience. To help you get into your flow, wherever you are. Whether you’re in an open work space, a café or on the go, Surface Headphones help tune out or tune in wherever you are. They slip comfortably over your ears to surround you with spectacular sound quality and 13 levels of ambient noise control. Designed with collaboration in mind, there are 2 beam-forming microphones on each ear cup, 8 microphones in total, all helping you focus on the sounds you want to capture allowing for excellent call experiences. You can easily adjust volume and noise cancellation levels with new, intuitive on-ear dials.

And while Surface Headphones are optimized for Surface devices, they will pair with any Bluetooth enabled device so when you’re switching between PC and phone, you can stay connected to your music, meeting or call seamlessly. And voice-activated Cortana, available in the U.S. built in, is ready to assist for whatever you need.

Availability details + Surface All Access
Surface Pro 6, Surface Laptop 2 and Surface Studio 2, are available for preorder in select markets beginning today with additional market availability expected in 2019*. Surface Headphones will be available in both the US and UK in time for the holidays. And we’re pleased to offer Surface All Access through our Microsoft Stores in the US where you can begin purchasing these new products starting Oct. 16. Surface All Access is a new way to purchase your favorite Surface product with accessories, Office 365, dedicated support, and Microsoft Store benefits for a single low monthly payment, starting at $24.99. We hope this allows you to choose the product that will best help you achieve your goals and ambitions.

Surface + Windows + Office built together for you
We all have goals, values, causes we care about and things we need to get done. In any given day we’re balancing all these factors across work, home, and everywhere in between – across all of your devices. In doing this we have moments of greatness – moments where everything lines up. And you need software and hardware that can adapt to your life, that’s perfectly tuned and ready when you are.

With features like Microsoft Launcher, the Your Phone App and Windows Timeline on Surface you can move seamlessly across all your devices and bridge the gap between your phones and your PC. We’re also evolving Office to ensure your ability to get things done is not limited by where you are, the time of day, or the device you’re using. Saving you time and allowing you to quickly collaborate with your co-workers with @mentions. While new intelligent inking, contextually aware PowerPoint Designer suggestions, new Ink Editor in Word features, and Ideas in Excel help you understand and visualize your data, allowing you to skip steps and save time.

These experiences are enabled by innovations across Office 365, Surface and Windows. Many can be accessed through the Windows 10 October 2018 Update — available today.

The Surface Journey
For six years, we’ve been on a journey with Surface. We’re so proud of the way people use our products and what they create with them on their own journeys. It’s inspiring to hear how they’re using Surface to change the world in all kinds of ways, realizing their inspiration, their goals, their dreams so they never have to miss an opportunity to achieve more. We can’t wait to see what you do with these new Surface products.

*Surface Studio 2 available to preorder Oct 2 in US, Canada, Australia, New Zealand.
Surface Pro 6 and Surface Laptop 2 available to preorder Oct 2 in US, Canada, Australia, Austria, China, Germany, Ireland, Japan, New Zealand, UK.

Updated October 3, 2018 11:36 am

Posted on Leave a comment

PHP 5.6.38 is available

Hello! The PHP development team announces the immediate availability of PHP 5.6.38. This is a security release. One security bug have been fixed in this release. All PHP 5.6 users are encouraged to upgrade to this version. For source downloads of PHP 5.6.38 please visit our downloads page: http://www.php.net/downloads.php Windows binaries can be found on http://windows.php.net/download/. The list of changes is recorded in the ChangeLog: http://www.php.net/ChangeLog-5.php#5.6.38 To verify the downloads, you can use the following information: php-5.6.38.tar.bz2 SHA256 hash: d65b231bbdd63be4439ef5ced965cfd63e62983429dbd4dfcfb49981593ebc03 PGP signature: -----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJbmE+wAAoJEMK/C8Qzz8izZ7kH/3bONDgTi4jq4KHmRTfh3gNI EoocCUR73dwoNP4GhBvTvpvnBDt71kGnd8t8LsEAT7DNagZOPbuBzc8mM3QM36Zo cAgPQEfB399EgQ9nq+2phwk8v9Svso9eMEq392PZqUju5IgBKzN5CtjEu08BeBy9 dLx61PbDH7tzxdBNytNnnQkWDkLye8LH97Lw96Cx+kep+dn213VlDiTAeiRWmfvk QZwoXe8j9J3YQ6hRaQ4dGOE27AAR6Lxs2+RWp09oxPqytt+wiqKTEaey4wd4v1Iw sdOLyQNjCJKyvPuCnMCtLXPk8UeAIecKjOtjNO5v46Rl1gaBqBAeVpYY04vJ2Vg= =Zjd/ -----END PGP SIGNATURE----- php-5.6.38.tar.gz SHA256 hash: 3b74d46cd79a45cce90c8059e09d8bd0beeb5de562cbb0cb42f96ff8fa665fd4 PGP signature: -----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJbmE+4AAoJEMK/C8Qzz8izxfkIALo108XYAlm1hp3y1mLYnmRO SBVc9AYJkn3xY4VKr+LTok+nL7tC+3KLLVwOGvWPZb5lkVYKaP3CQASMh0+a/Fae BIElEfkptNwerAkg28Lb9QnRhty0u3pSuU9lpRqnX1MT1/o/pVnGPdh5tvbgE2Hl M2NXI/fSE+7c5aPM80nq3uVo0V/rJtl1AqtddtweFE1cJKhnG2BHojMg3EHLLe0o dUl7TVSZTa8jB++0aIMPkUMB6AUG+fw1YigS+ya4vE/7W0BtUbuc3Lm8ihqFNNHP 5CrZYL09O222DLAEWX5ePoRQoL/hRhBWi+OqKEHp3ay1c7odC7HZUlmZdWC2tTc= =uT4P -----END PGP SIGNATURE----- php-5.6.38.tar.xz SHA256 hash: c2fac47dc6316bd230f0ea91d8a5498af122fb6a3eb43f796c9ea5f59b04aa1e PGP signature: -----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJbmE++AAoJEMK/C8Qzz8iz8MAH/0JuF4DIvvZ2kf89dWrdCdA7 wI3v5/6tldVJDhVTi0dJuOpnQsGeupGLdmdAyc5vHqaUInmgJgOlkNtplaHwEhkg ULREEcnsxkfLymEwPrbiwPQUTSXSLmRIg+1iZqVnPEFZkuolazqeisYDJelUO8l8 rqYSWiDm/wLe04vsFbjw3cDPpwY8Kb3AvV4Oeg8Iplb7b80jlHmXqNj0/xUohsia k/Bw8fqQgMq7ZYwRWpS530YP6t09Nx1bMNacVYU/HcjgoQzcZ/Q1p70nckLziFwK UXrX0iIlfTx5cjIMbKZBykjiib16uIH5YJNO+hzZbfZgVNmjmMzlEVIsUkC91X0= =g+1N -----END PGP SIGNATURE----- Julien Pauli & Ferenc Kovacs
Posted on Leave a comment

PHP 7.2.10 Released

Hi, The PHP development team announces the immediate availability of PHP 7.2.10. This is a security release which also contains several minor bug fixes. All PHP 7.2 users are encouraged to upgrade to this version. For source downloads of PHP 7.2.10 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. Release Announcement: http://php.net/releases/7_2_10.php Downloads: http://www.php.net/downloads Windows downloads: http://windows.php.net/download Changelog: http://www.php.net/ChangeLog-7.php#7.2.10 Many thanks to all the contributors and supporters! Sara Golemon, Remi Collet php-7.2.10.tar.gz SHA256 hash: d2d908b49b6005e65dcc46cdc986603a19b7ff103119fce8ddd4648586d430a4 PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbl2pUAAoJENyf+NPuWvJ/k4sP/2694Eh7xkV1PBLXsbYO9Ynk J4xcMWWE9jyNAweDL3q+Zn94czkgFqCaqYpJWI62KSHCUI9LU3Y5hRX85UBN57xV QByl7iawbh42TWQoKj60hChhypO6jS8r88R3WUeNkgPWiQ9qYyIei81uSsotr6Ij KgdoxnhvaPLChFBKlMljVIb7c5WekvPShiLEgYZxN4ecNhaQk84VjVgugLV24eyV bay+zBUsQtvEjBPkPVNYXiGVQNivDZvgQlWCPOs0BzhQKnD8K3ZsiJJf1muuCX2M fyFeZhtEpt+imYfyi37M6h83anfKnxqoRSPEXGH378VecwmysedaofFAu3xP8OOw 5ovtQVlI1B2t6zCkBA4OBDYNKB8182eFY+pDs9VUhGIFDxTwYoKuNs7Am+0Z05xJ VDz0LWmPRasews0oWU8/U59nBiYeVDMgTzF/Dmpnq5TRM3vIKeKdhpThMFmeKIsr QpF/kyU71dCS5LewihtSeUBnGd7wbZsxxbQ9q1T0XG66Mh3dv83mI1OABBqgNwu/ geXb+2w/uTUENdCN1J/Lkq59vON6uSaQuAN413FYMu3nWTDUKUdhWymBFr8OW3Ld 6ZFck3kP0c+a3shG67I39K/d6YDHWx0OaHsXZi1BFDZFiAOi7A6ygz4s6Lpq2XW8 cOQhOoBEGjpn/PkKAbCt =SbOT -----END PGP SIGNATURE----- php-7.2.10.tar.bz2 SHA256 hash: 01b6129a0921a1636b07da9bc598a876669e45a462cef4b5844fc26862dbda9d PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbl2pXAAoJENyf+NPuWvJ/Uq4P/1IFcI/Yl6lx4M5esGio1KIy ERwVsbiGiq7Eod2SW5APijU/mywcrlqCrsE83kgAbLTBN5e2OZ6BR4rkQksLGwAS DZCR/WHw9QNcI/7XMD7CvXEZYblwhvXN0dx2NOHmiBUtMBxsWLfKu62VW7i4DsmI owHq2JDdOdhhY2ksdtqi2oNLkBNmOEcTexQjtVTOhiKLf11bwgv/eujwwak2NLRD xOgM6Niggg22pRQr2eutXTskS6Zn2P9xBVl8bQkvY3frOtvxJtlSgPVsBnDrf3fI ntuH0WEynAKekzojquAVSJEEkpC1jwNtGSsVrk+yptFPGCtYMV8GmkuqLnkijp2m c1jdOGud++0k9zs31ZzT5qMYCso0RwuPiouLQG0DuZyCXNDdRIsByUWzfWlZ42F/ t6nVA4IHnzb/zRYAuyK/yBmBcqQfHSj/UZW0bzUujToFXQISWbglpo5BsAC+FwEl 8sN3aimwk4+HG6/35JNXzlSYDk/q1tWqZj9orAPSYXfW4MtHJJjmlj3Mr51yWgFy IcWZJcVot0nhLr6tcN/trb/dWzIMeD8jG2jDDaVHlksXC3zAwKmMAHl9PcveIRp8 YSLIAJn1mBMb2LNURLNHOqJbRu4SDER6z1HvDkOFos/PFNpZbX8SIcT3BQrKgi7E v1ucykiVXjeFxOykgcHM =0xOf -----END PGP SIGNATURE----- php-7.2.10.tar.xz SHA256 hash: 01c2154a3a8e3c0818acbdbc1a956832c828a0380ce6d1d14fea495ea21804f0 PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbl2pZAAoJENyf+NPuWvJ/b44P/RApIDovdZcv6PC9tnY7XgnB hkoruaKtC/JrNrE6pIUIkSvDsWVcpiXFw5FAsMl1BY0ADW7MGIIwGaZS8s2Wroi/ KbzpCqi4xd6Pp4gN2oCFbyWOSImwzYIloVqWFn5MTnDAVGUQJldow1tn4VOi6FYI i2OKnB3sWQSKWpVQqQYtbEgjo0LDq9cMCR60x27ewepxhcoeuwrpFZDjhZnFmaTE 1f44xpVbnjsbgxcJ+bh6UqAiP8yV88Ts2nV1XnDkeuxMfcO7/vJ1pcEIwImcxNaV FxsIMvwUEfPU05CGBrWInaX5ezj8nzChmeKJkQMmNexcXSPT3TIAeXnc1opK+weO SDjPkdI2OKzSjRWtrBVznwqmHjL3i4YtCzZZnLmreDR/MpenUx+nKFs6FWsPhO0C uwYQvOc91g8bH57/6dZmhgGD5IZCcpLDjsfyapaCcDYFauN4UtrL0AGw0uhTDh3x j2IYwmGOn7m8zbggTnGButVHkrOgBLROEjWEODLcggRRs8xiMES8RAyqNum1ZZfh OCNQAGA74Y9y1Mk6wXI0DMSknq6hFAfw4RJmcsgD7dLnsluH22d+OP9qs4SiaQJq 9JneHpg6GU0n89G/xecSU8FqRnWSVYshqd53Q5RiHvcXLPO7XV4KFQJPc7NhDYI2 ETHsAhLrIt6ck8mYww9I =s6TT -----END PGP SIGNATURE-----
Posted on Leave a comment

Library Manager Released in 15.8

Microsoft Library Manager (LibMan) is now available in the general release of Visual Studio 2017 as of v15.8. LibMan first previewed earlier this year, and now, after a much-anticipated wait, LibMan is available in the stable release of Visual Studio 2017 bundled as a default component in the ASP.NET and web development workload.

In the announcement about the preview, we showed off the LibMan manifest (libman.json), providers for filesystem and CDNJS, and the menu options for Restore, Clean and Enable Restore-on-Build. Included as part of the release in v15.8 we’ve also added:
– a new dialog for adding library files
– a new library provider (UnPkg)
– the LibMan CLI (cross-platform DotNet global tool)

What is LibMan?

LibMan is a tool that helps to find common client-side library files and add them to your web project. If you need to pull JavaScript or CSS files into your project from libraries like jQuery or bootstrap, you can use LibMan to search various global providers to find and download the files you need.

Library Manager in Visual Studio

To learn more about LibMan, refer to the official Microsoft Docs: Client-side library acquisition in ASP.NET Core with LibMan.

What’s new?

New dialog for adding library files

We’ve added tooling inside Visual Studio to add library files to a web project. Inside a web project, you can right-click any folder (or the project root) and select Add–>Client-Side Library…
This will launch the Add Client-Side Library dialog, which provides a convenient interface for browsing the libraries and files available in various providers, as well as setting the target location for files in your project.

LibMan Add Files Dialog

New Provider: UnPkg

Along with CDNJS and FileSystem, we’ve built an UnPkg provider. Based on the UnPkg.com website, which sits on top of the npm repo, the UnPkg provider opens access to many more libraries than just those referenced by the CDNJS catalogue.

LibMan CLI available on NuGet

Timed with the release of Visual Studio 2017 v15.8, the LibMan command line interface (CLI) has been developed as a global tool for the DotNet CLI and is now available on NuGet. Look for Microsoft.Web.LibraryManager.Cli

You can install the LibMan CLI with the following command:


> dotnet tool install -g Microsoft.Web.LibraryManager.Cli

The CLI is cross-platform, so you’ll be able to use it anywhere that .NET Core is supported (Windows, Mac, Linux). You can perform a variety of LibMan operations including install, update, and restore, plus local cache management.

LibMan CLI example

To learn more about the LibMan CLI, see the blog post: LibMan CLI Release or refer to the official Microsoft Docs: Use the LibMan command-line interface (CLI) with ASP.NET Core

Related Links

Happy coding!

Justin Clareburt, Senior Program Manager, Visual Studio

Justin Clareburt (justcla) Profile Pic Justin Clareburt is the Web Tools PM on the Visual Studio team. He has over 20 years of Software Engineering experience and brings to the team his expert knowledge of IDEs and a passion for creating the ultimate development experience.

Follow Justin on Twitter @justcla78

Posted on Leave a comment

ASP.NET Core 2.2.0-preview1: Endpoint Routing

What is it?

We’re making a big investment in routing starting in 2.2 to make it interoperate more seamlessly with middleware. For 2.2 this will start with us making a few changes to the routing model, and adding some minor features. In 3.0 the plan is to introduce a model where routing and middleware operate together naturally. This post will focus on the 2.2 improvements, we’ll discuss 3.0 a bit further in the future.

So, without further ado, here are some changes coming to routing in 2.2.

How to use it?

The new routing features will be on by default for 2.2 applications using MVC. UseMvc and related methods with the 2.2 compatibility version will enable the new ‘Endpoint Routing’ feature set. Existing conventional routes (using MapRoute) or attribute routes will be mapped into the new system.

public void ConfigureServices(IServiceProvider services)
{
 ...
 
 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

public void Configure(IApplicationBuilder app)
{
 ....
 
 app.UseMvc();
}

If you need to specifically revert the new routing features, this can be done by setting an option. We’ve tried to make the new endpoint routing system as backwards compatible as is feasible. Please log issues at https://github.com/aspnet/Routing if you encounter problems.

We don’t plan to provide an experience in 2.2 for using the new features without MVC – our focus for right now is to make sure we can successfully shift MVC applications to the new infrastructure.

Link Generator Service

We’re introducing a new singleton service that will support generating a URL. This new service can be used from middleware, and does not require an HttpContext. For right now the set of things you can link to is limited to MVC actions, but this will expand in 3.0.

public class MyMiddleware
{
 public MyMiddleware(RequestDelegate next, LinkGenerator linkGenerator) { ... }
 
 public async Task Invoke(HttpContext httpContext)
 {
 var url = _linkGenerator.GenerateLink(new { controller = "Store",
 action = "ListProducts" });
 
 httpContext.Response.ContentType = "text/plain";
 return httpContext.Response.WriteAsync($"Go to {url} to see some cool stuff.");
 }
}

This looks a lot like MVC’s link generation support (IUrlHelper) for now — but it’s usable anywhere in your application. We plan to expand the set of things that are possible during 2.2.

Performance Improvements

One of the biggest reasons for us to revisit routing in 2.2 is to improve the performance of routing and MVC’s action selection.

We still have more work to, but the results so far are promising:
image

This chart shows the trend of Requests per Second (RPS) of our MVC implementation of the TechEmpower plaintext benchmark. We’ve improved the RPS of this benchmark about 10% from 445kRPS to 515kRPS.

To test more involved scenarios, we’ve used the Swagger/OpenAPI files published by Azure and Github to build code-generated routing benchmarks. The Azure API benchmark has 5160 distinct HTTP endpoints, and the Github benchmark has 243. The new routing system is significantly faster at processing the route table of these real world APIs than anything we’ve had before. In particular MVC’s features that select actions such as matching on HTTP methods and [Consumes(...)] are significantly less costly.

Improvements to link generation behavior for attribute routing

We’re also using this opportunity to revisit some of the behaviors that users find confusing when using attribute routing. Razor Pages is based on MVC’s attribute routing infrastructure and so many new users have become familiar with these problems lately. Inside the team, we refer to this feature as ‘route value invalidation’.

Without getting into too many details, conventional routing always invalidates extra route values when linking to another action. Attribute routing didn’t have this behavior in the past. This can lead to mistakes when linking to another action that uses the same route parameter names. Now both forms of routing invalidate values when linking to another action.

A conceptual understanding

The new routing system is called ‘Endpoint Routing’ because it represents the route table as a set of Endpoints that can be selected by the the routing system. If you’ve ever thought about how attribute routing might work in MVC, the above description should not be surprising. The new part is that a bunch of concerns traditionally handled by MVC have been pushed down to a very low level of the routing system. Endpoint routing now processes HTTP methods, [Consumes(...)], versioning, and other policies that used to be part of MVC’s action selection process.

In contrast to this, the existing routing system models the application is a list of ‘Routes’ that need to be processed in order. What each route does is a black-box to the routing system – you have to run the route to see if it will match.

To make MVC’s conventional routing work, we flatten the list of actions multiplied by the number of routes into a list of endpoints. This flattening allows us to process all of MVC’s requirements very efficiently inside the routing system.


The list of endpoints gets compiled into a tree that’s easy for us to walk efficiently. This is similar to what attribute routing does today but using a different algorithm and much lower complexity. Since routing builds a graph based on the endpoints, this means that the complexity of the tree scales very directly with your usage of features. We’re confident that we can scale up this design nicely while retaining the pay-for-play characteristics.

New round-tripping route parameter syntax

We are introducing a new catch-all parameter syntax {**myparametername}. During link generation, the routing system will encode all the content in the value captured by this parameter except the forward slashes.
Note that the old parameter syntax {*myparametername} will continue to work as it did before. Examples:

  • For a route defined using the old parameter syntax : /search/{*page},
    a call to Url.Action(new { category = "admin/products" }) would generate a link /search/admin%2Fproducts (notice that the forward slash is encoded)
  • For a route defined using the new parameter syntax : /search/{**page},
    a call to Url.Action(new { category = "admin/products" }) would generate a link /search/admin/products

What is coming next?

Expect more refinement and polish on the LinkGenerator API in the next preview. We want to make sure that this new API will support a variety of scenarios for the foreseeable future.

How can you help?

There are a few areas where you can provide useful feedback during this preview. We’re interested in any thoughts you have of course, these are a few specific things we’d like opinions on. The best place to provide feedback is by opening issues at https://github.com/aspnet/Routing

What are you using IRouter for? The ‘Endpoint Routing’ system doesn’t support IRouter-based extensibility, including inheriting from Route. We want what you’re using IRouter for today so we can figure out how to accomplish those things in the future.

What are you using IActionConstraint for? ‘Endpoint Routing’ supports IActionConstraint-based extensibility from MVC, but we’re trying to find better ways to accomplish these tasks.

What are your ‘most wanted’ issues from Routing? We’ve revisited a bunch of old closed bugs and brought back a few for reconsideration. If you feel like there are missing details or bugs in routing that we should consider please let us know.

Caveats and notes

We’ve worked to make the new routing system backwards compatible where possible. If you run into issues we’d love for you to report them at https://github.com/aspnet/Routing.

DataTokens are not supported in 2.2.0-preview1. We plan to address this for the next preview.

By nature the new routing system does not support IRouter based extensibility.

Generating links inside MVC to conventionally routed actions that don’t yet exist will fail (resulting in the empty string). This is in contrast to the current MVC behavior where linking usually succeeds even if the action being linked hasn’t been defined yet.

We know that the performance of link generation will be bad in 2.2.0-preview1. We worked hard to get the API definitions in so that you could try it out, and ignored performance. Expect the performance of URL generation to improve significantly for the next preview.

Endpoint routing does not support WebApiCompatShim. You must use the 2.1 compatibility switch to continue using the compat shim.

Posted on Leave a comment

LibMan CLI Released

The Command Line Interface (CLI) is now available for Microsoft Library Manager (LibMan) and can be downloaded via NuGet. Look for Microsoft.Web.LibraryManager.Cli
The LibMan CLI is cross-platform, so you’ll be able to use it anywhere that .NET Core is supported (Windows, Mac, Linux).

Install the LibMan CLI

To install LibMan, type:

> dotnet tool install --global Microsoft.Web.LibraryManager.Cli

Once the LibMan CLI is installed, you can start using LibMan from the root of your web project (or any folder).

Using LibMan from the Command Line

When using LibMan CLI, begin commands with “libman” then follow with the action you wish to invoke.
For example, to install all files from the latest version of jquery, type:

> libman install jquery

Follow the prompts to select the provider and destination. Type the values you want, or press [Enter] to accept the defaults.

The install operation creates a libman.json file in the current directory if one does not already exist, then adds the new library configuration. It then downloads the files and places them in the destination folder. See the example below.

LibMan CLI example

To learn more about the LibMan CLI, refer to the LibMan CLI documentation on the Library Manager Wiki.

Happy coding!

Justin Clareburt, Senior Program Manager, Visual Studio

Justin Clareburt (justcla) Profile Pic Justin Clareburt is the Web Tools PM on the Visual Studio team. He has over 20 years of Software Engineering experience and brings to the team his expert knowledge of IDEs and a passion for creating the ultimate development experience.

Follow Justin on Twitter @justcla78

Posted on Leave a comment

Improvements in Visual Studio 2017 15.8 for web developers

This week we released Visual Studio 2017 version 15.8. Our 15.8 update brings the following improvements for web developers:

  • Custom docker image tags during Publish
  • Zip push deployment for Azure Functions
  • Managing user secrets in ASP.NET Framework projects (targeting .NET 4.7.1 or higher)
  • Enabling Application Insights as part of publishing to Azure App Service
  • Optimizing build performance for solutions containing ASP.NET Framework projects
  • Author and source information for ASP.NET Core templates

Custom docker image tags during Publish

You can now customize the “Image tag” for Docker containers when publishing them to a container registry. The value can either be automatically generated by Visual Studio every time you publish (the previous behavior), or it be manually changed if you need a consistent tag (e.g. “latest”):

Screenshot of new property called "Image Tag" in Publish

Zip push deployment & run from zip for Azure Functions

Visual Studio now provides the option to deploy and run Azure Functions projects as zip files:

Screenshot of publish and run from zip option in Publish

Run-From-Zip is a runtime feature that allows ‘mounting’ a zip file and running directly from it. Your App runs directly over the ‘mounted’ zip file, which completely takes over your wwwrootfolder (which becomes read-only).  Using run from Zip offers the following benefits:

  • Atomicity: when your application is deployed as as single unit, and updated as a single unit meaning publishing an update will never leave your app in a partially updated state
  • Faster deployment of large applications
  • Improved cold start performance

Managing user secrets in ASP.NET Framework projects (targeting .NET 4.7.1 or higher)

A feature that ASP.NET Framework projects were missing compared to ASP.NET Core was support for storing application secrets (e.g. connection strings, API keys, etc.) in a file outside of source control unique to each user. Now, with .NET Framework 4.7.1 and Visual Studio 15.8 it’s as simple as right clicking on the project in Solution Explorer and selecting “Manage User Secrets”:

Screenshot of the new "Manage user secrets" menu item when right clicking in Solution Explorer

Visual Studio will take care of the rest including downloading the necessary NuGet packages, updating the web.config file, creating the secrets file on disk and finally opening it for you to edit:

Screenshot of an example user secrets file

Note: Only available for projects targeting .NET Framework 4.7.1 or higher, if you can’t see the menu item make sure you have the 4.7.1 targeting pack installed and that the project is actually targeting 4.7.1, you can change it from project properties:

Screenshot of the run time drop-down available in project properties

Enabling Application Insights as part of publishing to Azure App Service

When publishing to Azure App Service, Visual Studio asks you to either create a new App Service or re-use an existing one. If you choose to create a new App Service to host your application, Visual Studio now offers you the ability to also provision and configure Application Insights:

Screenshot of new drop-down related to Application Insights when creating a new App Service

All you need to do is pick the region you would like Application Insights to be provisioned in and Visual Studio will make sure it’s configured to pick up telemetry events and metrics from the new App Service. If you wish to add custom events and metrics follow this guide. Of course, you can always set the field to “None” and Visual Studio will not provision nor configure Application Insights on your behalf.

Optimizing build performance for solutions containing ASP.NET Framework projects

We added a new menu item under Build | ASP.NET Compilation | Optimize Build Performance for Solution:

Screenshot of new menu item Build | ASP.NET Compilation | Optimize Build Performance for Solution

This new menu item is applicable to solutions containing ASP.NET Framework projects only and is not applicable to ASP.NET Core projects. Its purpose is to update specific ASP.NET related NuGet packages referenced by the codebase.

When an ASP.NET Framework codebase is using out-of-date packages, the inner loop performance of Visual Studio is impacted. The motivation behind updating these packages is to restore optimal inner loop performance for a given solution.  You will only have to do this once per solution and you will not have to deal with this problem in the future since the new package is designed in a way that even when it gets out of date it doesn’t affect the inner loop performance in Visual Studio.

Author and source information for ASP.NET Core templates

The dialog for new ASP.NET Core projects now shows you the author and source for the selected template:

Screenshot of author and source information available in the New Project Dialog

  • If the template is coming from a .NET Core SDK installed on the machine, the dialog will now display the version of the SDK as the source
  • If the template is coming from a VSIX (i.e. Visual Studio extension) installed on the machine, the dialog will now display the name of the VSIX as the source

Conclusion

If you’re interested in the many other great things that Visual Studio 2017 15.8 brings, check out our Visual Studio 15.8 post on the Visual Studio blog.

We hope that you’ll give 15.8 a try and let us know how it works for you. If you run into any issues please report them using Visual Studio, or let us know what you think below, or via Twitter.

Posted on Leave a comment

PHP 7.0.31 is available

Hi, The PHP development team announces the immediate availability of PHP 7.0.31.. This is a security release. Several security bugs has been fixed in this release. All PHP 7.0 users are encouraged to upgrade to this version. For source downloads of PHP 7.0.31 please visit our downloads page: http://www.php.net/downloads.php Windows binaries can be found on http://windows.php.net/download/ The list of changes is recorded in the ChangeLog: http://www.php.net/ChangeLog-7.php#7.0.31 Regards, Anatol Belski and Ferenc Kovacs P.S. Below is the verification information for the downloads php-7.0.31.tar.bz2 SHA256 hash: 7e8bd73eced6e679a179d39571e8fee6c83e51c86f43338f65c2dc88c1106b91 PGP signature: -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEGk6LcnfELlPbqce5vKow6pwNV2MFAltN0GAACgkQvKow6pwN V2OrOgf9G8vHzgiBO4mRQczBKqcCl4hpBD1YJ5AHCNOf0+sPHTxRXN5Mqss9T3pe PIJfBW3xxsEkAI/RzwXhRc9m6sEuqoPYT6Mp3i0oFuUK+YCNUXEgayi7ry408GMB 5if/iq3tH7S0pbgjKV4y48CiXJb8/V8zfV7asgRoSoSCb2CnSjrZGlwGLMSIh3NL Xt+Sg0G8xLgzxPboTJpCDA2EGUsFBjuv8IGFGD9vAfMKzNR/ZqTRl85Q2NuIMFEV yHHyxcAkjbC6/69lYntY0ZMgc4BhC6Mr1vXBuvyRn/M5U9eQaNfsjpHPi9rcm6M2 PT3K6Qf4LsDvTXJU81w9DuM4IJXuoA== =1BRy -----END PGP SIGNATURE----- php-7.0.31.tar.gz SHA256 hash: 182f36e5709837158bd4970ce57fe80735bdf79025133c00d6ad882d1c4d98dd PGP signature: -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEGk6LcnfELlPbqce5vKow6pwNV2MFAltN0GUACgkQvKow6pwN V2PjFwgAo2LxWP6T3A77eP6DE6itgUjOOj69WZrbybVu8ENwzhxb1kNvpk5PGee9 vHUdGrivmOGDJO8EeZGvexK1LliwfJ7a1HnEAoL1ob7KKftorrPuO9tCOHIy45/W QsZnNePwbBBrsJLsfNYno3BotQKGgy+96i9HPaX2RlswFOgbdy86hLNv+XTcCKyL mrswo1s3lR/hj6bk1AoTtKgW+m76yG4s8PeNtAGF1Z92Sysnaa4aGCHtStxOTaMp VuMPm47NbdDOCk7cFm2z/CkzB8Pq0ShxtbiDwy39BC9MRmmjDM/YqOxzX8mVEpXZ ok5PCT1i616JRDxwRg1Z1lKnpluXeg== =sfGN -----END PGP SIGNATURE----- php-7.0.31.tar.xz SHA256 hash: 68f57b3f4587071fb54a620cb83a1cfb3f0bd4ee071e0ce3bf7046a5f2d2f3cf PGP signature: -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEGk6LcnfELlPbqce5vKow6pwNV2MFAltN0GUACgkQvKow6pwN V2PuqQf/fBX+ZKmKQeFz/EgsfzbSTqWOjJg00SzCBWdzy9HzfGi1hktV7O7iT9Ku 827SCyQ/yJSHQUS9SwpeDMnmGLsFs9JSSH0uBLTDrLRgoNJCZoA/j2R0JNoKaHFm 0+U1w45vjHlDkFV6BRua8oNdt72uUEQVXgu0wyMBAg3GVroyzden2uN5Qh6e/xsG YWqDxbjYbY+zBs1DIrr2h1y7EaHggKS07WCEtKBjH5hRb7VzMUdqIzKowOyuwzSd puSTRxbcizTYnwasWpC00P4AnUyjARFgn3t0GOHw4iz14I0qadD2PFzVD0rnw36U Zw5/PpL8cQja5d3FmpenYx7J7+utSQ== =f6w7 -----END PGP SIGNATURE----- 
Posted on Leave a comment

PHP 7.2.8 Released

Hi, The PHP development team announces the immediate availability of PHP 7.2.8. This is a security release which also contains several minor bug fixes. All PHP 7.2 users are encouraged to upgrade to this version. For source downloads of PHP 7.2.8 please visit our downloads page. Windows binaries can be found on the PHP for Windows site. The list of changes is recorded in the ChangeLog. Release Announcement: http://php.net/releases/7_2_8.php Downloads: http://www.php.net/downloads Windows downloads: http://windows.php.net/download Changelog: http://www.php.net/ChangeLog-7.php#7.2.8 Many thanks to all the contributors and supporters! Sara Golemon, Remi Collet php-7.2.8.tar.gz SHA256 hash: a0cb9bf2f78498fc090eb553df03cdacc198785dec0818efa7a1804c2b7a8722 PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbTYcUAAoJENyf+NPuWvJ/mnkQAJyGPUoytbfHWt6ABS0MefF8 lJdcM29EkvDeFYTXj4sAU5Ikyu/+Jd+4mcnvSkUQA+XLOvfwUyt6/9IyyM+yj+e2 E9oZmBy28FnVTodvKUXz8y7OPYWA8jrG0db+SJv8EVD1pn0VywqxKOKZL4wuUGJm ySRQuu9hfKFTVSBdgPAkmpNAztDer6cA9dhE6MuEkH3k8MhCDUUPMzVO4HUfwQnX PP04E3wvGWHDWt45T9zdaqxpL4mVvuMhKDPctJrn9uaOBqYz8Zwp/WKgi23P5sbQ ps+YmH0WTIx02E8MpTgt9HQYx2aicfjrNxMR50yxleA6ihyO+32kmttDlakaJl1f hqa/RB+nYenF+RvgQasakLCwQxNSl/QUVcH43p+yX22iyKvvc6g25umsmnEYfEqF u42hlfNpaN1MMYmTjA66iC7/eIobsqxMt0U1FPQuK+22qIbAt4Dk7izh4MB3u2VY k2TZn32BcBFzAjLk7/b3xG/OsQ9/q6wNz3id44IKpUUOTq6stbQRQiXco8kNpZ5Z 5krOcmbyImiZvOH8YCRj1KX+x5M3uT3B5kmhKZY3t+4Ys64+imopabI+YqDnR8ZC 2wNvjAW1dGS2sc4MxSYUEFW1Nv75GhljfOn+lvr0TjcV3hrzRNENUd6cxXkrVwTS 5eqvgT6by81KV8F6Nvsu =WxLL -----END PGP SIGNATURE----- php-7.2.8.tar.bz2 SHA256 hash: 1f8068f520a60fff3db19be1b849f0c02a33a0fd8b34b7ae05556ef682187ee6 PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbTYcYAAoJENyf+NPuWvJ/tMIP/33P7530lbNNibXKee2uneDr O5ZHvQRJlBZpF0yG5zEz8UR1hArw6Yo+no8sksuOVP48gHFFwdk30dT8fzBlNsMh 2an742UEVGijWSHRQlSObMp2PzqcsI1/1fLoBC+fMOp9/c0B+cse5agj0v1cNNJ5 6uV+G6tESyx7t3OXXj48LRDbigta+SvrZibuloL3qFXYL4cpiDJsm9PZWF7l8aVh E0ncu4oaYrGPxw9jYNJgebq83BHeGGhYq0wJ9kH7LNbUWfP8HTII3c/Rmwr017I5 rA8LzXRZDn8LpZPayJrzbAOeCb9RkGl+ACDHUFxA1IDHrhHvQb57ppnagsmUAfAb GVtN7LD4ZnEzuCHlBbXZDaWNuxVOVlxXEbl01kpYgvXrKVdsHfpdWDk4N5X7T7+D bGDm+upxMZw07MJUjCLxhQBPovgqHTczl/iKuN358/YFbZTDOA8plydv5gQoVQ0a kva75VcJGyrxM1uQAKKFvVnTuQvaMY0Z3ra7cLE9oN26Z6lAsfeGBKOQAqytebE+ +9jREhRCvpew8EcKahgUl/w9DAqWHzFMJWnLTlbL68/arkUnYZVAUwHUXwsKl+oy 6Mx4pCGqs4XM/2y72/AdDcX9KXAAyCzpmt7FLj9TUMnZaQdoav4Iev0Qv64XO2aa F2VMusDce2SGtQ4HYULr =vXS7 -----END PGP SIGNATURE----- php-7.2.8.tar.xz SHA256 hash: 53ba0708be8a7db44256e3ae9fcecc91b811e5b5119e6080c951ffe7910ffb0f PGP signature: -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbTYcaAAoJENyf+NPuWvJ/Q2wP/Raylawjhnw+E8iuwCyPbNni PmudNHfrWz9JKpMPnt/Q3ULDT2UR40Lpr78lL0KKC6je0CRCp/ajiB64L6DVzOQu dhetrSr0BqM3mwCEme2qfCx+Qme8czXUdVaze6s5LoOrdLkdJrUB+CLWbCzIijl4 6bdLVcwQ49Dc0kGR8VUnEKwYQWmjb4NIMe+O+DQxynThvNqEhgLTfVuLKgfl/q/V 581+oDtWZfPJmwQa8t8eT9J4/bq638hKpUzFXAAFF5edT3HAdySkPAEA8lqTrcik R3jB5fwMo2aqP4KPERyuY4g6Lpso4sx088AY1PiEO7BEYfJ8Zec3rpht4xMbfLfq GQ47BoMRH3eOxrKWPDdQ47GnDWxTeJroJ5WEbkVu8q7EdNwOaW8AyfyT5drMAkI7 3wiG2ptdFoaPFF0J3S//fXCvS5zooDhyQhqYD0WaYYPXbAuY6rePsdo/JtTZv2KV 1DW8PWW6W0eyKZItsPzwoclJ0maPEYjSvEVs+mSjpmPTxF7d9e+Im1kBNOA1xzXS H4TxHHgzB00Ljxc8DTngQypLYWG9Gf+wO5UAare7ChhB6dSef+2aA9dRxRQVn2js CvGnRkF7bvIqkUWIWomzCbMFweQafYq0kzqZMkClcpKK0ptvIEFj5r3C8xNC90cJ 37wKYiV63RHaPnnxd72/ =qac7 -----END PGP SIGNATURE-----
Posted on Leave a comment

Razor Improvements – Feedback Wanted

In recent releases of Visual Studio 2017, there has been a great focus on improving the experience of working with Razor files (*.cshtml). The improvements were aimed at addressing the most pressing customer-facing issues and included changes from formatting and IntelliSense to general performance and reliability. Now that the fixes and enhancements have been publicly available for a few months, we hope you’ve been having a much-improved experience with the Razor editor.

Please let us know how we’re doing by taking a short, two-minute survey. Also, feel free to leave relevant feedback in the comments section below.

If you haven’t already downloaded the latest version, update your copy of Visual Studio 2017 through the Visual Studio Installer, or follow the links to download the installer from the Visual Studio website.

Razor editor in Visual Studio IDE

We know that despite our improvements, Razor editing isn’t perfect yet, so if you run into issues please file a report using the Visual Studio feedback tool. We review this feedback frequently and will continue to fix issues that are identified.

To launch the feedback tool, choose “Report a Problem…” under the Help->Send Feedback menu. When filing a report, please provide as much of your Razor file as you can share, with a description of what happened versus what you expected. (Sample code and screenshots are very helpful!)

Report a Problem menu item

Thanks for your interest in Web Development in Visual Studio.
Happy coding!

Justin Clareburt, Senior Program Manager, Visual Studio

Justin Clareburt (justcla) Profile Pic Justin Clareburt is the Web Tools PM on the Visual Studio team. He has over 20 years of Software Engineering experience and brings to the team his expert knowledge of IDEs and a passion for creating the ultimate development experience.

Follow Justin on Twitter @justcla78