Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Warning MSB3283: Cannot find wrapper assembly for type library "MSComctlLib". When building my app

I have a Visual Studio solution that's been around for years. The project is a Visual Studio 2010 project, and I've been able to compile and run the project for years. This application is a critical application and only rarely do I need to launch the project and make minor changes for bug fixes that have been discovered.

Today, I needed to do a bit of research. I opened the project on my old Windows XP dev box which is the same machine that I've developed on for years. I'm quite confident that nothing on this machine has changed, though there is a small chance that IT has pushed a Windows Update that I may not be aware of.

I opened my Project, and immediately hit the Run button on the toolbar. The app will no longer compile. It gets to the last project (of 7) in the solution and gives me the following output:

------ Build started: Project: QSApplication, Configuration: Debug Any CPU ------
c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1558,9): warning MSB3283: Cannot find wrapper assembly for type library "MSComctlLib".
========== Build: 7 succeeded or up-to-date, 1 failed, 0 skipped ==========

I'm stumped. I haven't changed any project or build settings and I am doubtful that anything major has changed on this machine. I can't find anything useful querying this error so I have no clue what's going on.

Has anyone seen this or know of a fix?

like image 474
RLH Avatar asked Oct 18 '12 20:10

RLH


1 Answers

though there is a small chance that IT has pushed a Windows Update

It isn't small. There were two security updates that patched mscomctl this year. Critical ones too, no IT department would skip them. MS12-027 was released in April, MS12-060 was released in August. Particularly the April update is significant, it changed the guids of the COM server. Which means that the interop library (aka wrapper assembly) is no longer valid.

Remove and re-add the dependency to fix.

Beware you might have some trouble with customers that skip these updates. You really should consider getting rid of the dependency. There's nothing in mscomctl that isn't ably wrapped in the .NET framework, all VB6 controls have good replacements.

like image 108
Hans Passant Avatar answered Sep 22 '22 14:09

Hans Passant