我正在尝试移动(File.Move)锁定的 .dll 文件以执行应用程序更新。File.Move 方法无异常执行。但是文件没有移动。我的意思是在执行 File.Move 方法后,我有同一个文件的两个副本:在目标文件夹和源文件夹中。这是代码:)
File.Move(fileName, newFileName);
有人可以解释这个原因吗?
我正在尝试移动(File.Move)锁定的 .dll 文件以执行应用程序更新。File.Move 方法无异常执行。但是文件没有移动。我的意思是在执行 File.Move 方法后,我有同一个文件的两个副本:在目标文件夹和源文件夹中。这是代码:)
File.Move(fileName, newFileName);
有人可以解释这个原因吗?
File.Move 跨卷按顺序执行两个操作:
似乎第一个成功,第二个默默地失败了。结果如预期。
请注意:http: //msdn.microsoft.com/en-us/library/system.io.file.move.aspx
如果您尝试跨磁盘卷移动文件并且该文件正在使用中,则该文件将复制到目标但不会从源中删除。
通常在这种情况下,您要么有一个不需要任何应用程序 DLL 的单独更新过程,因此您生成更新程序,它可以移动它喜欢的所有内容、执行更新并重新启动应用程序。
或者,像安装程序一样,您将文件更改提交到下次重新启动时发生。
File.Move
方法将首先将文件复制fileName
到文件' newFileName
'。第一步成功后,它将删除文件“ fileName
”。
现在,如果文件 ' fileName
' 已经打开/锁定,它将无法删除该文件。