Visual Studio 挂起“正在执行注册”
Posted
技术标签:
【中文标题】Visual Studio 挂起“正在执行注册”【英文标题】:Visual Studio hang on "Performing registration" 【发布时间】:2012-08-09 16:21:32 【问题描述】:我认为这是非常基本的。今天我正在构建一个静态链接到 ATL 的动态链接项目。在构建它时,它挂在“执行注册”阶段并且没有继续。我可以看到任务管理器中有一个 regsvr32.exe。我猜这个过程是在做注册工作。但它永远不会结束。
所以我取消了构建并重试,然后我有一些未解决的外部符号问题。有人可以向我解释为什么会这样吗?非常感谢你! 平台(Windows 7 64,VS 2008)
最好的问候,
【问题讨论】:
【参考方案1】:regsvr32.exe
正在加载您的 DLL,并调用它的 DllRegisterServer
导出函数。假设它冻结了,您可以使用任务管理器、进程资源管理器或调试器检查它 - 附加到冻结的进程。因此,原因很可能在您的 DLL 中,您需要解决它,使用调试器附加,或者只是使用 C:\Windows\syswow64\regsvr32.exe <full path to your DLL>
启动调试会话。
并不是说如果您的 DLL 是 32 位的,那么您需要 syswow64\regsvr32.exe
,而不是 system32\regsvr32.exe
(否则被调试者将启动一个子进程,该子进程将冻结而不被调试)。
【讨论】:
该项目没有 DllRegisterServer。只有一个模块属性,如:[ module(dll, uuid = "****-****-****--", name = "模块", helpstring = "演示模块", resource_name = "IDR_DemoModule") ]; 确实有,它在您继承的基础中。您可以使用 Dependency Walker 应用程序见证这一点。【参考方案2】:查看taskmanager,看看regsvr32.exe传入的参数是什么,正常注册这样的dll会被什么东西阻塞,得到什么阻塞,如果可能的话调试到dllmain中。
【讨论】:
以上是关于Visual Studio 挂起“正在执行注册”的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2012安装:ngen挂起/什么都不做