警告 MSB3283:找不到类型库“MSComctlLib”的包装器程序集。构建我的应用程序时

问题描述 投票:0回答:2

我有一个已经存在多年的 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 ==========

我被难住了。我没有更改任何项目或构建设置,并且我怀疑这台机器上是否发生了任何重大更改。我找不到任何有用的信息来查询此错误,所以我不知道发生了什么。

有人见过这个或知道修复方法吗?

visual-studio-2010 visual-studio windows-xp
2个回答
14
投票

尽管 IT 部门推送 Windows 更新的可能性很小

它并不小。今年有两个安全更新修补了 mscomctl。同样重要的是,任何 IT 部门都不会跳过它们。 MS12-027于4月发布,MS12-060于8月发布。特别是四月份的更新很重要,它改变了COM服务器的guid。这意味着互操作库(又名包装程序集)不再有效。

删除并重新添加要修复的依赖项。

请注意,跳过这些更新的客户可能会遇到一些麻烦。你确实应该考虑摆脱这种依赖。 mscomctl 中的所有内容都被巧妙地封装在 .NET 框架中,所有 VB6 控件都有很好的替代品。


0
投票

对于那些第一次看到这个问题的人。 。 。 10年后。 。 。我几年前在 VB.net 中编写的一个应用程序也遇到了同样的问题(我认为它是 2017 版的 Visual Studio)。不幸的是,看起来我可能在同一台机器上安装了 VB6,这可能就是为什么(我猜测)我的项目中有对 MSComctlLib 的引用。我尝试重新安装 Visual Studio(2008 和 VB6 VS),但这并没有解决问题。然后我注意到,在 Visual Studio 的“解决方案资源管理器”窗口中(我的解决方案打开并且错误在错误列表中可见)有一个“引用”节点。当我打开该注释时,我可以看到所有参考文献,包括有问题的参考文献(参考文献旁边的小感叹号)。我非常确定我的解决方案实际上没有使用 MSComctlLib 中的任何内容,因此我决定: 1. 关闭我的解决方案。 2. 在进行任何更改之前,先备份我的解决方案。 3. 重新打开我的解决方案(错误再次按预期显示)。 4. 展开解决方案资源管理器参考节点。 5. 右键单击有问题/错误的节点以获取上下文菜单。 6. 从上下文菜单中选择“删除”。瞧。 。 。错误消息消失了。我保存了我的解决方案。重新打开解决方案。没有错误。没问题。运行解决方案。一切正常。显然,只有当您的解决方案不使用 MSComctlLib 而我的解决方案没有使用时,这才有效。因此,这是一个快速而简单的修复。

© www.soinside.com 2019 - 2024. All rights reserved.