A Month with Microsoft and others
For anyone interested there is now a follow on to this post
I’ve been using computers for a very long time. In the early days progress was relatively slow. Software distribution was on floppy discs or CD. This meant that a problem in the software was potentially very expensive for a company to fix. The quality of software was relatively good however it also meant that it was relatively unsophisticated, partly because the command line was, and still can be, intimidating to many. Then along came a variety of Gui’s and things started to change to the point that many people could make basic use of a PC
For much of that time I have made a reasonable living based on the Microsoft EcoSystem. In the early days Microsoft’s forte was looking at other people’s software and enhancing it to make it more usable for general users. This wasn’t always popular, WordPerfect anyone? Excel was totally impenetrable if you didn’t know you had to press = to enter a function (and nowhere was this mentioned, it was always assumed that you knew)
Now we seem to have moved around to unusability, I don’t just mean the dire (in my opinion) ribbon that Microsoft inflicted onto an uncaring world — it’s interesting that no other company has taken this up and that Microsoft have never dared to inflict it on Developers. I mean that the whole infrastructure is flawed and that users expectations are stretched to their limits by marketing hype and unrealistic expectations. When it comes down to it, most people want to perform certain actions undisturbed and as quickly as possible.
This isn’t meant as a critique of Microsoft, though they, and many others, share a responsibility here. This is meant to give an overview of how much less productive we are than the marketing would lead us believe. If I appear to be picking on Microsoft it’s because, I use Microsoft Hardware (SurfaceBook Pro), a Microsoft OS (Windows 10 1809) and Microsoft Software (VS 2019 and more). This is meant to be a diary of how a relatively ordinary user experiences the computer world for the month of July 2019
Spent a large part of the day trying to identify build issues with one of my applications. This wasn’t happening yesterday and to my knowledge there have been no changes. This appears to be the result of the way that nuget interprets dependencies. Eventually found a workaround though it means I have now lost some code, yes it’s still in my VCS but it will take a while to restore it to where it needs to be. I’ve also migrated the code to Paket. Time lost — much of the day
Turned my laptop on, it refused to connect to the internet. Alexa is streaming radio fine so I restarted the machine, that was a mistake as a restart is much slower than switching off and on again. While waiting I fired up the mac which could access the internet fine — I’m using it now
Time lost — almost an hour to reboot and reopen the apps I need
I’m trying to create a library using .Net Standard that calls a variety of legacy soap services. I can now create the service reference and thankfully have the recently added option to create methods that are synchronous — for my uses these are sufficient.
The problem comes when I try to call the web services. When I write tests for a net standard library I use net461 and netcoreapp2.1 targets. Ncrunch handles this nicely and separates the tests so if they are failing for one framework only then I can see which. This means I can clearly see that the core tests pass and the same tests running under net framework fail with errors such as
System.ServiceModel.CommunicationException : There was an error in serializing body of message MyRequest: 'Unable to generate a temporary class (result=1).
error CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=188.8.131.52, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
error CS0012: The type 'System.DateTime' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=184.108.40.206, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
error CS0030: Cannot convert type 'System.DateTime' to 'System.DateTime [c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll]'
of course the netstandard library mentioned is already referenced. Googling for recent results came up with a link to Microsoft Connect — which is now closed down with very little on the site to help me find precisely what I was looking for.
Eventually I gave up on Net Standard for this and decided to create a .Net Framework library even though I know it will soon be redundant as the framework is being replaced by .Net Core. To add insult to injury the nuget client in VS refuses to acknowledge half of the Net Standard libraries in my private nuget repo. This means I have to lookup the command line. That didn’t appear to work either, the nuget command line reported that the library was installed but VS and the nuget client pointedly refused to give any sign it was there.
In the end I resorted to creating a classlib using VSCode, setting the target framework to net461 and then opening it in VS where all of a sudden everything appeared to be as expected, in fact better than expected as the dotnet cli will now build the project.
To add to the frustration, while setting this up I need to add a number of references to SOAP services. For the first two, this seemed to work fine, then when I clicked the icon to create a new connected service I got an error despite nothing changing between then and the first two working. Fortunately for me I had another project with the same connected services so I simply copied from there, but if I hadn’t been able to do that I would be looking hard at WSCF
Time wasted 30 mins — recreating the library as Net Framework and sorting out the nuget stuff. Probably another 30 mins or so when I need to convert it to Net Standard in the future
Ncrunch is having trouble building using a distributed node. This node happens to be on my CI server as generally this has the configuration it needs. It seems that the issue is that I have updated VS 2019 on my laptop but not the build tools on the CI Server. All well and good, but then I install the tools and find it wants to reboot the server! I can’t believe that in 2019 I still need to reboot a box to get some software working. Not NCrunch’s fault but frustrating.
Time wasted 20 minutes for reboot
Msbuild has randomly started generating issues on TeamCity, while I’m sure it’s something I’ve done, I’m equally sure that I have done very little that I would expect to cause a build to fail — and it doesn’t fail locally.
The error is
C:\Program Files\dotnet\sdk\2.1.507\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(198,5): error NETSDK1005: Assets file 'C:\TeamCity\buildAgent\work\6781f3047b83640d\tests\obj\project.assets.json' doesn't have a target for '.NETStandard,Version=v2.0'. Ensure that restore has run and that you have included 'netstandard2.0' in the TargetFrameworks for your project.
After some messing around, thankfully TeamCity is pretty good at looking at changes, it became clear that setting the framework to NetStandard caused this issue on one of my projects.
Unfortunately for me another project with the same issue wasn’t completely fixed by this as the issue simply moved to the dotnet pack line which doesn’t have a framework option.
This one is a mess. I’m trying to call some soap services from a net standard library but its become a nightmare. Firstly I could only use asynch methods which would have involved a major code rewrite — yes I know it should be done but …
Thankfully that one was fixed but others reared their heads. firstly what is apparently a serializer issue means that I can’t use .Net Core, so I decided that for this case only, I could, for now, just use .Net Framework but that’s screwy too — I get the error
Error MSB4064 The "BuildOutputFolders" parameter is not supported by the "PackTask" task. Verify the parameter exists on the task, and it is a settable public instance property.
This is apparently caused by MsBuild being v16 which is the one that comes with VS 2019. I already force a lower version of the SDK (ie the LTS one) in my Global.json in order to attempt to minimise issues. Although the guys at paket are great at responding quickly, the fix referred to appears to be from a while ago, so I’m going to try reverting this project to nuget and hope that it doesn’t get mangled.
So as part of this I reverted to the earlier Nuget version of the solution. The first thing I need to do is upgrade two libraries from my local nuget server. Library A depends on Library B yet nuget refuses to install either (or both of them), so now I have to try to remove them so I can install them again. This is exactly why I prefer paket. I’ve now got to recreate the whole application again!
Time wasted — a few hours overall
I have a library that includes some DTO’s, some of which refer to bins. These were in the folder /Waste/Litter/Bin for 11 months (probably a lot more). Randomly one of the applications that depends on this library refused to acknowledge that these DTO’s even existed, although it was fine with others in the same library. I’m sure it will come as no suprise to many of you that the solution was to change the folder to /Waste/Litter/Bins. Obviously something has changed recently but I have no idea what.
Time wasted — about half an hour for refactoring, testing etc.
I usually have two remote repositories for my work, one on a network server and one on the cloud. For some reason today, I can access the cloud application but it refuses point blank to allow me to push to it. I don’t know if git is causing this or something else but it’s a bit frustrating. I did find out that some sort of experimental ui had been applied, which improved but didn’t resolve the issues. In the end I gave up and might try again next week.
Visual Studio 2019 has been whitescreening today and slow in general. This is a bad sign as it usually happens when a Windows Update is downloading. I got so sick of it I decided to restart the machine and — no suprise — the options all involved an update. So now I am expecting a very long startup. I’m just glad I have the Mac.
Half an hour or more after hitting restart, my machine has now started to wake up, it let me login but now just shows my background and the cursor, I think it’s doing something but we will have to see.
Time wasted — 40 minutes for a reboot plus 10 minutes to get all the apps open and usable, mostly offset by the use of the mac
Error MSB4064 The “BuildOutputFolders” parameter is not supported by the “PackTask” task. Verify the parameter exists on the task, and it is a settable public instance property. Although this is a paket error. The source is a change in msbuild. Thankfully there is an easy fix.
Cannot load a reference assembly for execution — This is a new one on me, ironically one of the suggested solutions is to delete the bin and obj folders. It’s ironic because that’s exactly what I did immediately before getting this error. The most comprehensive solution I found is on StackOverflow which suggests its a known issue in .net framework 4.7.1 which is precisely what I’m using and have been for some time.
I’m working on a legacy system and removing some libraries that are no longer used. When I try to remove a library it only seems to partially work and the same operation has to be repeated. Very frustrating to the point I’m wondering if this solution can be converted safely to paket
time wasted — around an hour in total
Today I’m using my desktop machine and I have two issues. Firstly for some reason, despite the wired connection, Outlook (and/or Skype) keep losing the connection and needing my credentials again. When these are asked for it refuses to remember them even with the tick box selected. I’ve tried various solutions using the credentials manager but they didn’t help. The ultimate result of this is that my account gets repeatedly locked (at least I think this is what’s causing it, certainly something is). Fortunately it’s not too bad to unlock it but it’s frustrating that everything suddenly stops working.
Secondly I’ve been trying to update the version of VS 2019 on the desktop machine. On startup I keep getting the — The VSPackage did not load correctly …. This has been a persistent issue for the last few versions of VS, I think since VS 2013. It’s not ideal but ignoring the messages does make me feel better, however that’s not the end of it. When I finally got into VS 2019 I tried to install the same extensions I have on my laptop. There is a reasonably long list which I patiently worked through, then shut down VS so that the extensions installer would kick in. This installer claimed I needed to reboot my machine, I have to turn this machine on and off rather than using reboot as reboot screws it completely up. When I restarted, the extensions installer still claimed it needed a reboot and to add insult to injury it’s forgotten about all the extensions I wanted installing. So basically I don’t seem able to install extensions to VS 2019 without spending some time fixing issues.
Time wasted — over an hour in total
Another windows update — nuff said
Time wasted — 20 minutes for a reboot to get back to a place where I can work, and that’s quick
I love NCrunch, it’s one of the reasons I still use Visual Studio as much as I do. However, I have one legacy project where it refuses point blank to recognise tests. I suspect it’s related to the csproj file but don’t really want to waste time investigating unless I have to
Time wasted — about 10 minutes wondering what’s going on
Today I’m working from home, as this is the first day there after being in the office this usually is a day for sorting out issues — my laptop doesn’t seem to like being in the office. I tried to start VS 2019 and got a message saying that It couldn’t start as setup was on progress. I wasn’t aware I had set anything going so I ignored it for a few minutes and did something else. Thankfully when I retried it started up as normal though I will be pleasantly surprised if this is the only incident today
Time wasted — not much as there was something else I could do for a few minutes
I’ve made some small improvements to a legacy application. For some reason continuous testing (live unit testing) refuses point blank to run the tests. In the end I have run each test manually. I’m sure there is a more fundamental issue that needs resolving here but the application is soon to be replaced so it doesn’t seem worth it
Time wasted — about 10 minutes trying to find an answer
Outlook!! I used to like this application but now I find it irritating though not as bad as the web version. As well as my standard AD email account, I have an external gmail account I use for work when I need to. After I’ve been into the office, for a day or two, Outlook seems incapable of remembering how to authenticate to this account and keeps asking for both passwords. The credentials manager doesn’t help in the slightest, I have almost nothing in it anyway. The only solution that seems to work is just to cancel the password request, though of course that’s not ideal, it does at least prevent the constant interruptions.
Time wasted — incalculable, some time messing with credential manager but how much time due to constant interruptions and password requests use up in breaks in concentration
DLL hell is continuing and this isn’t anything new — https://weblog.west-wind.com/posts/2014/jun/19/nuget-dependencies-and-latest-versions
When starting up I got the VS can’t start due to setup being in progress again. Like last time I waited a few moments and tried again but it makes me wonder if this is a bug of some sort.
To add insult to injury, my machine has been intermittently and inexplicably chronically slow today, it lasts for a minute or two and then it seems fine again for a while
Just got the VS can’t start as setup is in progress again, yet a few minutes later it starts
I’m trying to figure out how to use a new (to me) library, so I clone the repo and try to run it. Somehow nuget can’t download some of the libraries it needs even though they are showing clearly in the gallery. Others download fine. Of course, nuget won’t allow me to uninstall either as it can’t find the library!
time wasted — around 10 minutes messing about
Visual Studio has started giving me the message that a file has changed externally when I have just edited that file in Visual Studio (and nothing else!). To my recollection I first noticed this yesterday and it’s very irritating. I’m hoping a restart of VS will resolve it, I may have been lucky but it seems ok now.
So in summary there were 23 working days in July 2019. Of those days 17 were ones where I had issues frustrating enough that I felt I should document them and in total, probably over a day or so lost time. I consider myself a fairly competent pc user, for those less confident there may well be more issues.
While I don’t find these statistics surprising I do find them rather shocking as I was hoping it was just my perception of the issues.