【问题标题】:Publish website in FAKE (F# Make)以 FAKE(F# Make)发布网站
【发布时间】:2013-05-09 22:38:20
【问题描述】:

是否可以发布网站而不是将其构建为 FAKE 脚本的一部分?

【问题讨论】:

  • 我认为没有内置任务可以做到这一点,但您当然可以这样做(就像您可以在 F# 中编程的任何其他内容一样)。您想如何发布网站?使用 FTP 还是其他方式?
  • 嗨 Tomas,抱歉,我的意思是 Visual Studio 意义上的“发布”,而不是在某处通用发布。这也是你的意思吗?如果是这样,那么它只需将其发布到磁盘,但它会运行 web.config 转换,删除不必要的文件等
  • 我明白了,是的,这是有道理的。我在互联网上环顾四周,并在答案中发布了一些想法。

标签: f# f#-fake


【解决方案1】:

我自己没有这方面的经验,但看起来有两种方法可以手动运行 Web 部署过程。一种(看起来更老)是使用特殊目标(如described here)调用 MSBuild,另一种选择(看起来更现代)是使用 MSDeploy 工具(has a command line interface)。

这两个都应该很容易从 FAKE 脚本中调用。这是一个调用命令行工具的示例:

Target "Deploy" (fun _ ->
    let result =
        ExecProcess (fun info -> 
            info.FileName <- "file-to-run.exe"
            info.Arguments <- "--parameters:go-here"
        ) (System.TimeSpan.FromMinutes 1.0)     
    if result <> 0 then failwith "Operation failed or timed out"
)

调用 MSBuild 脚本应如下所示:

Target "BuildTest" (fun _ ->
    "Blah.csproj"
    |> MSBuildRelease "" "ResolveReferences;_CopyWebApplication" 
    |> ignore
)

正如我所说,我没有对此进行测试(所以它可能完全错误),但希望它可以在一些 Web 部署或 FAKE 专家出现之前为您指明一个有用的方向!

【讨论】:

    【解决方案2】:

    这是一种方法。 (实际上它并没有完全回答这个问题,因为发布不是在没有构建的情况下执行的。)

    • 决定哪些目标需要发布网站。
    • 使它们依赖于“构建”目标。
    • 让“构建”目标使用发布配置文件发布网站,以防需要发布。

    这是来自build.fsx 的一段代码,说明了这种方法:

    let testProjects = @"src/**/*Tests.csproj"
    
    let requestedTarget = getBuildParamOrDefault "target" ""
    let shouldDeploy =
        match requestedTarget with 
        | "Test" | "AcceptanceTest" | "Deploy" -> true
        | _ -> false
    
    
    // *** Define Targets ***
    Target "BuildApp" (fun _ ->
        let properties =
            if shouldDeploy
            then [ ("DeployOnBuild", "true"); ("PublishProfile","LocalTestServer.pubxml") ]
            else []
        !! @"src/**/*.csproj"
          -- testProjects
            |> MSBuildReleaseExt null properties "Build"
            |> Log "Build-Output: "
    )
    
    // Other targets and dependencies omitted.
    

    有了这段代码,当目标之一 运行“Test”、“AcceptanceTest”、“Deploy”,网站 根据LocalTestServer.pubxml 中定义的发布配置文件发布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多