是否可以发布网站而不是将其构建为 FAKE 脚本的一部分?
问问题
2711 次
2 回答
7
我自己没有这方面的经验,但看起来有两种方法可以手动运行 Web 部署过程。一个(看起来较旧)是使用特殊目标调用 MSBuild(如此处所述),另一个选项(看起来更现代)是使用 MSDeploy 工具(具有命令行界面)。
这两个都应该很容易从 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 专家来到 SO 之前为您指明一个有用的方向!
于 2013-05-10T03:23:37.197 回答
5
这是一种方法。(实际上它并不能完全回答这个问题,因为没有构建就不会执行发布。)
- 决定哪些目标需要发布网站。
- 使它们依赖于“构建”目标。
- 如果需要发布,请使用发布配置文件让“构建”目标发布站点。
这是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”之一时,网站将根据 .xml 中定义的发布配置文件发布LocalTestServer.pubxml
。
于 2014-04-09T14:20:01.937 回答