5

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

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

有没有人看到这个或知道修复?

4

1 回答 1

14

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

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

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

请注意,跳过这些更新的客户可能会遇到一些麻烦。你真的应该考虑摆脱依赖。mscomctl 中没有任何东西不能很好地包装在 .NET 框架中,所有 VB6 控件都有很好的替代品。

于 2012-10-22T18:09:05.143 回答