我有一个已经存在多年的 Visual Studio 解决方案。该项目是一个 Visual Studio 2010 项目,多年来我一直能够编译和运行该项目。该应用程序是一个关键应用程序,我很少需要启动该项目并对已发现的错误修复进行较小的更改。
今天,我需要做一些研究。我在旧的 Windows XP 开发箱上打开了该项目,这也是我多年来开发的同一台机器。我非常有信心这台机器上没有任何变化,尽管 IT 极有可能推送了我可能不知道的 Windows 更新。
我打开了我的项目,并立即点击工具栏上的“运行”按钮。该应用程序将不再编译。它到达解决方案中的最后一个项目(共 7 个),并给出以下输出:
------ 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 ==========
我被难住了。我没有更改任何项目或构建设置,并且我怀疑这台机器上是否发生了任何重大更改。我找不到任何有用的信息来查询此错误,所以我不知道发生了什么。
有人见过这个或知道修复方法吗?
对于那些第一次看到这个问题的人。 。 。 10年后。 。 。我几年前在 VB.net 中编写的一个应用程序也遇到了同样的问题(我认为它是 2017 版的 Visual Studio)。不幸的是,看起来我可能在同一台机器上安装了 VB6,这可能就是为什么(我猜测)我的项目中有对 MSComctlLib 的引用。我尝试重新安装 Visual Studio(2008 和 VB6 VS),但这并没有解决问题。然后我注意到,在 Visual Studio 的“解决方案资源管理器”窗口中(我的解决方案打开并且错误在错误列表中可见)有一个“引用”节点。当我打开该注释时,我可以看到所有参考文献,包括有问题的参考文献(参考文献旁边的小感叹号)。我非常确定我的解决方案实际上没有使用 MSComctlLib 中的任何内容,因此我决定: 1. 关闭我的解决方案。 2. 在进行任何更改之前,先备份我的解决方案。 3. 重新打开我的解决方案(错误再次按预期显示)。 4. 展开解决方案资源管理器参考节点。 5. 右键单击有问题/错误的节点以获取上下文菜单。 6. 从上下文菜单中选择“删除”。瞧。 。 。错误消息消失了。我保存了我的解决方案。重新打开解决方案。没有错误。没问题。运行解决方案。一切正常。显然,只有当您的解决方案不使用 MSComctlLib 而我的解决方案没有使用时,这才有效。因此,这是一个快速而简单的修复。