If you have been keeping up with my blog, you probably remember the post about my first experiences with Windows 8 and developing for Windows Metro. In case you didn’t have the opportunity to read it, I’ll give a quick summary. At that time, I was using the Windows 8 Developer Preview along with the Visual Studio 2011 Developer Preview. I was excited to see that our existing .NET 4.0 libraries could be used in a new Metro C# project. It took a bit of research to figure out the how to interop between the .NET and Metro Stream objects, but once I had that nailed down, everything went pretty smoothly.
Since then, I have read a lot of material about Windows 8 and the new WinRT runtime. Based on what I was reading, it didn’t make sense that our .NET 4 libraries integrated so easily with Metro applications. The excitement expressed in my previous post was short lived; because as it turns out, components targeting the .NET 4 Framework are NOT supported in Metro. While it worked in the Developer Preview, the newer Windows 8 Consumer Preview and VS 2011 only allow the use of libraries targeting the .NETCore. If you use .NET 4 libraries now, you will receive the following error:
A reference to ‘Leadtools.dll’ could not be added. The project targets ‘.NETCore’ while the file reference targets ‘.NETFramework’. This is not a supported scenario
Where Do Developers Go From Here?
One thing Microsoft has stressed from the beginning in regards to Windows 8 is that it will run on both x86/64 PCs as well as ARM mobile devices. The goal is to provide the same fast, fluid and user friendly experience on all target platforms. The WinRT accomplishes this by providing a middle layer API that programmers can develop against, allowing the applications to “just work” on each platform. Therefore, as long as you target the WinRT and .NETCore, you can rest assured that your application will work on a variety of platforms and devices with no additional work necessary.
Microsoft isn’t abandoning anyone either since Windows 8 will continue to support traditional desktop applications that target Win32 API, .NET, Silverlight, WPF and the like. This is good news for those who simply want to make minor changes to their application to support the new OS. Of course, the drawback for those applications is that they won’t run in the new Metro style or Metro platforms like ARM.
What Does This Mean to LEAD and Our Customers?