Monday, 29 July 2013

Code analysis error CA0055 with a project upgraded to .NET Framework 4.5

I have a Visual Studio solution that was upgraded to use .NET Framework 4.5. It was working fine until I started getting the following error(s) running Code Analysis as part of the build:

CA0052 : No targets were selected

CA0055 : Could not load D:\dev\MySolution\MyProject\bin\Release\MyProject.exe. The following error was encountered while reading module 'System.Xml': Could not resolve type reference: [mscorlib, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089]System.Runtime.CompilerServices.IAsyncStateMachine

That seemed odd, as I confirmed that the application did have an assembly reference to System.Xml. I even tried re-adding the reference but that made no difference. The interesting thing is that the type (IAsyncStateMachine) is new in .NET 4.5, even though it is included in mscorlib Version That's because 4.5 is an in-place upgrade.

I did notice that you do get separate copies of the reference assemblies located in C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework. Reflecting on the mscorlib.dll assembly in the v4.0 folder showed it did NOT have IAsyncStateMachine, but the one in the v4.5 folder did. Could that be relevant?

Opening up the .csproj file, I discovered that another assembly reference suspiciously had the following HintPath defined

<Reference Include="System.Web">
  <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll</HintPath>

Re-adding this reference, resulted in Visual Studio changing it to just this:

<Reference Include="System.Web" />

And then re-building the solution with Code Analysis enabled was successful.

Monday, 1 July 2013

Aussie Toilets–Featured WP8 store app on 2nd July

In it's 2 and a bit year history, this is the first time I've ever seen Aussie Toilets listed as a featured app in the Windows Phone 8 Store!

Screenshot of Windows Phone 8 Store

It's one of the featured apps for 2nd July 2013. Nice! Smile