Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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
C# 测试/调试外壳扩展和;君主制;资源管理器_C#_.net_Windows_Com - Fatal编程技术网

C# 测试/调试外壳扩展和;君主制;资源管理器

C# 测试/调试外壳扩展和;君主制;资源管理器,c#,.net,windows,com,C#,.net,Windows,Com,我使用.NET4.0在C#中成功地创建了一个shell扩展(确切地说是一个上下文菜单处理程序)。我使用Regasm注册扩展,再次使用Regasm注销扩展。整个过程非常顺利 但我有一个问题:explorer.exe在测试后不会释放我的DLL。我不能删除它,我不能做另一个没有VS抱怨的构建。要释放DLL,我唯一能做的就是重新启动explorer.exe。这就是我的问题:我如何在不经历整个过程的情况下进行测试 我也很感激任何关于加快测试/调试过程的提示 编辑:我在项目属性中找到了注册COM互操作选项。

我使用.NET4.0在C#中成功地创建了一个shell扩展(确切地说是一个上下文菜单处理程序)。我使用Regasm注册扩展,再次使用Regasm注销扩展。整个过程非常顺利

但我有一个问题:explorer.exe在测试后不会释放我的DLL。我不能删除它,我不能做另一个没有VS抱怨的构建。要释放DLL,我唯一能做的就是重新启动explorer.exe。这就是我的问题:我如何在不经历整个过程的情况下进行测试

我也很感激任何关于加快测试/调试过程的提示

编辑:我在项目属性中找到了注册COM互操作选项。它确实加快了调试过程,但我仍然有explorer.exe问题


编辑2:我确实结束了创建一个批处理文件以终止,然后重新启动explorer.exe,并在预构建事件中使用了它。然而,即使我使用“start”命令在后台运行任务,VisualStudio在构建过程中将无限期冻结。最后,我使用这个工具在后台完全运行命令。

我还有另一个建议:您可以使用它来解锁DLL。之后,您应该能够再次编译。
据该网站称,Unlocker甚至还提供了一个命令行工具,因此您可以将其集成到构建过程中。

我确实结束了创建批处理文件的工作,然后重新启动explorer.exe,并在预构建事件中使用了它。然而,即使我使用“start”命令在后台运行任务,VisualStudio在构建过程中将无限期冻结。我最终使用此工具在后台完全运行命令。

正如我所想,您可以从process manager安全地终止/重新启动explorer.exe,而无需注销。“这是相对快速和无痛的。”马修,谢谢。这就是我正在做的。是的,很有效。。但是我喜欢在进行构建和测试的过程中进行大量的工作,所以这有点痛苦。编写一个批处理文件(Powershell?)来停止并重新启动explorer.exe。添加到预构建步骤。@Mitch,所以这里的共识是在构建之间重新启动explorer.exe只是编写扩展时要付出的代价?@mellowsoon:我不知道如何解决这个问题,但有人可能会……实际上我是先尝试过的。解锁器是一个工具,它的附近和亲爱的我哈哈,可惜它没有工作。它所能做的最好的选择就是在下次重新启动时删除dll。