“ReferencePath” does not define a value for metadata “CopyLocal”

After upgrading Visual Studio 2017 to 15.8.5 I ran into an error while building an existing WPF project:

The item "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Microsoft.Win32.Primitives.dll" in item list "ReferencePath" does not define a value for metadata "CopyLocal". In order to use this metadata, either qualify it by specifying %(ReferencePath.CopyLocal), or ensure that all items in this list define a value for this metadata.

Google didn’t really help that time and since it was happening on building while working fine before I just tried replacing the Microsoft.Common.CurrentVersion.targets file in C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin and C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\amd64 with an version before the upgrade. I basically had to copy it from a different installation.

So this is an annoying solution and with the latest upgrade, it doesn’t seem fixed. It also works fine with existing WPF projects. You could remove the project and create a new one and just copy all old code over, but that is annoying too especially if you have a ton of references.

So I decided to compare the target files to see what actually changed and to be fair, you only have to change one single thing in the file:

Line 3961: Change …Include=”@(ReferencePath)” to …Include=”@(ReferencePath.CopyLocal)”

That’s all you have to do, like the error said itself, by specifying %(ReferencePath.CopyLocal).

Happy Days.

Designing Distributed Systems

I recently saw a Microsoft post on Twitter advertising this free e-book, so I gave it a go and it’s quite an interesting easy read. It’s only 160 pages, so good stuff for a few evenings. If you are interested in distributed systems..microservices..container and so on, you should read it.

You can download it here:

Designing Distributed Systems

This book gives you an introduction into some of the basic patterns you normally use in distributed systems. If you are like me, you probably will have used at least a few of them but might have not heard the correct “term” of it. That’s fine, I’m really bad it, it’s basically the reason I’m bad at those tech knowledge questions in interviews, where you have to explain pattern xy but you have no idea, until they explain it to you quick and you think, well I have used that for ages. That’s why I like technically discussions about actual work you did more than stupid questions.

Coming back to the book and its content. The book contains four parts:

Continue reading “Designing Distributed Systems”