Closed yazeedobaid closed 1 year ago
I just want to drop a "very nice"! I like all of the changes, good job :)
Thanks Matthias!
One thing, can we have staging domain for FAKE linked to FakeBuild/fake-staging repository? Since I have pushed the most recent documentation version - 5.23.1 - to the GitHub pages branch on that repository, and in the new website, I'm linking to the staging domain for older FAKE documentation.
@yazeedobaid Sure, it seems like the domain move has went through, but the nameservers might still be configured to my cloudflare account so I can try to setup the records (though I'm not sure if they will work in a couple of days).
Currently we have CNAME | staging | fake-staging.github.io
but we can also add more subdomains or change it. What do you have in mind and which records do we need? Feel free to change stuff as needed :)
@matthid What I'm thinking about is putting FAKE 5 and older documentation on the staging repository gh-pages
branch. And link the staging domain to that repository. I went to the repository settings to add the domain but didn't work since the domain is already used, maybe it is linked to another repository?
The staging repository has fakebuild.github.io/fake-staging
domain, if we add that to nameservers will it work?
I added the CNAME from staging.fake.build to fakebuild.github.io and it seems to have done something. I assume we also need to change the CNAME-file on the branch https://github.com/fakebuild/fake-staging/blob/gh-pages/CNAME . I changed it manually for testing. The docs I read: https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain Please test if this is the configuration you need :)
The staging site still displays docs with version 5.16.2-alpha.1265
. However, the gh-pages
branch on the staging repository has docs with the latest version; 5.23.1
. So it seems another repository is linked to that domain maybe? I tried to follow the steps in the link you sent, and tried to enter the custom domain in the pages section in repository settings and got an error that the domain is already taken.
I followed the steps in this article (Verifying your custom domain for GitHub Pages) as well and didn't find any custom domains registered on FakeBuild account or my personal account. If we cannot solve it we can create a new sub-domain and link it to the staging repository, maybe something like v5.fake.build
?
Hm you are right, I have no clue which repository is associated by staging.fake.build
. But just as suggested I added a CNAME for v5.fake.build
to fakebuild.github.io
and it seems to work.
IIRC I had a staging for the documentation generation and I always assumed it would be the https://github.com/FakeBuild/fake-staging repository (and in fact the build would automatically push there). Maybe something changed and the domain was never released and now there is a zombie site there...
I found that the release was real on the staging project:
But I can't find the build/release-logs or anything, maybe I ran it locally and deleted the release afterwards. I'm quite sure that I most likely used the staging repository, because the version in my personal fork (https://github.com/matthid/FAKE/tree/gh-pages -> http://matthid.de/FAKE/) is even pre Fake5 :)
Also that is how the staging-release was configured:
Probably a GitHub bug but if that other subdomain is OK, we can use that. Maybe now after playing around the other one might be freed up eventually, we will see.
Yes, the new subdomain is OK, thanks Matthias.
Description
This PR introduces FAKE v6! This new major release lays the foundation for future releases of FAKE and move a step closer to complete the transition that started in FAKE v5. We have removed the obsolete API's and replaced there usages with alternatives, updated dependencies, polished some API's, and refreshed the website!
The above screenshot is from the new FAKE website! You can check it out here fake-next.
FAKE v6 focuses on FAKE modules and repository. We wanted this release to lay foundation for future development and releases of FAKE to be much easier and streamlined. In addition, this release move one step closer to complete the transition that started from FAKE v5 to move FAKE codebase to a modular approach.
The main points that this release addresses are the following:
Following sections explain each point in more details.
Update dependencies of repository
FAKE was lacking behind the tools it uses as dependencies, especially, F# compiler services and Paket. FAKE v6 cleans the dependencies in
paket.dependencies
and upgrade them to newer versions. However, not every upgrade is smooth and direct! After upgrading dependencies, including F# compiler services to latest major version, 41. The runner using reference assemblies for Net Standard 2.0 stopped working.As a recap, in FAKE v5 we supported .NET 6 reference assemblies in FAKE runner in addition to .NET STANDARD 2.0, so uses can opt-in to use .NET 6 references assemblies when running scripts using FAKE runner. However, updating the F# compiler services dependency, broke the support for .NET STANDARD 2.0 reference assemblies in the runner. We tried to solve it, but with no luck. The error we get is the following:
The error is a strange one since the
printfn
method in F# didn’t change over the years, so not finding it is a bit strange. We debugged it but didn’t reach a point, so we decided to drop the support for Net Standard reference assemblies from runner. This move has the effect of requiring that, .NET SDK v6 to exists on the machine to be able to use FAKE runner.By that, FAKE runner will have a minimum requirement of .NET v6 SDK. This new requirement has been added to the README file of the repository under a new section called requirements. Also, we updated the contribution guide to add the other possible ways that FAKE modules can be used in addition to using FAKE runner. These new approaches are being adopted by community to overcome some limitations on the runner. Especially, when upgrading to a new version of .NET.
Obsolete APIs
A lot of modules in FAKE uses obsolete API's from other part of the codebase, especially from the process module. FAKE v6 removed the obsolete API's in the process module and replace their usage in other parts of the codebase with alternatives.
Not only API's from process module were removed, but other API's that were marked with obsolete attribute as well. We have documented all these changes and grouped them by module. Please refer to the last section on this page to see the changes in each module [Modules Changes].
FAKE Build Enhancements
The build file in FAKE was cluttered by a lot of things that are now not used, so dealing with the file is somehow a little hard. For example, the script supports running the build on multiple CI providers, which was the case before we switch to GitHub actions. But now the support for other providers is not needed, hence we can remove a good amount of unused code. This with a long of other changes we did to the script.
Another major change was to remove all the handling for
AssemblyInfo.fs
files from script and modules. In which FAKE now uses aDirectory.Build.props
file for build information instead of scatteredAssemblyInfo.fs
files. The main reason we did this change was that, when we open anAssemblyInfo.fs
file in one of the modules, the information is old and irrelevant! - the dates and the assembly version. They are from the first time the module is published. The reader need to go to build script to understand what is going on and how new data is set. In addition, the build script modify the GIT tree to remove these files from GIT when adding the new information and then revert changes again once done. TheDirectory.Build.props
file removes all of these steps in favor of one file that .NET take and use in build, and the file is always up-to-date with information from build script directly.Following points present the changes went in FAKE's
build.fsx
file and build process of FAKE in general:Directory.Build.props
file at the root of the repository as a root level MSBuild properties file for projects in FAKE.sln This file include top level MSBuild parameters, including:SourceRoot
which is set root directory of FAKE repositorySourceRevisionId
which is set to current date and time. Used in FAKE runner hintsIncludeSourceRevisionInInformationalVersion
which is set totrue
. This field is used in combination withSourceRevisionId
which is set to current date and time. So MSBuild append the value inSourceRevisionId
toVersion
property when specifiedSourceRevisionId
to only set build time to be used in FAKE runner hints., but to be available in runtime for FAKE runner. Please see this link for relation between themDirectory.Build.props
insrc\app
with specific information for FAKE source projects. This file include properties for NuGet pack to use, like project description, authors, logo, README, etc.. Guidelines in this link were followed in the processAssemblyInfo.fs
files in projects in FAKE.sln in favor ofDirectory.Build.props
files added.Since now we have removed
AssemblyInfo
files from FAKE projects, we need to remove any code that reference them, following are the affected places:Target module, which uses information in
AssemblyInfo
to display version of target module in FAKE. Replaced withFake.Runtime.Environment
which contains a reference toAssemblyInfo
file to display FAKE version, replaced with:Fake.Runtime.FakeRuntimeHints
which displays the upgrade hint for FAKE runner. Now this gets the build time of the assembly. To get assembly build time we have added theSourceRevisionId
variable in build (see point number 1 b and c) above, and extract it in FAKE hint file.Enhanced
build.fsx
script targets as follows:Removed targets:
SetAssemblyInfo
UnskipAssemblyInfo
UnskipAndRevertAssemblyInfo
Release_Staging
Renamed targets:
BootstrapTestDotNetCore
→BootstrapFake
DotNetCoreCreateChocolateyPackage
→DotNetCreateChocolateyPackage
DotNetCorePushChocolateyPackage
→DotNetPushChocolateyPackage
DotNetCoreCreateDebianPackage
→DotNetCreateDebianPackage
_DotNetPackage
→DotNetCreateNuGetPackage
DotNetCorePushNuGet
→DotNetPushToNuGet
PrintColors
→BootstrapFake_PrintColors
FailFast
→BootstrapFake_FailFast
_StartDnc
→BeforeBuild
_AfterBuild
→AfterBuild
FastRelease
→GitHubRelease
New targets:
CheckFormatting
Removed
AssemblyInfo
variables and related code in favor ofDirectory.Build.props
Removed code for other build servers handling since now we use GitHub actions only for releases
Netstandard
2.0 already covers it. Please check this linkFake-choco-template
file to use new FAKE logo image.FAKE new Website
During the dependency update, we faced an issue in FSDocs (formerly FSFormatting). FAKE was using 4.x version of the library, and currently released version is 16.x! The library has changed a lot in which a lot of the steps FAKE uses to generate the website were removed from the library. For instance, using Razor pages as templates, the API and command line usage.
This push to a major re-implementation and re-design of the FAKE website from the ground up. We took the chance to do all of that during the update of FSDocs library!
So, from FAKE v6, we now have a new module;
Fake.DotNet.Fsdocs
, andFake.DotNet.FSFormatting
has been removed. The new module uses the new API from FSDocs and it is used in generating the new website.The stack and details of the new website are added to the contribution guide page, please refer to that page to get more details new site.
One other major detail is that, FSDocs now defaults to XML syntax as a documentation blocks for code. On the other hand, FAKE codebase uses markdown syntax. Which caused problems in generating the new site and F# best practice now uses XMl syntax as a documentation blocks as explained in Recommended XML doc extensions for F# documentation tooling. So we took the chance once again to convert the documentation from markdown syntax to XML syntax. For example, a doc block like this one:
Is converted to the following XML syntax:
General Enhancements
fake.sh
filerelease-website.cmd
file.circleci
directoryFake-choco-template.nuspec
by using new logo image of FAKE and referencing repository under FSProjects organizationbuild_and_test
GitHub workflow to be able to get artifacts, especially website for build actions.FAKE now uses Fantomas as a styling tool
FAKE v6 adds Fantomas as a styling and code formatter tool. The tool uses the official F# style guide. Additions to FAKE repository include a new build target to check formatting of the codebase, the
CheckFormatting
target. More details are added to contribution guide page, please refer to that page to get more details.Modules Changes
Following sub-sections present changes made to FAKE modules.
Modules Changes:
### `Fake.Api.HockeyApp` → Removed the module since HockeyApp has been discontinued and now Microsoft has replaced it with AppCenter. ### `Fake.Api.GitHub` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Api.Slack` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Removed `System.Net.Http` from proj file since it was used for Net Framework. Now module uses `System.Net` ### `Fake.Azure.CloudServices` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `Process.shellExec` with `CreateProcess` API ### `Fake.Azure.Emulators` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.execSimple` with `CreateProcess` API ### `Fake.Azure.Kudu` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Enahnce code by using a type for Zip deploy parameters → Replaced `Process.execWithResult` with `CreateProcess` API ### `Fake.Azure.WebJobs` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `System.Net.Http` from proj file since it was used for Net Framework. Now module uses `System.Net` ### `Fake.Build.CMake` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Changed `Fake.Build.CMake.getGenerateArguments` and make it `internal` in favor of removing omit comment and replaced with visible to. ### `Fake.BuildServer.AppVeyor` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.quoteIfNeeded` with `StringBuilder.appendQuotedIfNotNull` since `quoteIfNeeded` is deprecated → Removed `PullRequestRepoName` environment variable since it is not defined by AppVeyor anymore → Removed `PullRequestRepoBranch` environment variable since it is not defined by AppVeyor anymore ### `Fake.BuildServer.Bitbucket` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Removed `RepoOwner` environment variable since it is not defined by Bitbucket anymore ### `Fake.BuildServer.GitHubActions` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.BuildServer.GitLab` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.BuildServer.TeamCity` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.BuildServer.TeamFoundation` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Enhance code by adding a new type `LogDetailData` to hold internal data before logging instead of calling internal method with 10 or more parameters. Now it uses a type ### `Fake.BuildServer.Travis` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Core.CommandLineParsing` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Core.Context` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `Fake.Core.Context.getFakeVar` since it is deprecated, alternative is `Fake.Core.FakeVar.getFakeVar` → Removed `Fake.Core.Context.removeFakeVar` since it is deprecated, alternative is `Fake.Core.FakeVar.removeFakeVar` → Removed `Fake.Core.Context.setFakeVar` since it is deprecated, alternative is `Fake.Core.FakeVar.setFakeVar` → Removed `Fake.Core.Context.fakeVar` since it is deprecated, alternative is `Fake.Core.FakeVar.fakeVar` → Removed `Fake.Core.Context.fakeVarAllowNoContext` since it is deprecated, alternative is `Fake.Core.FakeVar.fakeVarAllowNoContext` ### `Fake.Core.DependencyManager.Paket` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Core.Environment` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `Fake.Core.BuildServer.verbose` since it is deprecated, alternative is `Trace.isVerbose ()` → Removed `Fake.Core.Environment.environVarsWithMode` since it is deprecated, alternative is `Fake.Core.Environment.environVars` → Removed `Fake.Core.Environment.setBuildParam` since it is deprecated, alternative is `Fake.Core.Environment.setEnvironVar` → Removed `Fake.Core.Environment.hasBuildParam` since it is deprecated, alternative is `Fake.Core.Environment.hasEnvironVar` → Removed `Fake.Core.Environment.getBuildParamOrDefault` since it is deprecated, alternative is `Fake.Core.Environment.environVarOrDefault` → Removed `Fake.Core.Environment.getBuildParam` since it is deprecated, alternative is `Fake.Core.Environment.environVarOrDefault` → Removed `Fake.Core.Environment.isDotnetCore` since it is deprecated, alternative is `Fake.Core.Environment.isDotNetCore` ### `Fake.Core.FakeVar` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Core.Process` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `Fake.Core.ProcStartInfo.Empty` since it is deprecated, alternative is `ProcStartInfo.Create` → Removed `Fake.Core.CreateProcess.fromRawWindowsCommandLine` since it is deprecated, alternative is `Fake.Core.CreateProcess.fromRawCommandLine` → Removed `Fake.Core.Process.startProcess` since it is deprecated, alternative is `Fake.Core.Process.rawStartProcess` → Removed `Fake.Core.Process.getProc` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.execRaw` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.execWithResult` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.execSimple` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.execElevated` since it is deprecated, no alternative since it is not possible in .NET Core anymore → Removed `Fake.Core.Process.fireAndForget` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.directExec` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.start` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.quote` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.quoteIfNeeded` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.toParam` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.UseDefaults` since it is deprecated, alternative is built-in `id` → Removed `Fake.Core.Process.stringParam` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.multipleStringParams` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.optionParam` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.boolParam` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.parametersToString` since it is deprecated, alternative is `Arguments` and `Args` modules/types → Removed `Fake.Core.Process.findFiles` since it is deprecated, alternative is `ProcessUtils.findFiles` → Removed `Fake.Core.Process.tryFindFile` since it is deprecated, alternative is `ProcessUtils.tryFindFile` → Removed `Fake.Core.Process.findFile` since it is deprecated, alternative is `ProcessUtils.findFile` → Removed `Fake.Core.Process.findFilesOnPath` since it is deprecated, alternative is `ProcessUtils.findFilesOnPath` → Removed `Fake.Core.Process.tryFindFileOnPath` since it is deprecated, alternative is `ProcessUtils.tryFindFileOnPath` → Removed `Fake.Core.Process.appSettings` since it is deprecated, no alternative since it is not possible in .NET Core anymore → Removed `Fake.Core.Process.tryFindTool` since it is deprecated, alternative is `ProcessUtils.tryFindTool` → Removed `Fake.Core.Process.tryFindPath` since it is deprecated, alternative is `ProcessUtils.tryFindPath` → Removed `Fake.Core.Process.findPath` since it is deprecated, alternative is `ProcessUtils.findPath` → Removed `Fake.Core.Process.asyncShellExec` since it is deprecated, alternative is `CreateProcess` API → Removed `Fake.Core.Process.killProcessById` since it is deprecated, alternative is `Fake.Core.Process.killById` → Removed `Fake.Core.Process.getProcessesByName` since it is deprecated, alternative is `Fake.Core.Process.getAllByName` → Removed `Fake.Core.Process.killProcess` since it is deprecated, alternative is `Fake.Core.Process.killAllByName` → Removed `Fake.Core.Process.ProcStartInfo` since it is deprecated, alternative is `Fake.Core.ProcStartInfo` → Removed `Fake.Core.Process.ExecParams` since it is deprecated, alternative is `Fake.Core.ExecParams` → Removed `Fake.Core.Process.ProcessResult` since it is deprecated, alternative is `Fake.Core.ProcessResult` → Removed `Fake.Core.Process.ConsoleMessage` since it is deprecated, alternative is `Fake.Core.ConsoleMessage` → Changed implementation of `shellExec` to use `CreateProcess` API → Changed implementation of `AsyncExec` to use `CreateProcess` API ### `Fake.Core.ReleaseNotes` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Core.SemVer` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Core.String` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Core.Target` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Removed `Fake.Core.TargetModule.DoNothing` since it is deprecated, alternative is `ignore` → Removed `Fake.Core.TargetModule.runAndGetContext` since it is deprecated, alternative is `Target.WithContext.run` → Removed `Fake.Core.TargetModule.Description` since it is deprecated, alternative is `Fake.Core.TargetModule.description` → Update target module version option to use reflection on target type to from Target module assembly instead of using informational version. Since now we use `Directory.Build.props` instead of `AssemblyInfo` files. ### `Fake.Core.Tasks` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Core.Trace` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `Fake.Core.Trace.openTag` since it is deprecated, alternative is `traceTag` and `use` to properly call `closeTag` in case of exceptions → Removed `Fake.Core.Trace.closeTag` since it is deprecated, alternative is `traceTag` and `use` to properly call `closeTag` in case of exceptions → Removed `Fake.Core.Trace.traceStartTarget` since it is deprecated, alternative is `traceTarget` and `use` to properly call `traceEndTask` in case of exceptions → Removed `Fake.Core.Trace.traceEndTarget` since it is deprecated, alternative is `traceTarget` and `use` to properly call `traceEndTask` in case of exceptions → Removed `Fake.Core.Trace.traceStartTask` since it is deprecated, alternative is `traceTask` and `use` to properly call `traceEndTask` in case of exceptions → Removed `Fake.Core.Trace.traceEndTask` since it is deprecated ### `Fake.Core.UserInput` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Core.Vault` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Core.Xml` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Renamed `getChilds` to `getSubNodes` to match naming of related method `getSubNode` → Enabled and remove obsolete warning on `XslTransformer` , `XslTransform` & `XmlTransform` for Net Standard since they are now available for Net Standard. ### `Fake.Documentation.DocFx` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated. → Replaced `Process.execSimple` with `CreateProcess` API since it is deprecated. ### `Fake.DotNet.AssemblyInfo` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `StringAttributeEx` since it was deprecated, alternative is `StringAttributeWithStatic` ### `Fake.DotNet.Cli` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `Fake.DotNet.Cli.Preview2ToolingOptions` since it is deprecated → Removed `Fake.DotNet.Cli.LatestPreview4ToolingOptions` since it is deprecated → Removed `Fake.DotNet.Cli.RC4_004771ToolingOptions` since it is deprecated → Removed `Fake.DotNet.Cli.RC4_004973ToolingOptions` since it is deprecated → Removed `Fake.DotNet.Cli.Release_1_0_4` since it is deprecated → Removed `Fake.DotNet.Cli.Release_2_0_0` since it is deprecated → Removed `Fake.DotNet.Cli.Release_2_0_3` since it is deprecated → Removed `Fake.DotNet.Cli.Release_2_1_4` since it is deprecated → Removed `Fake.DotNet.Cli.Release_2_1_300_RC1` since it is deprecated → Removed `Fake.DotNet.Cli.Release_2_1_300` since it is deprecated → Removed `Fake.DotNet.DotNet.InfoOptions.Default` since it is deprecated, alternative is `Create` → Removed `Fake.DotNet.DotNet.RestoreOptions.Default` since it is deprecated, alternative is `Options.Create` → Replaced `Process.execSimple` in `install` API with `CreateProcess` API → Removed `Fake.DotNet.DotNet.PublishOptions.Default` since it is deprecated, alternative is `PublishOptions.Create` → Removed `Fake.DotNet.DotNet.BuildOptions.Default` since it is deprecated, alternative is `BuildOptions.Create` → Removed `Fake.DotNet.DotNet.PackOptions.Default` since it is deprecated, alternative is `PackOptions.Create` → Removed `Fake.DotNet.DotNet.TestOptions.Default` since it is deprecated, alternative is `TestOptions.Create` → Removed `Fake.DotNet.DotNet.Options.Default` since it is deprecated, alternative is `Options.Create` ### `Fake.DotNet.Fsc` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `SourceCodeServices` with `FSharpDiagnostic` as a result of updating F# compiler services. And map `FSharpDiagnosticSeverity.Hidden` and `FSharpDiagnosticSeverity.Info` as warning messages ### `Fake.DotNet.FSFormatting` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Deprecated module APIs in favor of new module `Fake.DotNet.Fsdocs` which will support newest `fsdocs` tool ### `Fake.DotNet.Fsdocs` → New module added → Added `[Fsdocs.build](http://Fsdocs.build)` API to call build command of Fsdocs to process files and generate documentation → Added `[Fsdocs.watch](http://Fsdocs.watch)` API to call watch command of Fsdocs to watch generated documentation ### `Fake.DotNet.Fsi` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `SourceCodeServices` with `FSharpDiagnostic` as a result of updating F# compiler services. And map `FSharpDiagnosticSeverity.Hidden` and `FSharpDiagnosticSeverity.Info` as warning messages → Replaced `Process.findPath` in `pathToFsiExe` with `CreateProcess` API since it is deprecated → Replaced `Process.execWithResult` in `execRaw` with `CreateProcess` API since it is deprecated ### `Fake.DotNet.FxCop` → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.DotNet.ILMerge` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.DotNet.Mage` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.execSimple` in `call` with `CreateProcess` API since it is deprecated ### `Fake.DotNet.MSBuild` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Removed `BuildException` since it is replaced with `MSBuildException` → Removed `MSBuildExeFromVsWhere` since it is for legacy FAKE → Replaced `Process.tryFindFileOnPath` in `exactPathOrBinaryOnPath` with `ProcessUtils.tryFindFileOnPath` since it is deprecated → Replaced `Process.tryFindFileOnPath` in `msBuildExe` with `ProcessUtils.tryFindFileOnPath` since it is deprecated → Replaced `Process.tryFindFile` in `msBuildExe` with `ProcessUtils.tryFindFile` since it is deprecated → Removed `Fake.DotNet.MSBuildParams.Empty` since it is deprecated, alternative is `Fake.DotNet.MSBuildParams.Create` → Changed `Fake.DotNet.MSBuild.msBuildExe` and removed obsolete attribute since it is used in other areas in FAKE → Renamed `xname` with `xName` to follow FAKE API guideline → Removed `processReferences` since it is deprecated → Changed `Fake.DotNet.MSBuild.getProjectReferences` and removed obsolete attribute since it is used in other areas in FAKE. Marked it as private → Removed `serializeMSBuildParams` since it is deprecated → Replaced `Process.execWithResult` and `Process.execSimple` with `CreateProcess` API since they are deprecated → Enhanced code quality by extracting MSBuild execution to an internal method instead of duplicating call → Replaced `Process.toParam` with `StringBuilder.appendQuotedIfNotNull` since `quoteIfNeeded` is deprecated → Opened `buildWithRedirect` as a public API ### `Fake.DotNet.NuGet` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `Process.execWithResult` and `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Paket` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.DotNet.Testing.Coverlet` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.DotNet.Testing.DotCover` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Testing.Expecto` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Testing.MSpec` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.DotNet.Testing.MSTest` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Changed `Fake.DotNet.Testing.MSTest.msTestExe` by marking it as internal → Replaced `Process.tryFindFile` with `ProcessUtils.tryFindLocalTool` since it is deprecated → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Testing.NUnit` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `Tools.findToolFolderInSubPath` and `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated → Replaced `Process.execRaw` and `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Testing.OpenCover` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.DotNet.Testing.SpecFlow` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated → Removed SpecFlow APIs for SpecFlow prior to v2.4, and replaced `SpecFlowNext` APIs with `SpecFlow` ### `Fake.DotNet.Testing.VSTest` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Changed VSTest module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline ### `Fake.DotNet.Testing.XUnit2` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated → Replaced `Process.execWithResult` and `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Xamarin` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated → Replaced `Process.execWithResult` with `CreateProcess` API since they are deprecated ### `Fake.DotNet.Xdt` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Installer.InnoSetup` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.Installer.Squirrel` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.Installer.Wix` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.IO.FileSystem` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced ref-cell operators with alternatives since they are deprecated → Removed `FileIncludes` module since it is deprecated. Including its `Include` and `SetBaseDir` APIs, alternative is `GlobbingPattern` module → Removed `Fake.IO.Globbing.Tools` module since it is deprecated and replaced with Process module. Including its `@@` operator and `findToolInSubPath`, `tryFindToolFolderInSubPath`, & `findToolFolderInSubPath` APIs → Added tracing statements - `Trace.traceVerbose` - to `Shell` module APIs → Removed `Fake.IO.Shell.CopyFile` since it is deprecated, alternative is `Fake.IO.Shell.copyFile` → Removed `Fake.IO.Shell.CopyFileIntoSubFolder` since it is deprecated, alternative is `Fake.IO.Shell.copyFileIntoSubFolder` → Removed `Fake.IO.Shell.CopyFileWithSubfolder` since it is deprecated, alternative is `Fake.IO.Shell.copyFileWithSubfolder` → Removed `Fake.IO.Shell.Copy` since it is deprecated, alternative is `Fake.IO.Shell.copy` → Removed `Fake.IO.Shell.CopyTo` since it is deprecated, alternative is `Fake.IO.Shell.copyTo` → Removed `Fake.IO.Shell.CopyCached` since it is deprecated, alternative is `Fake.IO.Shell.copyCached` → Removed `Fake.IO.Shell.Rename` since it is deprecated, alternative is `Fake.IO.Shell.rename` → Removed `Fake.IO.Shell.SilentCopy` since it is deprecated, alternative is `Fake.IO.Shell.silentCopy` → Removed `Fake.IO.Shell.CopyFiles` since it is deprecated, alternative is `Fake.IO.Shell.copyFiles` → Removed `Fake.IO.Shell.CopyDir` since it is deprecated, alternative is `Fake.IO.Shell.copyDir` → Removed `Fake.IO.Shell.CleanDir` since it is deprecated, alternative is `Fake.IO.Shell.cleanDir` → Removed `Fake.IO.Shell.CleanDirs` since it is deprecated, alternative is `Fake.IO.Shell.cleanDirs` → Removed `Fake.IO.Shell.DeleteDir` since it is deprecated, alternative is `Fake.IO.Shell.deleteDir` → Removed `Fake.IO.Shell.DeleteDirs` since it is deprecated, alternative is `Fake.IO.Shell.deleteDirs` → Removed `Fake.IO.Shell.AppendTextFilesWithEncoding` since it is deprecated, alternative is `Fake.IO.Shell.appendTextFilesWithEncoding` → Removed `Fake.IO.Shell.AppendTextFiles` since it is deprecated, alternative is `Fake.IO.Shell.appendTextFiles` → Removed `Fake.IO.Shell.CompareFiles` since it is deprecated, alternative is `Fake.IO.Shell.compareFiles` → Removed `Fake.IO.Shell.GeneratePatchWithFindOldFileFunction` since it is deprecated, alternative is `Fake.IO.Shell.generatePatchWithFindOldFileFunction` → Removed `Fake.IO.Shell.GeneratePatch` since it is deprecated, alternative is `Fake.IO.Shell.generatePatch` → Removed `Fake.IO.Shell.TestDir` since it is deprecated, alternative is `Fake.IO.Shell.testDir` → Removed `Fake.IO.Shell.TestFile` since it is deprecated, alternative is `Fake.IO.Shell.testFile` → Removed `Fake.IO.Shell.CopyRecursive` since it is deprecated, alternative is `Fake.IO.Shell.copyRecursive` → Removed `Fake.IO.Shell.CopyRecursiveTo` since it is deprecated, alternative is `Fake.IO.Shell.copyRecursiveTo` → Removed `Fake.IO.Shell.CopyRecursive2` since it is deprecated, alternative is `Fake.IO.Shell.copyRecursive2` → Removed `Fake.IO.Shell.MoveFile` since it is deprecated, alternative is `Fake.IO.Shell.moveFile` → Removed `Fake.IO.Shell.WriteConfigFile` since it is deprecated, alternative is `Fake.IO.Shell.writeConfigFile` → Removed `Fake.IO.Shell.ReplaceInFiles` since it is deprecated, alternative is `Fake.IO.Shell.replaceInFiles` → Removed `Fake.IO.Shell.RegexReplaceInFileWithEncoding` since it is deprecated, alternative is `Fake.IO.Shell.regexReplaceInFileWithEncoding` → Removed `Fake.IO.Shell.RegexReplaceInFilesWithEncoding` since it is deprecated, alternative is `Fake.IO.Shell.regexReplaceInFilesWithEncoding` → Changed `Fake.IO.File.getEncoding` by removing case for UTF7 since it is deprecated and marked as unsafe. ### `Fake.IO.Zip` ### `Fake.JavaScript.Npm` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Process.tryFindFileOnPath` with `ProcessUtils.tryFindFileOnPath` since it is deprecated → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.JavaScript.TypeScript` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Enhanced code by extracting logic to resolve TypeScript compiler to a dedicated method → Update TypeScript parameters default values to reflect compiler defaults, including `ECMAScript` from `ES3` to `ECMAScript.ESNext`, `ModuleGeneration` from `CommonJs` to `ModuleGeneration.ESNext` ### `Fake.JavaScript.Yarn` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Net.FTP` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Net.Http` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Changed internal `getAsync` to handle HTTP 404 errors gracefully and return a null string to indicate there is no content ### `Fake.netcore` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Runtime` → Replaced `SourceCodeServices` with `CodeAnalysis` and `Tokenization` as a result of updating F# compiler services → After upgrading F# compiler services, it will try to clean up the script directory after running the script, which will delete the `.fake/script.fsx` directory. A workaround has been impelmnted that let compiler compiles to a temporary directory, then we move the compiled assmebly to FAKE script directory, and then compiler can delete the temporary directory without affecting FAKE cache. → Replaced ref-cell operators with alternatives since they are deprecated ### `Fake.Sql.DacPac` → Deleted the module since it is not pushed to NuGet and was deprecated in favor of `Fake.Sql.SqlPackage` module which is a redesign of it ### `Fake.Sql.SqlServer` → Deleted the module since it is not pushed to NuGet and was deprecated in favor of `Fake.Sql.SqlPackage` module which is a redesign of it ### `Fake.Sql.SqlPackage` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Testing.Common` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Testing.Fixie` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Renamed `Fixie` API to `run` to follow FAKE API guidelines ### `Fake.Testing.ReportGenerator` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.Testing.SonarQube` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Tools.Git` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Changed `Branches` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `CommandHelper` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Replaced `Process.findPath` with `ProcessUtils.findPath` since it is deprecated → Replaced `Process.execWithResult` in `runGitCommand` with `CreateProcess` API since it is deprecated → Replaced `Process.fireAndForget` in `fireAndForgetGitCommand` with `CreateProcess` API since it is deprecated → Replaced `Process.directExec` in `directRunGitCommand` with `CreateProcess` API since it is deprecated → Changed `Commit` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `CommitMessage` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `FileStatus` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Information` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Merge` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Rebase` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Repository` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Fake.Tools.Git.Repository.fullclean` and marking it as obsolete since it is not honoring FAKE API guidelines. Alternative is `Fake.Tools.Git.Repository.fullClean` → Changed `Reset` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `SanityChecks` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `SHA1` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Staging` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Stash` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Changed `Submodule` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline ### `Fake.Tools.GitVersion` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Changed `GitVersion` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.Tools.Octo` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Changed `Octo` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Replaced `Tools.findToolFolderInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.Tools.Pickles` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Replaced `Tools.findToolInSubPath` with `ProcessUtils.tryFindLocalTool` since it is deprecated ### `Fake.Tools.Rsync` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Changed write patch option from `--write-bratch=` to `--write-batch=` , fix type → Replaced `Process.execRaw` with `CreateProcess` API since they are deprecated ### `Fake.Tools.ServiceControl` → Removed module since it is obsolete ### `Fake.Tools.SignTool` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake.Windows.Chocolatey` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs → Changed `Choco` module by adding `RequiredQualifiedAccess` attribute to follow FAKE API guideline → Replaced `Process.execSimple` with `CreateProcess` API since they are deprecated ### `Fake.Windows.Registry` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target → Add API documentation to module APIs ### `Fake-cli` → Removed `AssemblyInfo.fs` file → Added Net6 target and removed net472 target ### `Fake.Tracing.NAntXml` → Removed module since it is deprecated and not added to FAKE solutionNotes
That is all to it for FAKE v6, enjoy!