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.
]
-
net8.0
- FSharp.Core (>= 8.0.100)
NuGet 软件包
本软件包没有被任何 NuGet 软件包使用。
GitHub 仓库
本软件包没有被任何流行的 GitHub 仓库使用。
修复 tfm 参数无效的问题