I'm going to chalk the primary issues up to publisher gambling. The technology industry moves quickly (as we all know). Technical books that are based on a new/updated technology have a very short shelf life -- especially when we have new versions of tools coming out every 9 months. This means that technical books are written with pre-release versions, and sometimes things change in the final release.
Building Windows 8 Apps with C# and XAML was released in October 2012, which means that it was written with pre-release versions of Windows 8 as well as Visual Studio 2012. Since I haven't worked with the pre-release tools, I'm not sure how much has changed, but knowing that Jeremy Likness is a good speaker, author, and consultant, I have to give him the benefit of the doubt.
This was a gamble that the publisher lost.
What Turned Me Off
That last thing I want to do is to rip a book apart. There is a lot of work that goes into working with the technology, writing it down in a way that makes sense, going through the editing process, and releasing it into the wild. So, I'll just give one thing I had difficulty with.
The first difficulty was with the example in Chapter 2. This was a "follow along at home" sample. The scenario was to create a Windows 8 Store Application that did 3 things:
- Use the webcam to take photos
- Save photos to the Pictures Library (or SkyDrive, or wherever else)
- Act as a Share Target for pictures
I followed along step by step. The application would build and deploy successfully. I could take photos with the webcam. But I couldn't save, and the app wasn't showing up as a Share Target. I did what you're supposed to do in this situation: I double-checked the steps to see if I missed anything. I took a second look at the configuration screens to see if there was anything different or obviously wrong.
I finally figured out what was wrong with the Share Target: In the application manifest on the "Declarations" page, I needed to indicate the "Supported file types" (which is empty by default). I immediately went back to book to see if I had missed something. The section that talked about adding the Share Target on the Declarations page did not mention needing to change supported file types. There was a screenshot of the Declarations page, but unfortunately, this value was not shown (it was hidden under the Output window).
I checked the "Supports any file type" box, and the Share Target functionality started to work.
For the Save functionality, things were a bit trickier. I was getting a buffer overflow exception at a runtime. Again, I checked the code against the code in the book and everything matched. I knew that this was not something I would be able to debug myself (since I'm not familiar with the WinRT libraries), so I went to the code download.
On the download site, there was a note that the ImageHelper application (the one I was working with) had a buffer overflow problem that had been updated. So, I downloaded the code and things worked from there.
First Impressions are Important
I'll have to admit that this experience put me off for the rest of the book. As I read through the other examples, I had doubts about whether they were accurate. (I know logically that they were okay; only 1 other project was mentioned on the code download site as needing updates -- but this doesn't change the "gut feeling" based on experience.)
I have a few other concerns with the book regarding how deeply (or not) specific topics were covered, but I'd rather not focus on any more negatives.
Unfortunately, I'm not able to recommend Building Windows 8 Apps with C# and XAML. I'm still looking for a good reference on the topic. If you have any book recommendations, feel free to leave them in the comments. Now, I'm off to the next book in the stack.