System.IO.DeleteFile抛出UnauthorizedAccessException

时间:2016-01-14 01:35:46

标签: f# f#-fake

我正在尝试使用System.IO.DeleteFile删除文件,并且莫名其妙地抛出了UnauthorizedAccessException。我意识到这已被问过很多次了。我查看了我能找到的所有问题,似乎没有一个答案适用。我碰巧使用的是FAKE,但问题看起来更通用了。

这是我的整个build.fsx:

// include Fake lib
#r @"packages/FAKE/tools/FakeLib.dll"
open Fake
open System.IO

Target "Default" (fun _ ->
    DeleteFile "./Newtonsoft.Json.dll" |> ignore
)

RunTargetOrDefault "Default"

我在运行Fsi.exe build.fsx时遇到此异常:

System.UnauthorizedAccessException: Access to the path './Newtonsoft.Json.dll' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileInfo.Delete()
   at FSI_0001.clo@6.Invoke(Unit _arg1) in c:\Apache24\htdocs\IS4C\pos\is4c-nf\scale-drivers\drivers\NewMagellan\build2.fsx:line 7
   at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 483

如果我从同一命令提示符运行del Newtonsoft.Json.dll,则文件删除就好了。

它似乎不是权限问题。该文件不是只读或隐藏的。除非我的实际构建文件以某种方式打开文件的额外句柄,否则我看不到它将如何在另一个进程中打开。

这些似乎是这个问题的三个标准答案。还有其他答案吗?

0 个答案:

没有答案