很长一段时间我在visual studio中构建了一个安装程序,当我尝试使用该程序时,它给了我这个愉快的错误:
检索COM类工厂 具有CLSID的组件 {EC10E7E8-797E-4495-A86D-3E9EADA6D5BB} 由于以下错误而失败: 80040154
从那看起来我似乎需要将清单嵌入可执行文件中并且为此我应该添加为后期构建事件:
“$(DevEnvDir).... \ VC \ bin \ mt.exe”-manifest“$(ProjectDir)$(TargetName).exe.manifest” -outputresource: “$(TARGETDIR)$(TargetFileName)”;#1
好吧,当我这样做并构建解决方案时,事件根本就没有被调用。事实上,我可以在事件前和事件后放置任何旧的随机文本,并且不会给出任何错误,也不会看到任何被调用的内容。
我是否应该采用不同的方式来完成这项工作?
其他信息:
我正在使用IDE构建。当我将构建类型切换为调试和释放时,我仍然在后期构建事件中使用正确的命令。
有没有办法查看它正在做什么的日志?
答案 0 :(得分:1)
工具+选项,项目和解决方案,构建和运行,将“MSBuild项目构建输出详细程度”设置为详细。您将在“输出”窗口中获得大量诊断信息。
FWIW,您收到的错误消息是一个简单的“类未注册”错误。使用Regsvr32.exe进行修复
答案 1 :(得分:0)
两个猜测:
您是从命令行或类似的东西构建解决方案吗?
答案 2 :(得分:0)
这是有效的。您显然不需要将清单烘焙到程序中。将清单包含在msi包中并且还包括依赖性检查程序错过的DLL就足够了。
一旦你知道,就像大多数事情一样简单: - )
为什么没有调用后期构建步骤我不知道,但真正的问题已经解决了。