如何使用FAKE将项目构建到多个输出?

托马斯·詹森(Tomas Jansson)

通常,我制作的解决方案包含多个应用程序,它可能是一个Web应用程序,服务,也可能是一个简单的控制台应用程序。

要构建我的项目,我使用:

let projects = !! "src/**/*.csproj" -- "src/**/*.Tests.csproj"

进而

projects
|> MSBuildRelease buildDir "ResolveReferences;Build" 

问题是我所有的服务dll和控制台dll最终都位于同一目录中buildDir,是否有办法强制每个项目在子文件夹中都有一个子文件夹buildDir对于Web项目,它看起来不错,因为我有_PublishedWebsites要依赖文件夹。

此外,以这种方式进行构建时,是否可以多次构建某些项目?我的意思是,如果两个ServiceWeb有一个参考LibA,不会为此了构建LibA三次?它一次匹配文件模式本身,而两次匹配来自Web的引用Service

更新:

这是一个演示项目,您可以在这里找到代码:https : //github.com/mastoj/FAKESimpleDemo

托马斯·詹森(Tomas Jansson)

当我这样做时,我一定已经真的很累,因为这样做很明显。无需立即传递所有项目,我可以自己进行迭代并弄清楚输出文件夹应该是什么。因此,为解决此问题,我仅添加了两个辅助函数:

let getOutputDir proj =
    let folderName = Directory.GetParent(proj).Name
    sprintf "%s%s/" buildDir folderName

let build proj =
    let outputDir = proj |> getOutputDir
    MSBuildRelease outputDir "ResolveReferences;Build" [proj] |> ignore

Target "Build" (fun() ->
    trace "Building again!"

    projects
    |> Seq.iter build
)

这样,您将为每个构建的项目在输出目录中获得一个文件夹。文件夹的名称取自项目文件的父目录名称。如果需要,可以改用文件的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MSBuild:使用FAKE构建项目时,如何将警告视为错误?

将 Typescript 项目构建到 UMD 但获取多个文件

如何使用脚本将IntelliJ Idea项目构建到jar中

如何将构建输出重定向到文件?

如何将Teamcity构建参数传递到Fake脚本启动的Ant脚本中?

从 MSBuild 构建项目到不同的输出目录

如何使用多个循环并将输出存储到多个变量?

如何使用Fake构建Docker映像

如何将容器部署到多个 GCP 项目并使用 Cloud Run 托管?

新的.NET“ project.json”项目,将预先构建的本机.dll复制到输出目录

如何使用 Jenkins 构建到存储库子项目

如何将curl的输出重定向到多个文件?

如何将多个项目传递到车把中的功能?

如何使用一个构建文件在Ant中构建多个项目?

如何使用 jq 将数据从多个输入 json 对象复制到一个输出对象?

如何从多个Maven项目构建容器

如何设置NuGet包以将内容文件复制到输出构建目录?

VS代码:如何根据构建配置将文件复制到输出目录

使用多个 .c 文件构建 makefile 项目

如何使用Spark将Avro写入多个输出目录

如何使用python将“打印”输出重定向到文件?

如何使用JSch将多行命令输出存储到变量

在构建时如何将类库程序集复制到Web项目中?

如何仅将 React Native 项目的 Web 版本构建到生产环境中?

如何将lodash自定义构建集成到项目中

如何将资源文件从C ++项目构建/复制到“调试目标路径”?

如何为使用Stack构建的Haskell项目设置可执行输出位置?

如何使Visual Studio使用FAKE构建我的解决方案?

使用Android Studio的gradle构建将tess-two集成到项目中