BuildProject 4.1.0

dotnet new install BuildProject::4.1.0                
此软件包包含一个可以从 shell/命令行中调用的 .NET 模板软件包

BuildProject

一个用于使用 FAKE 和 .NET 6/7 搭建现代构建流程的模板

安装

dotnet new --install BuildProject::*

使用方法

模板参数

BuildProject (F#)
Author: Kevin Schneider

Usage:
  dotnet new BuildProject [options] [template options]

Options:
  -n, --name <name>       The name for the output being created. If no name is specified, the name of the output
                          directory is used.
  -o, --output <output>   Location to place the generated output.
  --dry-run               Displays a summary of what would happen if the given command line were run if it would result
                          in a template creation.
  --force                 Forces content to be generated even if it would change existing files.
  --no-update-check       Disables checking for the template package updates when instantiating a template.
  --project <project>     The project that should be used for context evaluation.
  -lang, --language <F#>  Specifies the template language to instantiate.
  --type <project>        Specifies the template type to instantiate.

Template options:
  -pn, --project-name <project-name>   The name of the project. usually equal to the repo anme on github and the .sln
                                       file to build. If not, customize manually.
                                       Type: string
                                       Default: TODO: set PROJECTNAME
  -go, --git-owner <git-owner>         The name of the organization or github user that owns the github repo
                                       Type: string
                                       Default: TODO: set GITOWNER
  -tf, --target-framework <choice>     The target framework of the build project
                                       Type: choice
                                         net6.0  use .NET 6 as target framework for the project
                                         net7.0  use .NET 7 as target framework for the project
                                         net8.0  use .NET 8 as target framework for the project (default)
                                       Default: net8.0
  -ipv, --individual-package-versions  If set, the build project will support individual package versions and release
                                       notes per project.
                                       Type: bool
                                       Default: false

基本用法

dotnet new BuildProject -go <git-owner> -pn <project-name> -o <output-directory>

其中

  • <git-owner> 是拥有 github 仓库的用户/组织名称。
  • <project-name> 是 .sln 文件和 github 仓库名称。如果它们不同,不要设置此选项并手动调整
  • <output-directory> 指定输出目录。通常我会使用存储库根目录中的 build 文件夹。

该模板将生成以下文件

build.fsproj
ProjectInfo.fs
Helpers.fs
MessagePrompts.fs
BasicTasks.fs
TestTasks.fs
PackageTasks.fs
DocumentationTasks.fs
ReleaseTasks.fs
ReleaseNotesTasks.fs
Build.fs

其中动态内容仅位于 ProjectInfo.fs 中,这可能是您需要手动调整的内容,如果您未通过上面的标志设置

let testProjects = 
    [
        // add relative paths (from project root) to your testprojects here
    ]

let project = "{PROJECTNAME}"

let solutionFile  = $"{project}.sln"

let gitOwner = "{GITOWNER}"

let gitHome = $"https://github.com/{gitOwner}"

let projectRepo = $"https://github.com/{gitOwner}/{project}"

请注意,测试项目需要手动设置。

添加测试项目

我通常使用 Expecto 模板 在存储库根目录的 tests 文件夹中初始化测试项目,如下所示

C:.
├───build
│   └───<build project content initialized by this template>
├───src
│   └───<project-name>
└───tests
    └───testproject

要使用此模板提供测试构建任务,您必须将测试项目添加到 ProjectInfo.fs 中运行

let testProjects = 
    [
        "tests/testproject/testproject.fsproj"
    ]

使用构建项目

在项目根目录中,键入

dotnet run --project ./<output-path>/build.fsproj

您也可以传递构建目标进行运行,如下所示

dotnet run --project ./<output-path>/build.fsproj <build-target-to-run>

示例包括

dotnet run --project ./<output-path>/build.fsproj runtests

dotnet run --project ./<output-path>/build.fsproj prerelease

dotnet run --project ./<output-path>/build.fsproj watchdocs

请注意,文档目标假设您已经通过fsdocs管理了一个 docs 文件夹。

编写构建执行的脚本

在项目根目录中,您可以创建以下脚本以便输入更少的内容

  • build.cmd:

    @echo off
    cls
    
    dotnet run --project ./build/build.fsproj %*
    
  • build.sh (使用 chmod u+x 使其可执行)

    #!/usr/bin/env bash
    
    set -eu
    set -o pipefail
    
    dotnet run --project ./build/build.fsproj "$@"
    

设置单个项目版本和版本说明

自 v3.0.0 版起,该模板支持每个项目单独的项目版本和版本说明。

在包含具有解耦版本的项目的 monorepo 中,这很有用,而不是在每个发布中为所有项目使用相同的版本。

有关使用这种设置的较大项目的示例,请参阅Plotly.NET 的构建流程

要启用此功能,在创建模板时使用 --individual-package-versions 标志。

其他设置与基本用法相似,区别在于您必须使用 ProjectInfo 类型在 ProjectInfo.fs 中指定项目和测试项目。

let projects = 
    [
        // add relative paths (from project root) to your projects here, including individual reslease notes files
        // e.g. ProjectInfo.create("MyProject", "src/MyProject/MyProject.fsproj", "src/MyProject/RELEASE_NOTES.md") // a project with individual release notes
    ]

let testProjects = 
    [
        // add relative paths (from project root) to your testprojects here
        // e.g. ProjectInfo.create("MyTestProject", "tests/MyTestProject/MyTestProject.fsproj") // test projects do not have release notes.
    ]

NuGet 软件包

本软件包没有被任何 NuGet 软件包使用。

GitHub 仓库

本软件包没有被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
4.1.0 2,183 1/3/2024
4.0.0 140 1/3/2024
3.1.0 466 8/20/2023
3.0.0 194 8/20/2023
2.0.0 611 2/2/2023
1.1.0 483 7/27/2022
1.0.0 453 3/8/2022

修复 tfm 参数无效的问题