Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不存在文件的情况下注销dll_Dll_Regsvr32_Dllregistration - Fatal编程技术网

在不存在文件的情况下注销dll

在不存在文件的情况下注销dll,dll,regsvr32,dllregistration,Dll,Regsvr32,Dllregistration,作为构建过程的一部分,几个dll和tlb通过regsvr32注册到COM。在构建的末尾有一个步骤,可以注销相同的dll和tlb列表。但是,如果构建早期失败,则该步骤不会运行 问题是后续生成并不总是使用相同的生成路径,项目生成失败是因为它们在错误的位置查找已注册的dll(因为它们仍然从以前失败的生成在COM中注册) 简单的解决方案是确保在每次构建结束时运行取消注册脚本,而不管是否失败或通过,但是使用我们的构建工具这并不容易。有没有其他方法可以在dll/tlb的注册路径中没有原始源文件的情况下注销d

作为构建过程的一部分,几个dll和tlb通过regsvr32注册到COM。在构建的末尾有一个步骤,可以注销相同的dll和tlb列表。但是,如果构建早期失败,则该步骤不会运行

问题是后续生成并不总是使用相同的生成路径,项目生成失败是因为它们在错误的位置查找已注册的dll(因为它们仍然从以前失败的生成在COM中注册)


简单的解决方案是确保在每次构建结束时运行取消注册脚本,而不管是否失败或通过,但是使用我们的构建工具这并不容易。有没有其他方法可以在dll/tlb的注册路径中没有原始源文件的情况下注销dll/tlb

您不需要使用注册时使用的同一dll调用unregister,您只需要知道正在注销的dll在其DllUnregisterServer方法中删除的类与在其DllRegisterServer方法中丢失的dll文件删除的类相同

记住这一点,您应该能够使用新路径上的dll来注销旧路径上的dll

也许可以尝试更改您的构建过程,在注册DLL之前先注销它们,这将在注册正确的DLL之前清除对丢失的DLL的悬空引用,您应该准备好了