我有几个包含同名文件的测试项目:“loc.xml”。 如果我构建所有测试项目,那么每次都会覆盖我的“loc.xml”。
有没有办法在单独的文件夹中构建每个项目?
实际上我用它:
Target "BuildUnitTests" (fun _ ->
trace "Building unit tests..."
!! @"source\test\**\*.csproj"
|> MSBuildRelease BuildParams.TestsOutputDir "Rebuild"
|> Log "AppBuild-Output: "
)
答案 0 :(得分:1)
您可以通过从!! @"source\test\**\*.csproj"
遍历glob中的每个项目并指定构建目录作为MSBuild的选项来执行此操作。
这是一个非常基本的build.fsx
文件,可执行以下操作:
source/test/**/*.csproj
bin/PROJECT_NAME
MSBuild
函数,其参数使其以Release
模式构建,这是输出目录的一个选项。运行它之后,你应该在bin
中有一堆子文件夹,这些子文件夹被命名为您的单元测试项目名称,每个相应版本的工件应该在正确的文件夹中。
#I "packages/FAKE/tools"
#r "FakeLib.dll"
open System.IO
open Fake
let buildProject (projectName : string) =
// Just setting a release configuration by default...
let properties = [ ("Configuration", "Release") ]
let bareName = Path.GetFileNameWithoutExtension(projectName)
let buildDir = sprintf "bin/%s" bareName
trace <| sprintf "Building %s" bareName
// MSBuildHelper's functions all expect a list so you have to pass
// projectName as part of a list.
// We are using 'naked' MSBuild so we have to specify all the
// options/arguments ourselves
MSBuild buildDir "Rebuild" properties [projectName]
|> ignore
Target "Build" <| fun () ->
!! "source/test/**/*.csproj"
|> Seq.iter buildProject
Target "All" DoNothing
"Build" ==> "All"
RunTargetOrDefault "All"
答案 1 :(得分:0)
如果您使用的是Visual Studio,则应自动将不同的项目内置到不同的文件夹中。
但是,您可以在属性(项目属性 - &gt; build - &gt;输出路径)中更改每个项目的构建路径。