FAKE v6 is finally here -- 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 their usages with alternatives, updated dependencies, polished some API's, and refreshed the website!

The above screenshot is from the new FAKE website!
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:
- Update dependencies of repository.
- Remove obsolete APIs and replace their usage with alternative suggested API's,
- FAKE build enhancements,
- Update FAKE website to use new FSDocs library and give it a new fresh look,
- General Enhancements,
- Add Fantomas tool to FAKE codebase as a styling and formatter tool.
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:
MissingMethodException: Method not found: 'Void Microsoft.FSharp.Core.PrintfFormat`5..ctor(System.String)'.. Actual value was false but had expected it to be true.
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.
We choose .NET 6 reference assemblies since .NET 6 is the current LTS release 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 replaced 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
a Directory.Build.props file for build information instead of scattered AssemblyInfo.fs files. The main reason we did this change
was that, when we open an AssemblyInfo.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. The Directory.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:
-
Added
Directory.Build.propsfile 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:- Property
SourceRootwhich is set root directory of FAKE repository SourceRevisionIdwhich is set to current date and time. Used in FAKE runner hints-
IncludeSourceRevisionInInformationalVersionwhich is set totrue. This field is used in combination withSourceRevisionIdwhich is set to current date and time. So MSBuild append the value inSourceRevisionIdtoVersionproperty when specified-
before we used NuGet version which has build date info as well. In FAKE, we have used
SourceRevisionIdto 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 them
-
before we used NuGet version which has build date info as well. In FAKE, we have used
- Add the FAKE logo to output NuGet packages
- Add README file to output NuGet packages
- Property
-
Added another
Directory.Build.propsinsrc\appwith 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 process - Removed all the
AssemblyInfo.fsfiles in projects in FAKE.sln in favor ofDirectory.Build.propsfiles added. -
Since now we have removed
AssemblyInfofiles from FAKE projects, we need to remove any code that reference them, following are the affected places:-
Target module, which uses information in
AssemblyInfoto display version of target module in FAKE. Replaced withlet targetAssembly = Assembly.GetAssembly(typeof<Target>) printfn "Target Module Version: %s" (targetAssembly.GetName().Version.ToString()) -
Fake.Runtime.Environmentwhich contains a reference toAssemblyInfofile to display FAKE version, replaced with:fakeContextAssembly().GetName().Version.ToString() -
Fake.Runtime.FakeRuntimeHintswhich displays the upgrade hint for FAKE runner. Now this gets the build time of the assembly. To get assembly build time we have added theSourceRevisionIdvariable in build (see point #1 b and c) above, and extract it in FAKE hint file.
-
-
Enhanced
build.fsxscript targets as follows:-
Removed targets:
SetAssemblyInfoUnskipAssemblyInfoUnskipAndRevertAssemblyInfoRelease_Staging -
Renamed targets:
BootstrapTestDotNetCore→BootstrapFakeDotNetCoreCreateChocolateyPackage→DotNetCreateChocolateyPackage
DotNetCorePushChocolateyPackage→DotNetPushChocolateyPackageDotNetCoreCreateDebianPackage→DotNetCreateDebianPackage_DotNetPackage→DotNetCreateNuGetPackageDotNetCorePushNuGet→DotNetPushToNuGetPrintColors→BootstrapFake_PrintColorsFailFast→BootstrapFake_FailFast_StartDnc→BeforeBuild_AfterBuild→AfterBuildFastRelease→GitHubRelease -
New targets:
CheckFormatting - Removed
AssemblyInfovariables and related code in favor ofDirectory.Build.props - Removed code for other build servers handling since now we use GitHub actions only for releases
-
- Removed the Net475 target from FAKE projects, since
Netstandard2.0 already covers it. Please check this link - Update
Fake-choco-templatefile 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, and Fake.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
-
Removed the following files or directories since they are not used;
fake.shfilerelease-website.cmdfile.circlecidirectory
- Enhance documentation pages and fix any broken links on them.
- Enhanced Chocolatey NuSpec file
Fake-choco-template.nuspecby using new logo image of FAKE and referencing repository under FSProjects organization - Added publishing of build artifacts to
build_and_testGitHub 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 solution
That is all to it for FAKE v6, enjoy!