Windows 10… N – don’t use it for app development.

At least, if the app in question uses speech. Background is that I routinely use Azure VMs for development… so let’s extend that to writing apps. The ready-made VMs that also include Visual Studio are the “N” variants. So I used them, as usual. However, I wasted a number of hours failing to get to the bottom of this error when executing a pretty standard block of text-to-speech code (at the time I was not questioning whether “N” was OK to use):


Class not registered

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
 at System.Runtime.CompilerServices.TaskAwaiter.
ThrowForNonSuccess(Task task)
 at System.Runtime.CompilerServices.TaskAwaiter.
HandleNonSuccessAndDebuggerNotification(Task task)
 at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
 at HW.MainPage.d__1.MoveNext()} System.Runtime.InteropServices.COMException

I spent a lot of time after that trying to debug, googling up the wrong tree, reinstalling various releases of Visual Studio, all with the same, bad, result. In fact I should have just gone to bed, because as ever a tiny light bulb came on when I thought about… N.

So this morning I googled issues around Visual Studio and Windows N 10, and almost immediately found this:


So I tried the media feature pack, got a message that “does not apply to this installation” or somesuch. Yes I could have persevered, but decided to trash the N instance, and create a non-N instance, and manually install Visual Studio, and this sample. And then it was all fine.


And I thought there might be some issue with trying to do speech on a VM, but that was all fine, and came loud and clear through my speakers on my host PC. QED.



TFS and VSTS API: NuGet for dependencies

Much of the pain around including references to TFS assemblies and other dependencies can be removed by using NuGet to set up the assemblies. The only gotcha I found was that if you are importing a VS project whose target framework is say 4.0, then the NuGet execution fails.
In those cases, target say 4.6 and things will be fine.
Using the NuGet rather than adding references by hand does create an enormous amount of bloat, as the NuGet package picks up anything that MIGHT be needed as a dependency, and sticks it under References.

So working through the example screenshots below, the flow shows (credit here btw for the source Solution):

  • The build fails because the References cannot be found
  • We do an initial NuGet execution, which also fails
  • We then move from the 4.0 target to 4.6
  • Redo the NuGet import
  • Rebuild – compile succeeds

Install-Package Microsoft.TeamFoundationServer.ExtendedClient



Visual Studio (“full fat”): Formatting, Options and Settings

I always struggle to remember where I find this stuff, so… (Gist)



Just dumping notes tonight, as just need to get things recorded and move on.

Install-Package Microsoft.TeamFoundationServer.ExtendedClient -Version 15.112.1


As a starting point for walking through TFS objects, I took this code , changed it a bit, giving this:

The references required are these:

The location of those DLLs is here (for me – I am btw using the VS2017 Enterprise preview (October 2017):

C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer

Running that gives something like this:



PowerShell – convert delimited record to object

Spent sometime struggling with this, so worth recording. Test. Code.