【发布时间】:2011-11-06 00:44:21
【问题描述】:
我已经构建了一个 winforms 应用程序 (C#),它将获取文件路径列表,并将这些文件(来自不同的 VS 解决方案)复制到相同目录结构中的新位置(在用户指定的文件夹中)它们当前存在于本地文件系统中。
我使用 Path 类、Directory 类等,一切都运行良好……除非它到达指向 DLL 的文件路径。
我尝试复制的 DLL 是其他解决方案的一部分,并且该解决方案当前未打开。
我已尝试重新启动计算机以确保即使在解决方案关闭后,Visual Studio 也不会以某种方式挂接到该 DLL。
可以通过常规手动方式(即复制和粘贴快捷方式)复制相关 DLL。
没有在程序中创建批处理文件并在该 DLL 路径上运行 xcopy,我不知道有什么方法可以让它工作。
根据我从谷歌搜索中找到的信息(在这种特殊情况下并不多),File.Copy() 应该可以工作..
任何帮助都会很棒,即使它是指向我可能忽略的重复问题的链接。
谢谢!
-错误信息是:进程无法访问文件[插入文件路径],因为它正在被另一个进程使用(路径肯定也是正确的)
-刚刚下载并尝试使用 Process Explorer 搜索 DLL 名称。我还从命令提示符处运行了类似的 exe,但无济于事。它声称没有任何东西在使用它。这就是为什么我对此完全感到困惑。另外,我刚刚检查了权限,一切看起来都很好(即完全控制,所有者有效权限)
-它不处理打开的文件。它基本上构建了正确的 src 和 dest 路径,并在这些路径上执行 File.Copy()。我将如何处理打开的文件?我确定我可以确定它是否打开,但如果它打开了我该怎么办?
【问题讨论】:
-
您可以从 Microsoft 下载 Process Explorer 并检查使用它的程序,如果您愿意,也可以关闭句柄。出于某种原因,有人锁定了它,但除了你之外没有人能告诉我们它是什么应用程序。
-
你能显示你用来复制文件的代码吗?可能是您的方法没有考虑打开的文件。
-
它是否说明了另一个进程正在使用哪个文件?显然,如果目标文件不存在,这一点是没有意义的。 . .您是否在
File.Copy之前放置了一个断点并检查了 Process Explorer 以确保没有任何东西已经打开了源或目标?您确定源和目标没有指向同一个文件吗?我知道File.Copy会复制 DLL 文件,因为我已经使用它了。你的代码一定有问题。 -
Unlocker 也是检测和杀死文件句柄的好工具
标签: c# winforms dll file-io copy