当我的一个Target函数抛出错误时,我希望我的应用程序首先使用DropDb,然后失败。但是当我有以下代码时:
DropDb *databaseInfo* |> ignore
failwith "Migration failed"
在DropDb删除数据库之前,应用程序失败。
一旦DropDb完成,我怎样才能使应用程序失败?
答案 0 :(得分:0)
我似乎找到了这个问题:
在我的脚本中,我之前已经运行过DropDb,然后再次创建了一个DB。 FAKE中DropDb的代码是:
let DropDb serverInfo =
if intitialCatalogExistsOnServer serverInfo then
logfn "Dropping database %s on server %s" (getDBName serverInfo) (getServerName serverInfo)
(getDatabase serverInfo).DropBackupHistory |> ignore
getDBName serverInfo |> serverInfo.Server.KillDatabase
serverInfo
serverInfo
已存储在缓存中,该缓存未由我之前再次创建数据库的脚本更新,因此initialCatalogExistsOnServer
返回false并且没有任何代码运行。