TechEd North America 2014, Houston
Windows Desktop Development – A Panel Discussion – Dmitry Lyalin, Tim Heuer, Habib Heydarian, Chipalo Street, Eric Battalio, Jay Schmelzer
Day 3, 14 May 2014, 1:30PM-2:45PM (DEV-B327)
Disclaimer: This post contains my own thoughts and notes based on attending TechEd North America 2014 presentations. Some content maps directly to what was originally presented. Other content is paraphrased or represents my own thoughts and opinions and should not be construed as reflecting the opinion of either Microsoft, the presenters or the speakers.
Executive Summary—Sean’s takeaways
- Universal App platform really pervades everything that dev teams are doing
- .NET Native – for faster Windows Store apps
- Worth looking at PRISM—good way to build apps
- If using C++, make sure you’re using modern C++, i.e. C++11
Dmitry Lyalin, Product Manager, Visual Studio, Microsoft
Panel members are all Engineering team members from the Visual Studio team.
Agenda
- What’s new for WPF devs
- Panel discussion
On the panel:
- Tim Heuer – Program Manager, XAML UI
- Habib Heydarian – Principal Group Manager, .NET Team
- Chipalo Street – Program Manager, XAML
- Eric Battalio – Senior Program Manager, C++
- Jay Schmelzer – Partner Director, .NET Team
VS 2013 XAML improvements
- Intellisense for data binding & resources
- Go to definition (F12)
- Nesting comments in markup
- Renaming start tag renames end tag
- New XAML code snippets
PRISM v5 (WPF & .NET 4.5)
- PCL version of Prism library
- Separate features into separate assemblies
- Address high priority items
Debugging and Diagnostics
-
Memory analysis
- New managed memory analyzer
-
Debugging improvements (4.5.1)
- 64-bit edit and continue
- Improved async debugging
Q: Deploy 4.5 app in 4.0 environment?
- 4.5 is in-place update, so you can upgrade
- ASP.NET vNext – new model
- To get new functionality, you do need to install .NET 4.5
.NET Native vs. Traditional
- Framework displayed as one single unit
- .NET Native not yet available for desktop apps
Q: Problem when View tries to load other DLLs and they get called when I go into design surface
- See Hari, try to repro this
On the radar – new deployment models for desktop apps
- Maybe sort of Windows Store model for company apps within the enterprise
Q: Do you recommend always working in x86 mode in designer?
- Yes
Q: If you put custom controls in shared UI library, seems like they never show up in the designer.
- Take this offline
Q: Can you auto format when you change tag?
- It’s either everything on one line, or one line per property
Q: XAML verbosity – anything planned to make XAML more concise? E.g. Data bindings, Setters, Converters, etc. Improvements to XAML syntax coming?
- Point to tools, Intellisense / Auto Completion, code snippets
- Language evolving – has evolved just a bit, simplifying
- Tough to change XAML itself, because it’s a public language spec
- Thought about inline scripting, but thinking about ways to do less markup and have XAML compiler generate stuff
- “More of a compiled approach” in tools
Q: 4.53 coming? 5.0? Compatibility?
- For 4.5.1, did around 300 compatibility fixes
- 4.5.2, 120+ compatibility fixes
- So 4.5.2 more compatible than 4.5 was
- Cadence is going to continue to be quick—new framework every few months
- Can no longer just release stuff every 3 years
Q: WPF dev doing LOB apps that will never be touch-based. Screens too busy. Any chance of writing desktop apps, but using Windows RT
- When Win 8 came out, it was really focused on mobile. But now more focused on desktop
- Now, with Universal Apps, spacing that is nice for both desktop usage but also okay for touch
- E.g. For Outlook, Microsoft will try to have one single GUI that works on both Win RT and desktop
Q: WPF pain point – implicit styles for windows in user controls. Couldn’t define implicit style that applies to all user controls.
- No plans, but follow-up with us
Q: For cross-platform, we still have to do View on specific platforms. But is there any way to use XAML solution for other platforms?
- Third party doing this
- We’re not thinking about this right now
- If you need a cross-platform UI language, HTML is the way to go
- Shared projects in Visual Studio
- UI abstraction layers are tough. Not sure that it’s something that would work for users
- Goal is to provide best native for Windows and also best web for cross-platform UI
Q: In 2012, we used Blend. Now, in VS 2013, about 90% of the stuff that was in Blend is now in Visual Studio. What’s the future of Blend and Visual Studio?
- Purely design-oriented things like states will stay in Blend
Q: Can I do Roslyn plug-ins?
- Yes, can do little plug-ins. E.g. Diagnostics, distribute in your team, flag violations of coding standards
- Yes, you can do that on top of Microsoft’s copy of Roslyn
Q: What are the C++ guys working on?
- See the VC blog
- We hear a lot about performance and MFC
- Talk at BUILD about C++ performance
- MFC – no definite plans
- MSDN guys are focused on scenarios, rather than on purely API documentation
Q: Future planning for Windows, e.g. Minority Report or 3D UI experience
- Contact lenses? Tongue-in-cheek comment—makes Oculus Rift look like child’s play
- Kinect for Windows, continued work
- Nothing for augmented reality at the moment
Q: What does .NET Native mean for C++?
- “Productivity of C# and performance of C++”
- Recommend: continue developing in whatever paradigm you’re comfortable with
- .NET Native still has garbage collector, so C++ might be preferable to some who want to do their only memory management
- .NET Native v1 targeted just at Windows Store apps
- In modern C++, you’re not typically doing new/delete explicitly
- Should be using C++11
- “It’s not like it used to be”
Q: Why is .NET Native limited to Windows Store apps and not desktop?
- Win Phone, “compiler in the cloud”, you upload IL and it compiles down
- Started with phone, no technological hurdles to do it on the desktop
Q: What is the next thing for which support will drop off (like XP)?
- The .NET Framework versions support is matched to the corresponding OS version
-
Lifecycle Policy for out of band releases
- E.g. Framework 4.0, we do something like 2-4 yrs
- So when next version of Windows is deprecated, associated .NET Framework for that OS will also be deprecated/expired
Q: Moving from 2.0 to 4.0, customers still on XP. Can we go directly to 4.5 and run on XP?
- As of 4.5, we no longer support XP
Q: Universal Apps – WPF ?
- “Head” projects in solution – Windows Store, Phone 8, WPF
- Don’t expect everything to work with shared projects
- But can do partial classes
Q: Apps don’t scale well on different resolution devices (pre-WPF). Some controls scale, some don’t. Will you revise scalability for older apps? Win Forms. Or Wizard to convert from Win Forms to WPF
- There are people thinking about multi-resolutions. Starting with immersive (phones), then WPF now.
- Not sure how much they’ve thought about Win32 / Win Forms stuff, though
- Some new lower-level APIs in Windows 8 to help app get more info about DPI stuff. Could call directly from your app
- .NET 4.5.2, some fixes in Win Forms stack to make control a tiny bit more DPI aware
- Jay: No silver bullet. There’s stuff that just won’t automatically scale
- Maybe something in the future, but will have to go back and touch your apps to fix things
Q: OpenGL support on Win Phone 8.1?
- Unknown
Q: When is next update to DirectX that will get pulled into WPF?
- Newer features on older platforms..
- DirectX – struggle with value of just updating to DX11. What does it give you?
- Maybe just D3Dimage improvement?
- Not sure what ROI is, just going to DX11
Q: Recommendation for native application that does graphics?
- Eric: No answer.
- Universal App, includes support for Native C++ / XAML
-
Office internally, tablet apps are using Native XAML
- So we’ll have to give them something for native desktop apps