From 44750d0de2af1f0acba210b6617f9310ee9356a3 Mon Sep 17 00:00:00 2001 From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com> Date: Sun, 25 Oct 2020 10:05:00 +0200 Subject: [PATCH 01/30] Enables running NUnit 2 tests from dotnet cli (#1205) --- .gitignore | 1 + Build.fsx | 21 ++---------------- References/NUnit.2.6.2/nunit.core.dll | Bin 151552 -> 0 bytes .../NUnit.2.6.2/nunit.core.interfaces.dll | Bin 61440 -> 0 bytes .../AutoFixture.NUnit2.UnitTest.csproj | 8 +++---- .../AutoFixture.NUnit2.csproj | 18 ++------------- build.cmd | 16 ------------- 7 files changed, 9 insertions(+), 55 deletions(-) delete mode 100644 References/NUnit.2.6.2/nunit.core.dll delete mode 100644 References/NUnit.2.6.2/nunit.core.interfaces.dll diff --git a/.gitignore b/.gitignore index 17ac05c9..fa8e0442 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ nCrunchTemp_* # VS Code cache/options .vscode/ +.ionide/ # package files can be ignored because of the NuGet restore **/packages/* diff --git a/Build.fsx b/Build.fsx index 412c2fe1..33370748 100644 --- a/Build.fsx +++ b/Build.fsx @@ -1,4 +1,4 @@ -#r "paket: +#r "paket: nuget Fake.BuildServer.AppVeyor nuget Fake.Core.Environment nuget Fake.Core.Target @@ -30,14 +30,13 @@ open Fake.IO.FileSystemOperators open Fake.Tools; let buildDir = Environment.environVarOrDefault "BUILD_DIR" "build" |> Path.getFullName -let buildToolsDir = buildDir "tools" let testResultsFolder = buildDir "TestResults" |> Path.getFullName let nuGetOutputFolder = buildDir "NuGetPackages" let nuGetPackages = !! (nuGetOutputFolder "*.nupkg") let sourcesDirPath = "src" let solutionPath = sourcesDirPath "All.sln" |> Path.getFullName let buildConfiguration = DotNet.BuildConfiguration.fromEnvironVarOrDefault "BUILD_CONFIGURATION" DotNet.BuildConfiguration.Release -let buildVerbosity = match Environment.environVarOrDefault "BUILD_VERBOSITY" "" |> String.toLower with +let buildVerbosity = match Environment.environVarOrDefault "BUILD_VERBOSITY" "" |> String.toLower with | "quiet" | "q" -> Quiet | "minimal" | "m" -> Minimal | "normal" | "n" -> Normal @@ -167,14 +166,6 @@ Target.create "Build" (fun _ -> Target.create "CleanTestResultsFolder" (fun _ -> Shell.cleanDir testResultsFolder) Target.create "Test" (fun _ -> - let findProjects pattern = System.IO.Directory.GetDirectories("Src", pattern) - let getTestAssemblies framework projDirs = - projDirs - |> Seq.map (fun proj -> !! (sprintf "bin/%s/%s/*Test.dll" (buildConfiguration.ToString()) framework) - |> GlobbingPattern.setBaseDir proj) - |> Seq.collect id - - // DotNet.test does not support -- parameters for now. let result = DotNet.exec id "test" @@ -185,13 +176,6 @@ Target.create "Test" (fun _ -> testResultsFolder) if not result.OK then failwith "test failed" - - findProjects "AutoFixture.NUnit2.*Test" - |> getTestAssemblies "*" - |> Testing.NUnit.Sequential.run (fun p -> { p with StopOnError = false - ShowLabels = false - OutputFile = testResultsFolder "NUnit2TestResult.xml" - ToolPath = buildToolsDir "NUnit.Runners.2.6.2" "tools" }) ) Target.create "CleanNuGetPackages" (fun _ -> @@ -302,7 +286,6 @@ Target.create "AppVeyor_UploadTestReports" (fun _ -> !!"*.trx" |> GlobbingPattern.setBaseDir testResultsFolder |> Seq.map (fun file -> (file, ImportData.Mstest)) - |> Seq.append [(testResultsFolder "NUnit2TestResult.xml", ImportData.Nunit NunitDataVersion.Nunit)] |> shuffle |> Seq.map (fun (file, format) -> async { Trace.publish format file }) |> Async.Parallel diff --git a/References/NUnit.2.6.2/nunit.core.dll b/References/NUnit.2.6.2/nunit.core.dll deleted file mode 100644 index 8e6d9566c1347d99d53bc27c8e2085d3860aa7f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151552 zcmeFad7NcMdH;XKCH?9B+WgCaW!11by%2n0EB?~Ds= zx8sJ2fQoCzeH8cLh6XWFjK&=ucTKdT#+ayyafykEarnMJPu02i+@1!>_m%JOpC9v@ zzUNfcQ%^nh)KgDAwLRyIi(eK*K@b%9d*Fc}xQD0y9cRA}{j-zgfw6lBg1gK2?{`nn z>G$t<{?*sC#&2k*PibEE)bS@@cK!9~_VLTF9B=Npe*Bv2$4@%zyz!@|S6n&W-(T6^ zqdxoOAUM4z3dUC5e0Ema4}x&NYELN$#zX#G?7Cz8`*A!)o#F=_-Mkt7dImd5C;pYY zL+W+h3oJmm^Rzcb*uO6w9R_FV4ZOb-6Bhs576yHb;~q|UJP4>k`(KIhW7?r0nBIQn zGqw}nf32_AxT8ARG#i}YbN_%l zAs2k)^$`v{!huIP@CXMU;lLvtc!UFwaNrRRJi>uTIPeGu{{O@Q&8zvRxoH^m2FX}Y z@V2!*LD^zEKWC3KweAET^zEPi^zAe2%B53QZ2IZWWe2_R38U;42ZUw+lD>reU4x^sSh&o9n=?_GC&=F&^|KI03Q9Ju_>p#3@ z{npq0`+FAdzwAq|9{<%Dn}7bH!c9{@{-^Q>E_!w4)9-)h+4tP_-!J(2A*cWHm|KSb z?2sczk6n9L@Y4^Kt3UYow%RklcKy)iLhuBr>j{Ed7^Q22ppvfRCrZcoO~&~Nf+*e3 zqLjL~rxH&c5GLy_M)3yO1i=kH(*{MdU{MLeXbyH2f{9>gb5BsE9D=o=*$Z%`5yUQD zb8yyFYC$+FXiE@$jd+$AvUnrTXLRJ#g_n|)znJ0OB$^bO5RNcd4vgyV zVTSki)TyD7W@QLR?9w6M(PlUlG8|EG6fmF!N3xMxH&;`;luVVWzGONK;`C&G8Y}Xt zn@GL$3X1N~8wRV|v?K>8cQs5XC9dxc8$Bb7Xkx8IG(%pFCWSmrcY_O=tOfJbuFz~i zl54Xx0d;a9Kj~RLR4ww+scHsG=f@T zLhW)BP!+3V>k!^NDSf4rX;5lq4X?(xzoU85WMOhBpy^@C+1L^${g6n5_LrxYk)}|3 zxTW=Hphs9xsh0Cd3sSE}P=p_==^LYzK_k?H ztt0)#9amHD;k^;P-WVAt#{w3FCUt#bu~bj#&T&xcU!cDYJJu#=ipb!5L3!eMq)q>t z{GCWw`!Ii6A6*YxiKpW4Ag(|_Vyl1Bxp(lSyVinXMB6I+TU8dUm8oc?tt>23t!K)j z+Ca)u(+#CC9fB?ZTh~HNavkkHe;k0xl>{rXb;s4yBkpC*^niO=Yx=FxQ>RlzL8Ct? zZXCI&iiRQlwz#hml)T)(1)AwG$h}lT#qpzROJ?`SsB68qN_W>{dnBiTX*fNVU&aBWX>wCBeGK8Lb;)CS7~5ulhZLlk z4{>rDaXGAmL2*^{M(_@&s8WzfwEmcCEe;h?mQqteCW9J35Y_-C7a$~U8B{#f1efz? z9OpT-ISS|&!GPMhbvngX!dV)xfSTwlO~H8=?60Gg4=C3PyQ)EP{_j%JELv5oVKEx*^u%^u&pSWZq`Hc(UC@Ol6hROuu zS$gdGW}q1tdxmK`A~drI{*yjZLNWiM-r-15EQ{&hj965>Y%Z;gQlrm7tVf$^%?`7Dh@t5J&7M zha7Wln;^bNHB4T@U`KG+y8=c5=@VzKgF}2*jZ(UO#mv^rhj*f93c>t6{3e$Z?ZPld zwjQ+%7y;mUyWzve$rz^l!yx*qX^jb|HKdK5Y*dPcbX)^bqr}^OHY6=pLtn&}ECkO5 zKSV;;WdFPfamAojY{)OyZ$pWN{f$dQORZ~Puu?IlSPkN#-uh77SgEmKS6{Kz8lxnq z^=dInkCCF*s~&B*zFQpL8`Bk4qBSMtM= zQbUPRkBO00x0}u@oxYC4^eG_LOe{|6OtLpO@J`?AqB$;^3F$zVq8Z(}UmHi

{QG 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 diff --git a/References/NUnit.2.6.2/nunit.core.interfaces.dll b/References/NUnit.2.6.2/nunit.core.interfaces.dll deleted file mode 100644 index a966ad52179e4ac5e150d864da493cbfe4700462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 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 Qn1BhGfC-p@2@DCm09u*j=>Px# diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj index cf31d01a..3474a7f7 100644 --- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj +++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj @@ -10,7 +10,10 @@ - + + + + @@ -20,9 +23,6 @@ - - ..\..\References\NUnit.2.6.2\nunit.core.interfaces.dll - diff --git a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj index d90dd791..619dd340 100644 --- a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj +++ b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj @@ -18,20 +18,12 @@ - - - - ..\..\References\NUnit.2.6.2\nunit.core.dll - - - ..\..\References\NUnit.2.6.2\nunit.core.interfaces.dll - - - + + @@ -45,11 +37,5 @@ true content - - - - true - lib\$(TargetFramework) - diff --git a/build.cmd b/build.cmd index 486623a4..9e33005d 100644 --- a/build.cmd +++ b/build.cmd @@ -2,22 +2,6 @@ cls SET SCRIPT_DIR=%~dp0 -SET BUILD_DIR=%SCRIPT_DIR%\build -SET TOOLS_DIR=%BUILD_DIR%\tools -SET NUGET_PATH=%TOOLS_DIR%\nuget.exe - -IF NOT EXIST %TOOLS_DIR%\ ( - mkdir %TOOLS_DIR% -) - -IF NOT EXIST %NUGET_PATH% ( - echo Downloading NuGet.exe ... - powershell -Command "Start-BitsTransfer -Source https://dist.nuget.org/win-x86-commandline/v4.3.0/nuget.exe -Destination %NUGET_PATH%" -) - -IF NOT EXIST "%TOOLS_DIR%\NUnit.Runners.2.6.2\" ( - %NUGET_PATH% install "NUnit.Runners" -Version 2.6.2 -OutputDirectory %TOOLS_DIR% -) dotnet tool restore From c6b871724c57824c8f78b810e9d761b71b04110e Mon Sep 17 00:00:00 2001 From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com> Date: Mon, 8 Nov 2021 20:13:21 +0200 Subject: [PATCH 02/30] Adds NUKE build script (#1299) * Adds NUKE build script * Disables legacy NUnit 2 runner * Allow PRs to increment build number --- .config/dotnet-tools.json | 12 - .gitignore | 8 +- .nuke/build.schema.json | 119 +++++++ .nuke/parameters.json | 4 + Build.fsx | 335 ------------------ GitVersion.yml | 14 + Src/All.sln | 5 + Src/Common.Test.xUnit.props | 11 +- build.cmd | 14 +- build.fsx.lock | 232 ------------ build.ps1 | 69 ++++ build.sh | 62 ++++ build/.editorconfig | 11 + build/Build.CI.AppVeyor.cs | 46 +++ build/Build.cs | 197 ++++++++++ build/Configuration.cs | 16 + build/Integration/AppVeyorExtensions.cs | 70 ++++ build/Integration/BuildTrigger.cs | 11 + build/Integration/BuildTriggerAttribute.cs | 14 + .../EnvironmentVariableAtttribute.cs | 21 ++ build/Integration/TestType.cs | 11 + build/_build.csproj | 20 ++ build/_build.csproj.DotSettings | 27 ++ global.json | 5 + 24 files changed, 744 insertions(+), 590 deletions(-) delete mode 100644 .config/dotnet-tools.json create mode 100644 .nuke/build.schema.json create mode 100644 .nuke/parameters.json delete mode 100644 Build.fsx create mode 100644 GitVersion.yml delete mode 100644 build.fsx.lock create mode 100644 build.ps1 create mode 100755 build.sh create mode 100644 build/.editorconfig create mode 100644 build/Build.CI.AppVeyor.cs create mode 100644 build/Build.cs create mode 100644 build/Configuration.cs create mode 100644 build/Integration/AppVeyorExtensions.cs create mode 100644 build/Integration/BuildTrigger.cs create mode 100644 build/Integration/BuildTriggerAttribute.cs create mode 100644 build/Integration/EnvironmentVariableAtttribute.cs create mode 100644 build/Integration/TestType.cs create mode 100644 build/_build.csproj create mode 100644 build/_build.csproj.DotSettings create mode 100644 global.json diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json deleted file mode 100644 index 509933bd..00000000 --- a/.config/dotnet-tools.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": 1, - "isRoot": true, - "tools": { - "fake-cli": { - "version": "5.20.1", - "commands": [ - "fake" - ] - } - } -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index fa8e0442..56339a6b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,9 @@ nCrunchTemp_* # FAKE - F# Make .fake/ +# NUKE - C# Build +.nuke/temp/ + # JetBrains Rider .idea/ @@ -41,8 +44,9 @@ nCrunchTemp_* *.orig # Temp build artifacts and tools -/build/ -.tmp/ +artifacts/ # VIM tmp files *.swp + +.tmp/ \ No newline at end of file diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json new file mode 100644 index 00000000..b24bd728 --- /dev/null +++ b/.nuke/build.schema.json @@ -0,0 +1,119 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Build Schema", + "$ref": "#/definitions/build", + "definitions": { + "build": { + "type": "object", + "properties": { + "Configuration": { + "type": "string", + "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", + "enum": [ + "Debug", + "Release" + ] + }, + "Continue": { + "type": "boolean", + "description": "Indicates to continue a previously failed build attempt" + }, + "Help": { + "type": "boolean", + "description": "Shows the help text for this build assembly" + }, + "Host": { + "type": "string", + "description": "Host for execution. Default is 'automatic'", + "enum": [ + "AppVeyor", + "AzurePipelines", + "Bamboo", + "Bitrise", + "GitHubActions", + "GitLab", + "Jenkins", + "SpaceAutomation", + "TeamCity", + "Terminal", + "TravisCI" + ] + }, + "NoLogo": { + "type": "boolean", + "description": "Disables displaying the NUKE logo" + }, + "Plan": { + "type": "boolean", + "description": "Shows the execution plan (HTML)" + }, + "Profile": { + "type": "array", + "description": "Defines the profiles to load", + "items": { + "type": "string" + } + }, + "Root": { + "type": "string", + "description": "Root directory during build execution" + }, + "Skip": { + "type": "array", + "description": "List of targets to be skipped. Empty list skips all dependencies", + "items": { + "type": "string", + "enum": [ + "AppVeyorSetBuildVersion", + "AppVeyorUploadTestResults", + "Clean", + "Compile", + "Cover", + "Pack", + "Publish", + "Restore", + "Test", + "Verify" + ] + } + }, + "Solution": { + "type": "string", + "description": "Path to a solution file that is automatically loaded" + }, + "Target": { + "type": "array", + "description": "List of targets to be invoked. Default is '{default_target}'", + "items": { + "type": "string", + "enum": [ + "AppVeyorSetBuildVersion", + "AppVeyorUploadTestResults", + "Clean", + "Compile", + "Cover", + "Pack", + "Publish", + "Restore", + "Test", + "Verify" + ] + } + }, + "TestPartition": { + "type": "string" + }, + "Verbosity": { + "type": "string", + "description": "Logging verbosity during build execution. Default is 'Normal'", + "enum": [ + "Minimal", + "Normal", + "Quiet", + "Verbose" + ] + } + } + } + } +} \ No newline at end of file diff --git a/.nuke/parameters.json b/.nuke/parameters.json new file mode 100644 index 00000000..6a951160 --- /dev/null +++ b/.nuke/parameters.json @@ -0,0 +1,4 @@ +{ + "$schema": "./build.schema.json", + "Solution": "Src/All.sln" +} \ No newline at end of file diff --git a/Build.fsx b/Build.fsx deleted file mode 100644 index 33370748..00000000 --- a/Build.fsx +++ /dev/null @@ -1,335 +0,0 @@ -#r "paket: -nuget Fake.BuildServer.AppVeyor -nuget Fake.Core.Environment -nuget Fake.Core.Target -nuget Fake.Core.Xml -nuget Fake.DotNet -nuget Fake.DotNet.Cli -nuget Fake.DotNet.MsBuild -nuget Fake.DotNet.NuGet -nuget Fake.DotNet.Testing.NUnit -nuget Fake.IO.FileSystem -nuget Fake.IO.Zip -nuget Fake.Tools.Git -nuget Fake.Testing.Common -" - -#load ".fake/build.fsx/intellisense.fsx" - -open System -open System.Text.RegularExpressions - -open Fake.BuildServer; -open Fake.Core; -open Fake.Core.String.Operators -open Fake.Core.TargetOperators -open Fake.DotNet; -open Fake.IO -open Fake.IO.Globbing.Operators -open Fake.IO.FileSystemOperators -open Fake.Tools; - -let buildDir = Environment.environVarOrDefault "BUILD_DIR" "build" |> Path.getFullName -let testResultsFolder = buildDir "TestResults" |> Path.getFullName -let nuGetOutputFolder = buildDir "NuGetPackages" -let nuGetPackages = !! (nuGetOutputFolder "*.nupkg") -let sourcesDirPath = "src" -let solutionPath = sourcesDirPath "All.sln" |> Path.getFullName -let buildConfiguration = DotNet.BuildConfiguration.fromEnvironVarOrDefault "BUILD_CONFIGURATION" DotNet.BuildConfiguration.Release -let buildVerbosity = match Environment.environVarOrDefault "BUILD_VERBOSITY" "" |> String.toLower with - | "quiet" | "q" -> Quiet - | "minimal" | "m" -> Minimal - | "normal" | "n" -> Normal - | "detailed" | "d" -> Detailed - | "diagnostic" | "diag" -> Diagnostic - | _ -> Minimal - - -type BuildVersionCalculationSource = { Major: int; Minor: int; Revision: int; PreSuffix: string; - CommitsNum: int; Sha: string; BuildNumber: int } -let getVersionSourceFromGit buildNumber = - // The --fist-parent flag is required to correctly work for vNext branch. - // Example of output for a release tag: v3.50.2-288-g64fd5c5b, for a prerelease tag: v3.50.2-alpha1-288-g64fd5c5b. - let desc = Git.CommandHelper.runSimpleGitCommand "" "describe --tags --long --abbrev=40 --first-parent --match=v*" - - // Previously repository contained a few broken tags like "v.3.21.1". They were removed, but could still exist - // in forks. We handle them as well to not fail on such repositories. - let result = Regex.Match(desc, - @"^v(\.)?(?\d+)\.(?\d+)\.(?\d+)(?

-\w+\d*)?-(?\d+)-g(?[a-z0-9]+)$",
-                             RegexOptions.IgnoreCase)
-                      .Groups
-
-    let getMatch (name:string) = result.[name].Value
-
-    { Major = getMatch "maj" |> int
-      Minor = getMatch "min" |> int
-      Revision = getMatch "rev" |> int
-      PreSuffix = getMatch "pre"
-      CommitsNum = getMatch "num" |> int
-      Sha = getMatch "sha"
-      BuildNumber = buildNumber
-    }
-
-type BuildVersionInfo = { AssemblyVersion:string; FileVersion:string; InfoVersion:string; NugetVersion:string; CommitHash: string;
-                          Source: Option }
-let calculateVersion source =
-    let s = source
-    let (major, minor, revision, preReleaseSuffix, commitsNum, sha, buildNumber) =
-        (s.Major, s.Minor, s.Revision, s.PreSuffix, s.CommitsNum, s.Sha, s.BuildNumber)
-
-    let assemblyVersion = sprintf "%d.%d.0.0" major minor
-    let fileVersion = sprintf "%d.%d.%d.%d" major minor revision buildNumber
-    
-    // If number of commits since last tag is greater than zero, we append another identifier with number of commits.
-    // The produced version is larger than the last tag version.
-    // If we are on a tag, we use version without modification.
-    // Examples of output: 3.50.2.1, 3.50.2.215, 3.50.1-rc1.3, 3.50.1-rc3.35
-    let nugetVersion = match commitsNum with
-                       | 0 -> sprintf "%d.%d.%d%s" major minor revision preReleaseSuffix
-                       | _ -> sprintf "%d.%d.%d%s.%d" major minor revision preReleaseSuffix commitsNum
-
-    let infoVersion = match commitsNum with
-                      | 0 -> nugetVersion
-                      | _ -> sprintf "%s-%s" nugetVersion sha
-
-    { AssemblyVersion=assemblyVersion; FileVersion=fileVersion; InfoVersion=infoVersion; NugetVersion=nugetVersion; CommitHash=s.Sha;
-      Source = Some source }
-
-// Calculate version that should be used for the build. Define globally as data might be required by multiple targets.
-// Please never name the build parameter with version as "Version" - it might be consumed by the MSBuild, override 
-// the defined properties and break some tasks (e.g. NuGet restore).
-let mutable buildVersion = match Environment.environVarOrDefault "BUILD_VERSION" "git" with
-                           | "git"       -> Environment.environVarOrDefault "BUILD_NUMBER" "0"
-                                            |> int
-                                            |> getVersionSourceFromGit
-                                            |> calculateVersion
-
-                           | assemblyVer -> { AssemblyVersion = assemblyVer
-                                              FileVersion = Environment.environVarOrDefault "BUILD_FILE_VERSION" assemblyVer
-                                              InfoVersion = Environment.environVarOrDefault "BUILD_INFO_VERSION" assemblyVer
-                                              NugetVersion = Environment.environVarOrDefault "BUILD_NUGET_VERSION" assemblyVer
-                                              CommitHash = Environment.environVarOrDefault "BUILD_COMMIT_HASH" ""
-                                              Source = None }
-
-let setVNextBranchVersion vNextVersion =
-    buildVersion <-
-        match buildVersion.Source with
-        // Don't update version if it was explicitly specified.
-        | None                                -> buildVersion
-        // Don't update version if tag with current major version is already present (e.g. rc is released).
-        | Some s when s.Major >= vNextVersion -> buildVersion
-        | Some source                         -> 
-            // The trick is the "git describe" command contains the --first-parent flag.
-            // Because of that git matched the last release tag before the fork was created and calculated number
-            // of commits since that release. We are perfectly fine, as this number will constantly increase only.
-            // Set version to X.0.0-alpha.NUM, where X - major version, NUM - commits since last release before fork.
-            { source with Major = vNextVersion
-                          Minor = 0
-                          Revision = 0
-                          PreSuffix = "-alpha" }
-            |> calculateVersion
-
-let configureMsBuildParams (parameters: MSBuild.CliArguments) = 
-    let isCiBuild = BuildServer.buildServer <> LocalBuild
-
-    let properties = [ "AssemblyVersion", buildVersion.AssemblyVersion
-                       "FileVersion", buildVersion.FileVersion
-                       "InformationalVersion", buildVersion.InfoVersion
-                       "PackageVersion", buildVersion.NugetVersion
-                       "CommitHash", buildVersion.CommitHash
-                       "EnableSourceLink", isCiBuild.ToString()
-                       "ContinuousIntegrationBuild", isCiBuild.ToString() ]
-
-    { parameters with Verbosity = Some buildVerbosity
-                      Properties = properties }
-
-Target.create "Verify" (fun _ ->
-    try
-        DotNet.build (fun p -> { p with Configuration = DotNet.BuildConfiguration.Custom "Verify"
-                                        MSBuildParams = configureMsBuildParams p.MSBuildParams })
-                     solutionPath
-    with
-    | MSBuildException (msg, errors) -> 
-        let msg = sprintf
-                    "%s\r\nHINT: To simplify the fix process it's recommended to switch to the 'Verify' configuration \
-                    in the IDE. This way you might get Roslyn quick fixes for the violated rules."
-                    msg
-        raise (MSBuildException(msg, errors))
-)
-
-Target.create "Build" (fun _ ->
-    DotNet.build (fun p -> { p with Configuration = buildConfiguration
-                                    MSBuildParams = configureMsBuildParams p.MSBuildParams })
-                 solutionPath
-)
-
-Target.create "CleanTestResultsFolder" (fun _ -> Shell.cleanDir testResultsFolder)
-
-Target.create "Test" (fun _ ->
-    // DotNet.test does not support -- parameters for now.
-    let result = DotNet.exec id
-                    "test"
-                    (sprintf 
-                        "%s --no-build --configuration %s --logger:trx --results-directory \"%s\" -- RunConfiguration.NoAutoReporters=true"
-                        solutionPath
-                        (buildConfiguration.ToString())
-                        testResultsFolder)
-
-    if not result.OK then failwith "test failed"
-)
-
-Target.create "CleanNuGetPackages" (fun _ ->
-    Shell.cleanDir nuGetOutputFolder
-)
-
-Target.create "NuGetPack" (fun _ ->
-    DotNet.pack (fun p -> { p with Configuration = buildConfiguration
-                                   OutputPath = Some (Path.getFullName nuGetOutputFolder)
-                                   MSBuildParams = configureMsBuildParams p.MSBuildParams })
-                solutionPath
-
-    let findDependencyNode name (doc:Xml.XmlDocument) =
-            doc.SelectSingleNode(sprintf "//*[local-name()='dependency' and @id='%s']" name)
-
-    // Verify that AutoFixture reference is valid.
-    let dependencyVersion = !! "AutoFixture.AutoNSubstitute*"
-                            |> GlobbingPattern.setBaseDir nuGetOutputFolder
-                            |> Seq.head
-                            |> Zip.unzipFirstMatchingFileInMemory (fun ze -> ze.Name.EndsWith ".nuspec")
-                            |> Xml.createDoc
-                            |> findDependencyNode "AutoFixture"
-                            |> Xml.getAttribute "version"
-
-    if(buildVersion.NugetVersion <> dependencyVersion) 
-        then failwithf "Invalid dependency version in the produced package. Actual: '%s' Expected: '%s'"
-                       dependencyVersion
-                       buildVersion.NugetVersion 
-        else Trace.logfn "Verified the dependency version. Actual: '%s' Expected: '%s'"
-                   dependencyVersion
-                   buildVersion.NugetVersion
-)
-
-let publishPackages packageFeed accessKey =
-    // Protect the secret explicitly, even though FAKE should do it.
-    // See the discussion: https://github.com/fsharp/FAKE/issues/2526#issuecomment-650567241
-    TraceSecrets.register "" accessKey 
-
-    nuGetPackages
-    |> Seq.iter (fun pkg -> DotNet.nugetPush (fun p -> { p with PushParams = { p.PushParams with ApiKey = Some accessKey
-                                                                                                 Source = Some packageFeed }})
-                                             pkg
-    )
-
-Target.create "PublishNuGet" (fun _ ->
-    let feed = "https://www.nuget.org/api/v2/package"
-    let key = Environment.environVarOrFail "NUGET_API_KEY"
-
-    publishPackages feed key
-)
-
-Target.create "PublishMyGet" (fun _ ->
-    let packageFeed = "https://www.myget.org/F/autofixture/api/v2/package"
-    let key = Environment.environVarOrFail "MYGET_API_KEY"
-
-    publishPackages packageFeed key
-)
-
-Target.create "CompleteBuild"   ignore
-
-"Verify" ==> "Build"
-
-
-"CleanTestResultsFolder" ==> "Test"
-"Build"                  ==> "Test"
-
-"CleanNuGetPackages" ==> "NuGetPack"
-"Test"               ==> "NuGetPack"
-
-"NuGetPack" ==> "CompleteBuild"
-
-"NuGetPack" ==> "PublishNuGet"
-
-"NuGetPack" ==> "PublishMyGet"
-
-// ==============================================
-// ================== AppVeyor ==================
-// ==============================================
-
-// Add a helper to identify whether current trigger is PR.
-type AppVeyor.Environment with
-    static member IsPullRequest = String.isNotNullOrEmpty AppVeyor.Environment.PullRequestNumber
-
-type AppVeyorTrigger = SemVerTag | CustomTag | PR | VNextBranch | Unknown
-let anAppVeyorTrigger =
-    let tag = if AppVeyor.Environment.RepoTag then Some AppVeyor.Environment.RepoTagName else None
-    let isPR = AppVeyor.Environment.IsPullRequest
-    let branch = if String.isNotNullOrEmpty AppVeyor.Environment.RepoBranch then Some AppVeyor.Environment.RepoBranch else None
-
-    match tag, isPR, branch with
-    | Some t, _, _ when "v\d+.*" >** t -> SemVerTag
-    | Some _, _, _                     -> CustomTag
-    | _, true, _                       -> PR
-    // Branch name should be checked after the PR flag, because for PR it's set to the upstream branch name.
-    | _, _, Some br when "v\d+" >** br -> VNextBranch
-    | _                                -> Unknown
-
-Target.create "AppVeyor_SetVNextVersion" (fun _ ->
-    // vNext branch has the following name: "vX", where X is the next version.
-    AppVeyor.Environment.RepoBranch.Substring(1) 
-    |> int
-    |> setVNextBranchVersion
-)
-
-Target.create "AppVeyor_UploadTestReports" (fun _ ->
-    let shuffle xs = xs |> Seq.sortBy (fun _ -> Guid())
-
-    !!"*.trx"
-    |> GlobbingPattern.setBaseDir testResultsFolder
-    |> Seq.map (fun file -> (file, ImportData.Mstest))
-    |> shuffle
-    |> Seq.map (fun (file, format) -> async { Trace.publish format file })
-    |> Async.Parallel
-    |> Async.RunSynchronously
-    |> ignore
-)
-
-Target.createFinal "AppVeyor_UpdateVersion" (fun _ ->
-    // Artifacts might be deployable, so we update build version to find them later by file version.
-    let versionSuffix = if AppVeyor.Environment.IsPullRequest then
-                            let appVeyorVersion = AppVeyor.Environment.BuildVersion;
-                            appVeyorVersion.Substring(appVeyorVersion.IndexOf('-'))
-                        else
-                            ""
-    Trace.setBuildNumber (buildVersion.FileVersion + versionSuffix)
-)
-
-Target.create "AppVeyor" ignore
-
-"AppVeyor_SetVNextVersion" =?> ("PatchAssemblyVersions", anAppVeyorTrigger = VNextBranch)
-
-"Test" ==> "AppVeyor_UploadTestReports"
-
-// Add logic to resolve action based on current trigger info.
-(==>) <| match anAppVeyorTrigger with
-         | SemVerTag                -> "PublishNuGet"
-         | VNextBranch              -> "PublishMyGet"
-         | PR | CustomTag | Unknown -> "CompleteBuild"
-      <| "AppVeyor"
-
-"AppVeyor_UploadTestReports" ==> "AppVeyor"
-
-// Print state info at the very beginning.
-if BuildServer.buildServer = AppVeyor 
-   then Trace.logfn "[AppVeyor state] Is tag: %b, tag name: '%s', is PR: %b, branch name: '%s', trigger: %A, build version: '%s'"
-              AppVeyor.Environment.RepoTag 
-              AppVeyor.Environment.RepoTagName 
-              AppVeyor.Environment.IsPullRequest
-              AppVeyor.Environment.RepoBranch
-              anAppVeyorTrigger
-              AppVeyor.Environment.BuildVersion
-        Target.activateFinal "AppVeyor_UpdateVersion"
-
-BuildServer.install [ AppVeyor.Installer ]
-
-// ========= ENTRY POINT =========
-Target.runOrDefault "CompleteBuild"
diff --git a/GitVersion.yml b/GitVersion.yml
new file mode 100644
index 00000000..fd84f7c8
--- /dev/null
+++ b/GitVersion.yml
@@ -0,0 +1,14 @@
+mode: ContinuousDelivery
+assembly-versioning-scheme: MajorMinorPatch
+tag-prefix: '[vV]'
+branches:
+  master:
+    tag: ''
+    increment: Minor
+  release:
+    source-branches: ['master']
+    prevent-increment-of-merged-branch-version: true
+    tag: 'preview'
+ignore:
+  sha: []
+merge-message-formats: {}
diff --git a/Src/All.sln b/Src/All.sln
index 1a30c774..714d8a44 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -92,6 +92,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy6U
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy7UnitTest", "AutoFakeItEasy.FakeItEasy7UnitTest\AutoFakeItEasy.FakeItEasy7UnitTest.csproj", "{1B42519B-24C2-4141-83A3-AB68AB09EE28}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{E709A052-9203-4991-954B-193F0E2046A3}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -327,6 +329,9 @@ Global
 		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Release|Any CPU.Build.0 = Release|Any CPU
 		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Verify|Any CPU.Build.0 = Verify|Any CPU
+		{E709A052-9203-4991-954B-193F0E2046A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E709A052-9203-4991-954B-193F0E2046A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E709A052-9203-4991-954B-193F0E2046A3}.Verify|Any CPU.ActiveCfg = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/Src/Common.Test.xUnit.props b/Src/Common.Test.xUnit.props
index 0d854f40..17194c55 100644
--- a/Src/Common.Test.xUnit.props
+++ b/Src/Common.Test.xUnit.props
@@ -1,8 +1,17 @@
 
   
     
-    
+    
 
+    
+      all
+      runtime; build; native; contentfiles; analyzers; buildtransitive
+    
+    
+      all
+      runtime; build; native; contentfiles; analyzers; buildtransitive
+    
+    
     
   
 
diff --git a/build.cmd b/build.cmd
index 9e33005d..b08cc590 100644
--- a/build.cmd
+++ b/build.cmd
@@ -1,9 +1,7 @@
-@echo off
-cls
+:; set -eo pipefail
+:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
+:; ${SCRIPT_DIR}/build.sh "$@"
+:; exit $?
 
-SET SCRIPT_DIR=%~dp0
-
-dotnet tool restore
-
-echo Running FAKE Build...
-dotnet tool run fake --silent run %SCRIPT_DIR%\build.fsx %*
+@ECHO OFF
+powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %*
diff --git a/build.fsx.lock b/build.fsx.lock
deleted file mode 100644
index 6003be7b..00000000
--- a/build.fsx.lock
+++ /dev/null
@@ -1,232 +0,0 @@
-STORAGE: NONE
-RESTRICTION: == netstandard2.0
-NUGET
-  remote: https://api.nuget.org/v3/index.json
-    BlackFox.VsWhere (1.1)
-      FSharp.Core (>= 4.2.3)
-      Microsoft.Win32.Registry (>= 4.7)
-    Fake.BuildServer.AppVeyor (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      Fake.Net.Http (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.CommandLineParsing (5.20.4)
-      FParsec (>= 1.1.1)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Context (5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Environment (5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.FakeVar (5.20.4)
-      Fake.Core.Context (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Process (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.FakeVar (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-      System.Collections.Immutable (>= 1.7.1)
-    Fake.Core.SemVer (5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.String (5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Target (5.20.4)
-      Fake.Core.CommandLineParsing (>= 5.20.4)
-      Fake.Core.Context (>= 5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.FakeVar (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      FSharp.Control.Reactive (>= 4.4.2)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Tasks (5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Trace (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.FakeVar (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Core.Xml (5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    FAKE.Dotnet (2.0)
-    Fake.DotNet.Cli (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.DotNet.MSBuild (>= 5.20.4)
-      Fake.DotNet.NuGet (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-      Mono.Posix.NETStandard (>= 1.0)
-      Newtonsoft.Json (>= 12.0.3)
-    Fake.DotNet.MSBuild (5.20.4)
-      BlackFox.VsWhere (>= 1.1)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-      MSBuild.StructuredLogger (>= 2.1.176)
-    Fake.DotNet.NuGet (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.SemVer (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Tasks (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.Core.Xml (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      Fake.Net.Http (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-      Newtonsoft.Json (>= 12.0.3)
-      NuGet.Protocol (>= 5.6)
-    Fake.DotNet.Testing.NUnit (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      Fake.Testing.Common (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.IO.FileSystem (5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.IO.Zip (5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Net.Http (5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Testing.Common (5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    Fake.Tools.Git (5.20.4)
-      Fake.Core.Environment (>= 5.20.4)
-      Fake.Core.Process (>= 5.20.4)
-      Fake.Core.SemVer (>= 5.20.4)
-      Fake.Core.String (>= 5.20.4)
-      Fake.Core.Trace (>= 5.20.4)
-      Fake.IO.FileSystem (>= 5.20.4)
-      FSharp.Core (>= 4.7.2)
-    FParsec (1.1.1)
-      FSharp.Core (>= 4.3.4)
-    FSharp.Control.Reactive (5.0.2)
-      FSharp.Core (>= 4.7.2)
-      System.Reactive (>= 5.0)
-    FSharp.Core (5.0.2)
-    Microsoft.Build (16.11)
-    Microsoft.Build.Framework (16.11)
-      System.Security.Permissions (>= 4.7)
-    Microsoft.Build.Tasks.Core (16.11)
-      Microsoft.Build.Framework (>= 16.11)
-      Microsoft.Build.Utilities.Core (>= 16.11)
-      Microsoft.NET.StringTools (>= 1.0)
-      Microsoft.Win32.Registry (>= 4.3)
-      System.CodeDom (>= 4.4)
-      System.Collections.Immutable (>= 5.0)
-      System.Reflection.Metadata (>= 1.6)
-      System.Resources.Extensions (>= 4.6)
-      System.Security.Cryptography.Pkcs (>= 4.7)
-      System.Security.Cryptography.Xml (>= 4.7)
-      System.Security.Permissions (>= 4.7)
-      System.Threading.Tasks.Dataflow (>= 4.9)
-    Microsoft.Build.Utilities.Core (16.11)
-      Microsoft.Build.Framework (>= 16.11)
-      Microsoft.NET.StringTools (>= 1.0)
-      Microsoft.Win32.Registry (>= 4.3)
-      System.Collections.Immutable (>= 5.0)
-      System.Configuration.ConfigurationManager (>= 4.7)
-      System.Security.Permissions (>= 4.7)
-      System.Text.Encoding.CodePages (>= 4.0.1)
-    Microsoft.NET.StringTools (1.0)
-      System.Memory (>= 4.5.4)
-      System.Runtime.CompilerServices.Unsafe (>= 5.0)
-    Microsoft.NETCore.Platforms (5.0.2)
-    Microsoft.NETCore.Targets (5.0)
-    Microsoft.Win32.Registry (5.0)
-      System.Buffers (>= 4.5.1)
-      System.Memory (>= 4.5.4)
-      System.Security.AccessControl (>= 5.0)
-      System.Security.Principal.Windows (>= 5.0)
-    Mono.Posix.NETStandard (1.0)
-    MSBuild.StructuredLogger (2.1.545)
-      Microsoft.Build (>= 16.10)
-      Microsoft.Build.Framework (>= 16.10)
-      Microsoft.Build.Tasks.Core (>= 16.10)
-      Microsoft.Build.Utilities.Core (>= 16.10)
-    Newtonsoft.Json (13.0.1)
-    NuGet.Common (5.11)
-      NuGet.Frameworks (>= 5.11)
-    NuGet.Configuration (5.11)
-      NuGet.Common (>= 5.11)
-      System.Security.Cryptography.ProtectedData (>= 4.4)
-    NuGet.Frameworks (5.11)
-    NuGet.Packaging (5.11)
-      Newtonsoft.Json (>= 9.0.1)
-      NuGet.Configuration (>= 5.11)
-      NuGet.Versioning (>= 5.11)
-      System.Security.Cryptography.Cng (>= 5.0)
-      System.Security.Cryptography.Pkcs (>= 5.0)
-    NuGet.Protocol (5.11)
-      NuGet.Packaging (>= 5.11)
-    NuGet.Versioning (5.11)
-    System.Buffers (4.5.1)
-    System.CodeDom (5.0)
-    System.Collections.Immutable (5.0)
-      System.Memory (>= 4.5.4)
-    System.Configuration.ConfigurationManager (5.0)
-      System.Security.Cryptography.ProtectedData (>= 5.0)
-      System.Security.Permissions (>= 5.0)
-    System.Formats.Asn1 (5.0)
-      System.Buffers (>= 4.5.1)
-      System.Memory (>= 4.5.4)
-    System.Memory (4.5.4)
-      System.Buffers (>= 4.5.1)
-      System.Numerics.Vectors (>= 4.4)
-      System.Runtime.CompilerServices.Unsafe (>= 4.5.3)
-    System.Numerics.Vectors (4.5)
-    System.Reactive (5.0)
-      System.Runtime.InteropServices.WindowsRuntime (>= 4.3)
-      System.Threading.Tasks.Extensions (>= 4.5.4)
-    System.Reflection.Metadata (5.0)
-      System.Collections.Immutable (>= 5.0)
-    System.Resources.Extensions (5.0)
-      System.Memory (>= 4.5.4)
-    System.Runtime (4.3.1)
-      Microsoft.NETCore.Platforms (>= 1.1.1)
-      Microsoft.NETCore.Targets (>= 1.1.3)
-    System.Runtime.CompilerServices.Unsafe (5.0)
-    System.Runtime.InteropServices.WindowsRuntime (4.3)
-      System.Runtime (>= 4.3)
-    System.Security.AccessControl (5.0)
-      System.Security.Principal.Windows (>= 5.0)
-    System.Security.Cryptography.Cng (5.0)
-    System.Security.Cryptography.Pkcs (5.0.1)
-      System.Buffers (>= 4.5.1)
-      System.Formats.Asn1 (>= 5.0)
-      System.Memory (>= 4.5.4)
-      System.Security.Cryptography.Cng (>= 5.0)
-    System.Security.Cryptography.ProtectedData (5.0)
-      System.Memory (>= 4.5.4)
-    System.Security.Cryptography.Xml (5.0)
-      System.Memory (>= 4.5.4)
-      System.Security.Cryptography.Pkcs (>= 5.0)
-      System.Security.Permissions (>= 5.0)
-    System.Security.Permissions (5.0)
-      System.Security.AccessControl (>= 5.0)
-    System.Security.Principal.Windows (5.0)
-    System.Text.Encoding.CodePages (5.0)
-      System.Runtime.CompilerServices.Unsafe (>= 5.0)
-    System.Threading.Tasks.Dataflow (5.0)
-    System.Threading.Tasks.Extensions (4.5.4)
-      System.Runtime.CompilerServices.Unsafe (>= 4.5.3)
diff --git a/build.ps1 b/build.ps1
new file mode 100644
index 00000000..bbaa118e
--- /dev/null
+++ b/build.ps1
@@ -0,0 +1,69 @@
+[CmdletBinding()]
+Param(
+    [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
+    [string[]]$BuildArguments
+)
+
+Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
+
+Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
+$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
+
+###########################################################################
+# CONFIGURATION
+###########################################################################
+
+$BuildProjectFile = "$PSScriptRoot\build\_build.csproj"
+$TempDirectory = "$PSScriptRoot\\.nuke\temp"
+
+$DotNetGlobalFile = "$PSScriptRoot\\global.json"
+$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
+$DotNetChannel = "Current"
+
+$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
+$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
+$env:DOTNET_MULTILEVEL_LOOKUP = 0
+
+###########################################################################
+# EXECUTION
+###########################################################################
+
+function ExecSafe([scriptblock] $cmd) {
+    & $cmd
+    if ($LASTEXITCODE) { exit $LASTEXITCODE }
+}
+
+# If dotnet CLI is installed globally and it matches requested version, use for execution
+if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
+     $(dotnet --version) -and $LASTEXITCODE -eq 0) {
+    $env:DOTNET_EXE = (Get-Command "dotnet").Path
+}
+else {
+    # Download install script
+    $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
+    New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
+    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+    (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
+
+    # If global.json exists, load expected version
+    if (Test-Path $DotNetGlobalFile) {
+        $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
+        if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
+            $DotNetVersion = $DotNetGlobal.sdk.version
+        }
+    }
+
+    # Install by channel or version
+    $DotNetDirectory = "$TempDirectory\dotnet-win"
+    if (!(Test-Path variable:DotNetVersion)) {
+        ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
+    } else {
+        ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
+    }
+    $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
+}
+
+Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)"
+
+ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
+ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }
diff --git a/build.sh b/build.sh
new file mode 100755
index 00000000..e8961f99
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+bash --version 2>&1 | head -n 1
+
+set -eo pipefail
+SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
+
+###########################################################################
+# CONFIGURATION
+###########################################################################
+
+BUILD_PROJECT_FILE="$SCRIPT_DIR/build/_build.csproj"
+TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp"
+
+DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
+DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh"
+DOTNET_CHANNEL="Current"
+
+export DOTNET_CLI_TELEMETRY_OPTOUT=1
+export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+export DOTNET_MULTILEVEL_LOOKUP=0
+
+###########################################################################
+# EXECUTION
+###########################################################################
+
+function FirstJsonValue {
+    perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
+}
+
+# If dotnet CLI is installed globally and it matches requested version, use for execution
+if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
+    export DOTNET_EXE="$(command -v dotnet)"
+else
+    # Download install script
+    DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
+    mkdir -p "$TEMP_DIRECTORY"
+    curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
+    chmod +x "$DOTNET_INSTALL_FILE"
+
+    # If global.json exists, load expected version
+    if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
+        DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
+        if [[ "$DOTNET_VERSION" == ""  ]]; then
+            unset DOTNET_VERSION
+        fi
+    fi
+
+    # Install by channel or version
+    DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
+    if [[ -z ${DOTNET_VERSION+x} ]]; then
+        "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
+    else
+        "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
+    fi
+    export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
+fi
+
+echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"
+
+"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
+"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"
diff --git a/build/.editorconfig b/build/.editorconfig
new file mode 100644
index 00000000..31e43dcd
--- /dev/null
+++ b/build/.editorconfig
@@ -0,0 +1,11 @@
+[*.cs]
+dotnet_style_qualification_for_field = false:warning
+dotnet_style_qualification_for_property = false:warning
+dotnet_style_qualification_for_method = false:warning
+dotnet_style_qualification_for_event = false:warning
+dotnet_style_require_accessibility_modifiers = never:warning
+
+csharp_style_expression_bodied_methods = true:silent
+csharp_style_expression_bodied_properties = true:warning
+csharp_style_expression_bodied_indexers = true:warning
+csharp_style_expression_bodied_accessors = true:warning
diff --git a/build/Build.CI.AppVeyor.cs b/build/Build.CI.AppVeyor.cs
new file mode 100644
index 00000000..13a8f1d5
--- /dev/null
+++ b/build/Build.CI.AppVeyor.cs
@@ -0,0 +1,46 @@
+using Integration;
+using Nuke.Common;
+using Nuke.Common.CI;
+using Nuke.Common.CI.AppVeyor;
+
+[AppVeyor(
+    AppVeyorImage.VisualStudio2019,
+    AutoGenerate = false,
+    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack), nameof(Publish) },
+    Secrets = new[] { AppVeyorSecrets.NuGetApiKey, AppVeyorSecrets.MyGetApiKey })]
+partial class Build
+{
+    [CI] readonly AppVeyor AppVeyor;
+
+    Target AppVeyorUploadTestResults => _ => _
+        .TriggeredBy(Test)
+        .After(Test)
+        .Before(Pack)
+        .OnlyWhenDynamic(() => IsServerBuild && AppVeyor != null)
+        .Executes(() =>
+        {
+            AppVeyor.UploadTestResults(TestType.MsTest, TestResultsDirectory, "*.trx");
+            AppVeyor.UploadTestResults(TestType.NUnit, TestResultsDirectory, "*.xml");
+        });
+
+    Target AppVeyorSetBuildVersion => _ => _
+        .TriggeredBy(Restore)
+        .After(Restore)
+        .OnlyWhenDynamic(() => IsServerBuild && AppVeyor != null)
+        .Executes(() =>
+        {
+            AppVeyor.UpdateBuildVersion(
+                $"{GitVersion.MajorMinorPatch}.{AppVeyor.BuildNumber}{GitVersion.PreReleaseTagWithDash}");
+        });
+
+    public static class AppVeyorSecrets
+    {
+        public const string NuGetApiKey = NuGetApiKeyName + ":" + NuGetApiKeyValue;
+        const string NuGetApiKeyName = "NUGET_API_KEY";
+        const string NuGetApiKeyValue = "b/B9mFX99as5WjjR9Xzr7zAUDKwvCOmPgEkttJxcP+OClOv59lrcIE4OrsAdQRW3";
+
+        public const string MyGetApiKey = MyGetApiKeyName + ":" + MyGetApiKeyValue;
+        const string MyGetApiKeyName = "MYGET_API_KEY";
+        const string MyGetApiKeyValue = "hA4Ut1N2lrrdEtAN24Bty/FNiU0d/Ur/dLYSqpr8jKHOvoO7MU4jD+KwzUvATh+E";
+    }
+}
\ No newline at end of file
diff --git a/build/Build.cs b/build/Build.cs
new file mode 100644
index 00000000..317debc9
--- /dev/null
+++ b/build/Build.cs
@@ -0,0 +1,197 @@
+using System.Collections.Generic;
+using System.Linq;
+using Integration;
+using Nuke.Common;
+using Nuke.Common.CI;
+using Nuke.Common.Execution;
+using Nuke.Common.Git;
+using Nuke.Common.IO;
+using Nuke.Common.ProjectModel;
+using Nuke.Common.Tooling;
+using Nuke.Common.Tools.Coverlet;
+using Nuke.Common.Tools.DotNet;
+using Nuke.Common.Tools.GitVersion;
+using Nuke.Common.Tools.ReportGenerator;
+using Nuke.Common.Utilities.Collections;
+using static Nuke.Common.IO.CompressionTasks;
+using static Nuke.Common.IO.FileSystemTasks;
+using static Nuke.Common.Tools.DotNet.DotNetTasks;
+using static Nuke.Common.Tools.ReportGenerator.ReportGeneratorTasks;
+
+[CheckBuildProjectConfigurations]
+[ShutdownDotNetAfterServerBuild]
+[DotNetVerbosityMapping]
+partial class Build : NukeBuild
+{
+    public static int Main() => Execute(x => x.Compile);
+
+    [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
+    readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
+    
+    [Solution] readonly Solution Solution;
+    [GitRepository] readonly GitRepository GitRepository;
+    [GitVersion] readonly GitVersion GitVersion;
+    [BuildTrigger] readonly BuildTrigger Trigger;
+
+    [PackageExecutable("NUnit.Runners", "nunit-console.exe")]
+    readonly Tool NUnit2Runner;
+
+    [EnvironmentVariable("NUGET_API_KEY")] readonly string NuGetApiKey;
+    readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
+
+    [EnvironmentVariable("MYGET_API_KEY")] readonly string MyGetApiKey;
+    readonly string MyGetSource = "https://api.nuget.org/v3/index.json";
+
+    [Partition(2)] readonly Partition TestPartition;
+
+    IEnumerable TestProjects
+        => TestPartition.GetCurrent(Solution.GetProjects("*Test"));
+
+    AbsolutePath SourceDirectory => RootDirectory / "src";
+    AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
+    AbsolutePath TestResultsDirectory => ArtifactsDirectory / "testresults";
+    AbsolutePath CoverageDirectory => ArtifactsDirectory / "coverage";
+    AbsolutePath ReportsDirectory => ArtifactsDirectory / "reports";
+    AbsolutePath PackagesDirectory => ArtifactsDirectory / "packages";
+
+    Target Clean => _ => _
+        .Before(Restore)
+        .Executes(() =>
+        {
+            SourceDirectory
+                .GlobDirectories("**/bin", "**/obj")
+                .ForEach(DeleteDirectory);
+
+            EnsureCleanDirectory(ArtifactsDirectory);
+        });
+
+    Target Restore => _ => _
+        .Executes(() =>
+        {
+            DotNetRestore(s => s
+                .SetProjectFile(Solution)
+                .SetProcessArgumentConfigurator(a => a
+                    .Add("/p:CheckEolTargetFramework=false")));
+        });
+
+    Target Verify => _ => _
+        .DependsOn(Restore)
+        .Before(Compile)
+        .Executes(() =>
+        {
+            DotNetBuild(s => s
+                .SetProjectFile(Solution)
+                .SetConfiguration("Verify")
+                .SetNoRestore(FinishedTargets.Contains(Restore))
+                .SetProcessArgumentConfigurator(a => a
+                    .Add("/p:CheckEolTargetFramework=false")));
+        });
+
+    Target Compile => _ => _
+        .DependsOn(Restore)
+        .Executes(() =>
+        {
+            DotNetBuild(s => s
+                .SetProjectFile(Solution)
+                .SetConfiguration(Configuration)
+                .SetVersion(GitVersion.NuGetVersionV2)
+                .SetAssemblyVersion(GitVersion.AssemblySemVer)
+                .SetFileVersion(GitVersion.AssemblySemFileVer)
+                .SetInformationalVersion(GitVersion.InformationalVersion)
+                .SetNoRestore(FinishedTargets.Contains(Restore))
+                .SetProcessArgumentConfigurator(a => a
+                    .Add("/p:CheckEolTargetFramework=false")));
+        });
+
+    Target Test => _ => _
+        .DependsOn(Compile)
+        .Produces(TestResultsDirectory / "*.zip")
+        .Produces(CoverageDirectory / "*.zip")
+        .Partition(() => TestPartition)
+        .Executes(() =>
+        {
+            DotNetTest(s => s
+                .SetConfiguration(Configuration)
+                .SetNoBuild(FinishedTargets.Contains(Compile))
+                .ResetVerbosity()
+                .SetResultsDirectory(TestResultsDirectory)
+                .SetProcessArgumentConfigurator(a => a
+                    .Add("/p:CheckEolTargetFramework=false")
+                    .Add("-- RunConfiguration.DisableAppDomain=true")
+                    .Add("-- RunConfiguration.NoAutoReporters=true"))
+                .When(InvokedTargets.Contains(Cover), _ => _
+                    .EnableCollectCoverage()
+                    .SetCoverletOutputFormat(CoverletOutputFormat.cobertura)
+                    .SetExcludeByFile("**/TestTypeFoundation/**")
+                    .When(IsServerBuild, _ => _.EnableUseSourceLink()))
+                .CombineWith(TestProjects, (_, v) => _
+                    .SetProjectFile(v)
+                    .SetLogger("trx")
+                    .When(InvokedTargets.Contains(Cover), _ => _
+                        .SetCoverletOutput(CoverageDirectory / $"{v.Name}.xml"))));
+
+            CompressZip(TestResultsDirectory, TestResultsDirectory / "TestResults.zip");
+            CompressZip(CoverageDirectory, CoverageDirectory / "CoverageResults.zip");
+
+            AppVeyor?.PushArtifact(TestResultsDirectory / "TestResults.zip");
+            AppVeyor?.PushArtifact(CoverageDirectory / "CoverageResults.zip");
+        });
+
+    Target Cover => _ => _
+        .DependsOn(Test)
+        .Consumes(Test)
+        .Before(Pack)
+        .Produces(ReportsDirectory / "*.zip")
+        .Executes(() =>
+        {
+            ReportGenerator(_ => _
+                .SetFramework("netcoreapp2.1")
+                .SetReports(CoverageDirectory / "*.xml")
+                .SetTargetDirectory(ReportsDirectory)
+                .SetReportTypes("lcov", ReportTypes.HtmlInline));
+
+            CompressZip(ReportsDirectory, ReportsDirectory / "CoverageReport.zip");
+        });
+
+    Target Pack => _ => _
+        .DependsOn(Compile)
+        .Consumes(Compile)
+        .After(Test)
+        .Produces(PackagesDirectory / "*.nupkg")
+        .Executes(() =>
+        {
+            DotNetPack(s => s
+                .SetProject(Solution)
+                .SetConfiguration(Configuration)
+                .SetOutputDirectory(PackagesDirectory)
+                .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
+                .EnableIncludeSymbols()
+                .SetVersion(GitVersion.NuGetVersionV2)
+                .SetAssemblyVersion(GitVersion.AssemblySemVer)
+                .SetFileVersion(GitVersion.AssemblySemFileVer)
+                .SetInformationalVersion(GitVersion.InformationalVersion)
+                .SetProcessArgumentConfigurator(a => a
+                    .Add("/p:CheckEolTargetFramework=false")));
+        });
+
+    Target Publish => _ => _
+        .DependsOn(Pack)
+        .OnlyWhenDynamic(() => IsServerBuild)
+        .OnlyWhenDynamic(() => AppVeyor != null && Trigger == BuildTrigger.SemVerTag)
+        .Consumes(Pack)
+        .Executes(() =>
+        {
+            DotNetNuGetPush(s => s
+                .EnableSkipDuplicate()
+                .When(
+                    GitRepository.IsOnMasterBranch(),
+                    v => v
+                        .SetApiKey(NuGetApiKey)
+                        .SetSource(NuGetSource))
+                .When(
+                    !GitRepository.IsOnMasterBranch(),
+                    v => v
+                        .SetApiKey(MyGetApiKey)
+                        .SetApiKey(MyGetSource)));
+        });
+}
\ No newline at end of file
diff --git a/build/Configuration.cs b/build/Configuration.cs
new file mode 100644
index 00000000..702cd6e0
--- /dev/null
+++ b/build/Configuration.cs
@@ -0,0 +1,16 @@
+using System;
+using System.ComponentModel;
+using System.Linq;
+using Nuke.Common.Tooling;
+
+[TypeConverter(typeof(TypeConverter))]
+public class Configuration : Enumeration
+{
+    public static Configuration Debug = new() { Value = nameof(Debug) };
+    public static Configuration Release = new() { Value = nameof(Release) };
+
+    public static implicit operator string(Configuration configuration)
+    {
+        return configuration.Value;
+    }
+}
diff --git a/build/Integration/AppVeyorExtensions.cs b/build/Integration/AppVeyorExtensions.cs
new file mode 100644
index 00000000..8b5a9c63
--- /dev/null
+++ b/build/Integration/AppVeyorExtensions.cs
@@ -0,0 +1,70 @@
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
+using System.Net;
+using System.Text.RegularExpressions;
+using Nuke.Common;
+using Nuke.Common.CI.AppVeyor;
+using Nuke.Common.IO;
+
+namespace Integration
+{
+    public static class AppVeyorExtensions
+    {
+        public static BuildTrigger GetTrigger(this AppVeyor environment)
+        {
+            if (environment == null) return BuildTrigger.Invalid;
+
+            var tag = environment.RepositoryTag ? environment.RepositoryTagName : null;
+            var isPr = environment.PullRequestNumber.HasValue;
+            var branchName = environment.RepositoryBranch;
+
+            return (tag, isPr, branchName) switch
+            {
+                ({ } t, _, _) when Regex.IsMatch(t, "^v\\d.*") => BuildTrigger.SemVerTag,
+                (_, true, _) => BuildTrigger.PullRequest,
+                (_, _, "master") => BuildTrigger.MasterBranch,
+                _ => BuildTrigger.UnknownBranchOrTag
+            };
+        }
+
+        public static void UploadTestResults([NotNull] this AppVeyor environment,
+            TestType type, AbsolutePath directory, params string[] patterns)
+        {
+            var testType = GetType(type);
+            var address = $"https://ci.appveyor.com/api/testresults/{testType}/{environment.JobId}";
+            var webClient = new WebClient();
+
+            var files = directory.GlobFiles(patterns);
+
+            foreach (var file in files)
+            {
+                try
+                {
+                    Logger.Normal($"Uploading file \"{file}\"...");
+                    webClient.UploadFile(address, file);
+                    Logger.Success($"File uploaded: {file}");
+                }
+                catch (WebException e)
+                {
+                    string response;
+                    using (var stream = e.Response?.GetResponseStream() ?? Stream.Null)
+                    using (var reader = new StreamReader(stream))
+                    {
+                        response = reader.ReadToEnd();
+                    }
+                    Logger.Warn($"Failed to upload file \"{file}\".\nStatus: {e.Status}\nResponse:\n{response}");
+                }
+            }
+        }
+
+        static string GetType(TestType type)
+            => type switch
+            {
+                TestType.MsTest => "mstest",
+                TestType.XUnit => "xunit",
+                TestType.NUnit => "nunit",
+                TestType.NUnit3 => "nunit3",
+                _ => "mstest"
+            };
+    }
+}
\ No newline at end of file
diff --git a/build/Integration/BuildTrigger.cs b/build/Integration/BuildTrigger.cs
new file mode 100644
index 00000000..d0676261
--- /dev/null
+++ b/build/Integration/BuildTrigger.cs
@@ -0,0 +1,11 @@
+namespace Integration
+{
+    public enum BuildTrigger
+    {
+        Invalid = 0,
+        SemVerTag,
+        PullRequest,
+        MasterBranch,
+        UnknownBranchOrTag
+    }
+}
\ No newline at end of file
diff --git a/build/Integration/BuildTriggerAttribute.cs b/build/Integration/BuildTriggerAttribute.cs
new file mode 100644
index 00000000..1e248c1c
--- /dev/null
+++ b/build/Integration/BuildTriggerAttribute.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Reflection;
+using Nuke.Common.CI.AppVeyor;
+using Nuke.Common.ValueInjection;
+
+namespace Integration
+{
+    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
+    public class BuildTriggerAttribute : ValueInjectionAttributeBase
+    {
+        public override object GetValue(MemberInfo member, object instance)
+            => AppVeyor.Instance?.GetTrigger();
+    }
+}
\ No newline at end of file
diff --git a/build/Integration/EnvironmentVariableAtttribute.cs b/build/Integration/EnvironmentVariableAtttribute.cs
new file mode 100644
index 00000000..b7bc7f46
--- /dev/null
+++ b/build/Integration/EnvironmentVariableAtttribute.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Reflection;
+using JetBrains.Annotations;
+using Nuke.Common.ValueInjection;
+
+namespace Integration
+{
+    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
+    public class EnvironmentVariableAttribute : ValueInjectionAttributeBase
+    {
+        readonly string Name;
+
+        public EnvironmentVariableAttribute([NotNull] string name)
+        {
+            Name = name ?? throw new ArgumentNullException(nameof(name));
+        }
+
+        public override object GetValue(MemberInfo member, object instance)
+            => Environment.GetEnvironmentVariable(Name);
+    }
+}
\ No newline at end of file
diff --git a/build/Integration/TestType.cs b/build/Integration/TestType.cs
new file mode 100644
index 00000000..38fe8936
--- /dev/null
+++ b/build/Integration/TestType.cs
@@ -0,0 +1,11 @@
+namespace Integration
+{
+    public enum TestType
+    {
+        None = 0,
+        MsTest,
+        XUnit,
+        NUnit,
+        NUnit3,
+    }
+}
\ No newline at end of file
diff --git a/build/_build.csproj b/build/_build.csproj
new file mode 100644
index 00000000..e41838c0
--- /dev/null
+++ b/build/_build.csproj
@@ -0,0 +1,20 @@
+
+
+  
+    Exe
+    net5.0
+    
+    CS0649;CS0169
+    ..
+    ..
+    9
+  
+
+  
+    
+    
+    
+    
+  
+
+
diff --git a/build/_build.csproj.DotSettings b/build/_build.csproj.DotSettings
new file mode 100644
index 00000000..7bc28484
--- /dev/null
+++ b/build/_build.csproj.DotSettings
@@ -0,0 +1,27 @@
+
+	DO_NOT_SHOW
+	DO_NOT_SHOW
+	DO_NOT_SHOW
+	DO_NOT_SHOW
+	Implicit
+	Implicit
+	ExpressionBody
+	0
+	NEXT_LINE
+	True
+	False
+	120
+	IF_OWNER_IS_SINGLE_LINE
+	WRAP_IF_LONG
+	False
+	<Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+	<Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" />
+	True
+	True
+	True
+	True
+	True
+	True
+	True
+	True
+	True
diff --git a/global.json b/global.json
new file mode 100644
index 00000000..6e34824b
--- /dev/null
+++ b/global.json
@@ -0,0 +1,5 @@
+{
+  "sdk": {
+    "version": "5.0.401"
+  }
+}
\ No newline at end of file

From 15dfc1a19db5378c01d7ab855d00d5583f75e056 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 8 Nov 2021 23:10:03 +0200
Subject: [PATCH 03/30] Fixes preview package publish (#1300)

- Fixes NuGet push target path
- Fixes MyGet source
---
 build/Build.CI.AppVeyor.cs |  8 ++++----
 build/Build.cs             | 16 ++++++++--------
 build/Configuration.cs     |  2 --
 3 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/build/Build.CI.AppVeyor.cs b/build/Build.CI.AppVeyor.cs
index 13a8f1d5..0023dc30 100644
--- a/build/Build.CI.AppVeyor.cs
+++ b/build/Build.CI.AppVeyor.cs
@@ -35,12 +35,12 @@ partial class Build
 
     public static class AppVeyorSecrets
     {
+        public const string NuGetApiKeyName = "NUGET_API_KEY";
+        public const string NuGetApiKeyValue = "b/B9mFX99as5WjjR9Xzr7zAUDKwvCOmPgEkttJxcP+OClOv59lrcIE4OrsAdQRW3";
         public const string NuGetApiKey = NuGetApiKeyName + ":" + NuGetApiKeyValue;
-        const string NuGetApiKeyName = "NUGET_API_KEY";
-        const string NuGetApiKeyValue = "b/B9mFX99as5WjjR9Xzr7zAUDKwvCOmPgEkttJxcP+OClOv59lrcIE4OrsAdQRW3";
 
+        public const string MyGetApiKeyName = "MYGET_API_KEY";
+        public const string MyGetApiKeyValue = "hA4Ut1N2lrrdEtAN24Bty/FNiU0d/Ur/dLYSqpr8jKHOvoO7MU4jD+KwzUvATh+E";
         public const string MyGetApiKey = MyGetApiKeyName + ":" + MyGetApiKeyValue;
-        const string MyGetApiKeyName = "MYGET_API_KEY";
-        const string MyGetApiKeyValue = "hA4Ut1N2lrrdEtAN24Bty/FNiU0d/Ur/dLYSqpr8jKHOvoO7MU4jD+KwzUvATh+E";
     }
 }
\ No newline at end of file
diff --git a/build/Build.cs b/build/Build.cs
index 317debc9..43989e1c 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -1,5 +1,4 @@
 using System.Collections.Generic;
-using System.Linq;
 using Integration;
 using Nuke.Common;
 using Nuke.Common.CI;
@@ -27,7 +26,7 @@ partial class Build : NukeBuild
 
     [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
     readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
-    
+
     [Solution] readonly Solution Solution;
     [GitRepository] readonly GitRepository GitRepository;
     [GitVersion] readonly GitVersion GitVersion;
@@ -36,16 +35,16 @@ partial class Build : NukeBuild
     [PackageExecutable("NUnit.Runners", "nunit-console.exe")]
     readonly Tool NUnit2Runner;
 
-    [EnvironmentVariable("NUGET_API_KEY")] readonly string NuGetApiKey;
+    [EnvironmentVariable(AppVeyorSecrets.NuGetApiKeyName)] readonly string NuGetApiKey;
     readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
 
-    [EnvironmentVariable("MYGET_API_KEY")] readonly string MyGetApiKey;
-    readonly string MyGetSource = "https://api.nuget.org/v3/index.json";
+    [EnvironmentVariable(AppVeyorSecrets.MyGetApiKeyName)] readonly string MyGetApiKey;
+    readonly string MyGetSource = "https://www.myget.org/F/autofixture/api/v3/index.json";
 
     [Partition(2)] readonly Partition TestPartition;
 
-    IEnumerable TestProjects
-        => TestPartition.GetCurrent(Solution.GetProjects("*Test"));
+    IEnumerable TestProjects => TestPartition.GetCurrent(Solution.GetProjects("*Test"));
+    IEnumerable Packages => PackagesDirectory.GlobFiles("*.nupkg");
 
     AbsolutePath SourceDirectory => RootDirectory / "src";
     AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
@@ -192,6 +191,7 @@ IEnumerable TestProjects
                     !GitRepository.IsOnMasterBranch(),
                     v => v
                         .SetApiKey(MyGetApiKey)
-                        .SetApiKey(MyGetSource)));
+                        .SetSource(MyGetSource))
+                .CombineWith(Packages, (_, p) => _.SetTargetPath(p)));
         });
 }
\ No newline at end of file
diff --git a/build/Configuration.cs b/build/Configuration.cs
index 702cd6e0..78049f7e 100644
--- a/build/Configuration.cs
+++ b/build/Configuration.cs
@@ -1,6 +1,4 @@
-using System;
 using System.ComponentModel;
-using System.Linq;
 using Nuke.Common.Tooling;
 
 [TypeConverter(typeof(TypeConverter))]

From 32f2ca35ed584d105fb9b9e7cc29e84d75486342 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 22 Jan 2022 22:55:03 +0200
Subject: [PATCH 04/30] Move from AppVeyor to GitHub Actions (#1317)

* Added GitHub Actions integration
* Added additional SDK versions
* Optout of NUKE telemetry
* Removed NUnit 2 CLI tool
* Fixed coverage for some projects
* Made C# build deterministic assemblies
* Hidden NUKE logo in build logs
* Refactored targets
* Removed AppVeyor manual artifact upload
---
 .github/workflows/continuous.yml              |  51 ++++++++
 .github/workflows/release.yml                 |  64 +++++++++
 .nuke/build.schema.json                       |  28 +++-
 .../AutoFixture.NUnit2.UnitTest.csproj        |   7 +-
 Src/Common.Test.xUnit.props                   |  34 +++--
 Src/Common.props                              |   1 +
 build.ps1                                     |   1 +
 build.sh                                      |   1 +
 build/Build.CI.AppVeyor.cs                    |  12 +-
 build/Build.CI.GitHub.cs                      |  27 ++++
 build/Build.cs                                | 122 +++++++++++-------
 build/Integration/BuildTriggerAttribute.cs    |   2 +-
 .../EnvironmentVariableAtttribute.cs          |  21 ---
 build/_build.csproj                           |   1 -
 14 files changed, 282 insertions(+), 90 deletions(-)
 create mode 100644 .github/workflows/continuous.yml
 create mode 100644 .github/workflows/release.yml
 create mode 100644 build/Build.CI.GitHub.cs
 delete mode 100644 build/Integration/EnvironmentVariableAtttribute.cs

diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml
new file mode 100644
index 00000000..275a17c5
--- /dev/null
+++ b/.github/workflows/continuous.yml
@@ -0,0 +1,51 @@
+# ------------------------------------------------------------------------------
+# 
+#
+#     This code was generated.
+#
+#     - To turn off auto-generation set:
+#
+#         [GitHubActions (AutoGenerate = false)]
+#
+#     - To trigger manual generation invoke:
+#
+#         nuke --generate-configuration GitHubActions_continuous --host GitHubActions
+#
+# 
+# ------------------------------------------------------------------------------
+
+name: continuous
+
+on:
+  pull_request:
+    branches:
+      - master
+      - 'release/*'
+
+jobs:
+  windows-latest:
+    name: windows-latest
+    runs-on: windows-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: |
+            1.1.x
+            2.1.x
+            3.1.x
+            5.0.x
+            6.0.x
+      - name: Cache .nuke/temp, ~/.nuget/packages
+        uses: actions/cache@v2
+        with:
+          path: |
+            .nuke/temp
+            ~/.nuget/packages
+          key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }}
+      - name: Run './build.cmd Verify Cover Pack'
+        run: ./build.cmd Verify Cover Pack --no-logo
+        env:
+          GitHubToken: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..eb2b283a
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,64 @@
+# ------------------------------------------------------------------------------
+# 
+#
+#     This code was generated.
+#
+#     - To turn off auto-generation set:
+#
+#         [GitHubActions (AutoGenerate = false)]
+#
+#     - To trigger manual generation invoke:
+#
+#         nuke --generate-configuration GitHubActions_release --host GitHubActions
+#
+# 
+# ------------------------------------------------------------------------------
+
+name: release
+
+on:
+  push:
+    tags:
+      - 'v*'
+
+jobs:
+  windows-latest:
+    name: windows-latest
+    runs-on: windows-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - uses: actions/setup-dotnet@v1
+        with:
+          dotnet-version: |
+            1.1.x
+            2.1.x
+            3.1.x
+            5.0.x
+            6.0.x
+      - name: Cache .nuke/temp, ~/.nuget/packages
+        uses: actions/cache@v2
+        with:
+          path: |
+            .nuke/temp
+            ~/.nuget/packages
+          key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }}
+      - name: Run './build.cmd Verify Cover Publish'
+        run: ./build.cmd Verify Cover Publish --no-logo
+        env:
+          GitHubToken: ${{ secrets.GITHUB_TOKEN }}
+          MYGET_API_KEY: ${{ secrets.MYGET_API_KEY }}
+          NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
+      - uses: actions/upload-artifact@v1
+        with:
+          name: testresults
+          path: artifacts/testresults
+      - uses: actions/upload-artifact@v1
+        with:
+          name: reports
+          path: artifacts/reports
+      - uses: actions/upload-artifact@v1
+        with:
+          name: packages
+          path: artifacts/packages
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index b24bd728..61e6e681 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -6,6 +6,10 @@
     "build": {
       "type": "object",
       "properties": {
+        "CI": {
+          "type": "boolean",
+          "description": "Sets the continuous integration build flag"
+        },
         "Configuration": {
           "type": "string",
           "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
@@ -18,6 +22,15 @@
           "type": "boolean",
           "description": "Indicates to continue a previously failed build attempt"
         },
+        "Deterministic": {
+          "type": "boolean",
+          "description": "Makes the build deterministic when packaging assemblies"
+        },
+        "github-token": {
+          "type": "string",
+          "description": "GitHub auth token",
+          "default": "Secrets must be entered via 'nuke :secret [profile]'"
+        },
         "Help": {
           "type": "boolean",
           "description": "Shows the help text for this build assembly"
@@ -39,10 +52,20 @@
             "TravisCI"
           ]
         },
+        "MYGET_API_KEY": {
+          "type": "string",
+          "description": "MyGet API Key (secret)",
+          "default": "Secrets must be entered via 'nuke :secret [profile]'"
+        },
         "NoLogo": {
           "type": "boolean",
           "description": "Disables displaying the NUKE logo"
         },
+        "NUGET_API_KEY": {
+          "type": "string",
+          "description": "NuGet API Key (secret)",
+          "default": "Secrets must be entered via 'nuke :secret [profile]'"
+        },
         "Plan": {
           "type": "boolean",
           "description": "Shows the execution plan (HTML)"
@@ -64,6 +87,7 @@
           "items": {
             "type": "string",
             "enum": [
+              "AppVeyorPublish",
               "AppVeyorSetBuildVersion",
               "AppVeyorUploadTestResults",
               "Clean",
@@ -87,6 +111,7 @@
           "items": {
             "type": "string",
             "enum": [
+              "AppVeyorPublish",
               "AppVeyorSetBuildVersion",
               "AppVeyorUploadTestResults",
               "Clean",
@@ -100,9 +125,6 @@
             ]
           }
         },
-        "TestPartition": {
-          "type": "string"
-        },
         "Verbosity": {
           "type": "string",
           "description": "Logging verbosity during build execution. Default is 'Normal'",
diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
index 3474a7f7..4128cdc1 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
+++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
@@ -10,10 +10,15 @@
   
 
   
-    
     
     
     
+    
+
+    
+      all
+      runtime; build; native; contentfiles; analyzers; buildtransitive
+    
   
 
   
diff --git a/Src/Common.Test.xUnit.props b/Src/Common.Test.xUnit.props
index 17194c55..506e1575 100644
--- a/Src/Common.Test.xUnit.props
+++ b/Src/Common.Test.xUnit.props
@@ -2,16 +2,28 @@
   
     
     
-
-    
-      all
-      runtime; build; native; contentfiles; analyzers; buildtransitive
-    
-    
-      all
-      runtime; build; native; contentfiles; analyzers; buildtransitive
-    
-    
-    
   
+
+  
+    
+      
+        
+
+        
+          all
+          runtime; build; native; contentfiles; analyzers; buildtransitive
+        
+      
+    
+    
+      
+        
+
+        
+          all
+          runtime; build; native; contentfiles; analyzers; buildtransitive
+        
+      
+    
+  
 
diff --git a/Src/Common.props b/Src/Common.props
index d4adb0aa..4fbb1a7b 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -25,6 +25,7 @@
     https://raw.githubusercontent.com/AutoFixture/AutoFixture/79c882c3f4af3cf52ad43e5c95851f25d217ac17/AutoFixtureLogo200x200.png
     icon.png
     $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb
+    true
   
   
     
diff --git a/build.ps1 b/build.ps1
index bbaa118e..2b5054bd 100644
--- a/build.ps1
+++ b/build.ps1
@@ -23,6 +23,7 @@ $DotNetChannel = "Current"
 $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
 $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
 $env:DOTNET_MULTILEVEL_LOOKUP = 0
+$env:NUKE_TELEMETRY_OPTOUT = 1
 
 ###########################################################################
 # EXECUTION
diff --git a/build.sh b/build.sh
index e8961f99..d2874960 100755
--- a/build.sh
+++ b/build.sh
@@ -19,6 +19,7 @@ DOTNET_CHANNEL="Current"
 export DOTNET_CLI_TELEMETRY_OPTOUT=1
 export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
 export DOTNET_MULTILEVEL_LOOKUP=0
+export NUKE_TELEMETRY_OPTOUT=1
 
 ###########################################################################
 # EXECUTION
diff --git a/build/Build.CI.AppVeyor.cs b/build/Build.CI.AppVeyor.cs
index 0023dc30..07213ac2 100644
--- a/build/Build.CI.AppVeyor.cs
+++ b/build/Build.CI.AppVeyor.cs
@@ -6,7 +6,7 @@
 [AppVeyor(
     AppVeyorImage.VisualStudio2019,
     AutoGenerate = false,
-    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack), nameof(Publish) },
+    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack), nameof(AppVeyorPublish) },
     Secrets = new[] { AppVeyorSecrets.NuGetApiKey, AppVeyorSecrets.MyGetApiKey })]
 partial class Build
 {
@@ -33,14 +33,16 @@ partial class Build
                 $"{GitVersion.MajorMinorPatch}.{AppVeyor.BuildNumber}{GitVersion.PreReleaseTagWithDash}");
         });
 
+    Target AppVeyorPublish => _ => _
+        .OnlyWhenStatic(() => Trigger == BuildTrigger.SemVerTag)
+        .Executes(PublishPackages);
+
     public static class AppVeyorSecrets
     {
-        public const string NuGetApiKeyName = "NUGET_API_KEY";
         public const string NuGetApiKeyValue = "b/B9mFX99as5WjjR9Xzr7zAUDKwvCOmPgEkttJxcP+OClOv59lrcIE4OrsAdQRW3";
-        public const string NuGetApiKey = NuGetApiKeyName + ":" + NuGetApiKeyValue;
+        public const string NuGetApiKey = Secrets.NuGetApiKey + ":" + NuGetApiKeyValue;
 
-        public const string MyGetApiKeyName = "MYGET_API_KEY";
         public const string MyGetApiKeyValue = "hA4Ut1N2lrrdEtAN24Bty/FNiU0d/Ur/dLYSqpr8jKHOvoO7MU4jD+KwzUvATh+E";
-        public const string MyGetApiKey = MyGetApiKeyName + ":" + MyGetApiKeyValue;
+        public const string MyGetApiKey = Secrets.MyGetApiKey + ":" + MyGetApiKeyValue;
     }
 }
\ No newline at end of file
diff --git a/build/Build.CI.GitHub.cs b/build/Build.CI.GitHub.cs
new file mode 100644
index 00000000..07b8db3d
--- /dev/null
+++ b/build/Build.CI.GitHub.cs
@@ -0,0 +1,27 @@
+using Nuke.Common;
+using Nuke.Common.CI;
+using Nuke.Common.CI.GitHubActions;
+
+[GitHubActions(
+    "continuous",
+    GitHubActionsImage.WindowsLatest,
+    AutoGenerate = false,
+    OnPullRequestBranches = new[] { MasterBranch, ReleaseBranch },
+    PublishArtifacts = false,
+    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack) },
+    ImportGitHubTokenAs = nameof(GitHubToken))]
+[GitHubActions(
+    "release",
+    GitHubActionsImage.WindowsLatest,
+    AutoGenerate = false,
+    OnPushTags = new[] { "v*" },
+    PublishArtifacts = true,
+    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Publish) },
+    ImportGitHubTokenAs = nameof(GitHubToken),
+    ImportSecrets = new[] { Secrets.MyGetApiKey, Secrets.NuGetApiKey })]
+partial class Build
+{
+    [CI] readonly GitHubActions GitHubActions;
+
+    [Parameter("GitHub auth token", Name = "github-token"), Secret] readonly string GitHubToken;
+}
\ No newline at end of file
diff --git a/build/Build.cs b/build/Build.cs
index 43989e1c..28abf2ce 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using Integration;
 using Nuke.Common;
 using Nuke.Common.CI;
@@ -7,7 +8,6 @@
 using Nuke.Common.IO;
 using Nuke.Common.ProjectModel;
 using Nuke.Common.Tooling;
-using Nuke.Common.Tools.Coverlet;
 using Nuke.Common.Tools.DotNet;
 using Nuke.Common.Tools.GitVersion;
 using Nuke.Common.Tools.ReportGenerator;
@@ -24,6 +24,9 @@ partial class Build : NukeBuild
 {
     public static int Main() => Execute(x => x.Compile);
 
+    const string MasterBranch = "master";
+    const string ReleaseBranch = "release/*";
+
     [Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
     readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
 
@@ -32,24 +35,38 @@ partial class Build : NukeBuild
     [GitVersion] readonly GitVersion GitVersion;
     [BuildTrigger] readonly BuildTrigger Trigger;
 
-    [PackageExecutable("NUnit.Runners", "nunit-console.exe")]
-    readonly Tool NUnit2Runner;
+    [Parameter("Makes the build deterministic when packaging assemblies")] readonly bool Deterministic;
+    [Parameter("Sets the continuous integration build flag")] readonly bool CI;
+
+    [Secret]
+    [Parameter("NuGet API Key (secret)", Name = Secrets.NuGetApiKey)]
+    readonly string NuGetApiKey;
 
-    [EnvironmentVariable(AppVeyorSecrets.NuGetApiKeyName)] readonly string NuGetApiKey;
     readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
 
-    [EnvironmentVariable(AppVeyorSecrets.MyGetApiKeyName)] readonly string MyGetApiKey;
-    readonly string MyGetSource = "https://www.myget.org/F/autofixture/api/v3/index.json";
+    [Secret]
+    [Parameter("MyGet API Key (secret)", Name = Secrets.MyGetApiKey)]
+    readonly string MyGetApiKey;
 
-    [Partition(2)] readonly Partition TestPartition;
+    readonly string MyGetSource = "https://www.myget.org/F/autofixture/api/v3/index.json";
 
-    IEnumerable TestProjects => TestPartition.GetCurrent(Solution.GetProjects("*Test"));
+    IEnumerable Excluded => new []
+    {
+        Solution.GetProject("_build"),
+        Solution.GetProject("TestTypeFoundation")
+    };
+    IEnumerable TestProjects => Solution.GetProjects("*Test");
+    IEnumerable Libraries => Solution.Projects.Except(TestProjects).Except(Excluded);
+    IEnumerable CSharpLibraries => Libraries.Where(x => x.Is(ProjectType.CSharpProject));
+    IEnumerable FSharpLibraries => Libraries.Where(x => x.Path.ToString().EndsWith(".fsproj"));
     IEnumerable Packages => PackagesDirectory.GlobFiles("*.nupkg");
 
+    bool IsDeterministic => IsServerBuild || Deterministic;
+    bool IsContinuousIntegration => IsServerBuild || CI;
+
     AbsolutePath SourceDirectory => RootDirectory / "src";
     AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
     AbsolutePath TestResultsDirectory => ArtifactsDirectory / "testresults";
-    AbsolutePath CoverageDirectory => ArtifactsDirectory / "coverage";
     AbsolutePath ReportsDirectory => ArtifactsDirectory / "reports";
     AbsolutePath PackagesDirectory => ArtifactsDirectory / "packages";
 
@@ -82,6 +99,7 @@ partial class Build : NukeBuild
                 .SetProjectFile(Solution)
                 .SetConfiguration("Verify")
                 .SetNoRestore(FinishedTargets.Contains(Restore))
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false")));
         });
@@ -98,6 +116,7 @@ partial class Build : NukeBuild
                 .SetFileVersion(GitVersion.AssemblySemFileVer)
                 .SetInformationalVersion(GitVersion.InformationalVersion)
                 .SetNoRestore(FinishedTargets.Contains(Restore))
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false")));
         });
@@ -105,35 +124,22 @@ partial class Build : NukeBuild
     Target Test => _ => _
         .DependsOn(Compile)
         .Produces(TestResultsDirectory / "*.zip")
-        .Produces(CoverageDirectory / "*.zip")
-        .Partition(() => TestPartition)
         .Executes(() =>
         {
             DotNetTest(s => s
                 .SetConfiguration(Configuration)
-                .SetNoBuild(FinishedTargets.Contains(Compile))
-                .ResetVerbosity()
                 .SetResultsDirectory(TestResultsDirectory)
+                .SetNoBuild(FinishedTargets.Contains(Compile))
+                .SetLogger("trx")
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false")
                     .Add("-- RunConfiguration.DisableAppDomain=true")
                     .Add("-- RunConfiguration.NoAutoReporters=true"))
                 .When(InvokedTargets.Contains(Cover), _ => _
-                    .EnableCollectCoverage()
-                    .SetCoverletOutputFormat(CoverletOutputFormat.cobertura)
-                    .SetExcludeByFile("**/TestTypeFoundation/**")
-                    .When(IsServerBuild, _ => _.EnableUseSourceLink()))
-                .CombineWith(TestProjects, (_, v) => _
-                    .SetProjectFile(v)
-                    .SetLogger("trx")
-                    .When(InvokedTargets.Contains(Cover), _ => _
-                        .SetCoverletOutput(CoverageDirectory / $"{v.Name}.xml"))));
+                    .SetDataCollector("XPlat Code Coverage"))
+                .CombineWith(TestProjects, (s, p) => s.SetProjectFile(p)));
 
             CompressZip(TestResultsDirectory, TestResultsDirectory / "TestResults.zip");
-            CompressZip(CoverageDirectory, CoverageDirectory / "CoverageResults.zip");
-
-            AppVeyor?.PushArtifact(TestResultsDirectory / "TestResults.zip");
-            AppVeyor?.PushArtifact(CoverageDirectory / "CoverageResults.zip");
         });
 
     Target Cover => _ => _
@@ -145,7 +151,8 @@ partial class Build : NukeBuild
         {
             ReportGenerator(_ => _
                 .SetFramework("netcoreapp2.1")
-                .SetReports(CoverageDirectory / "*.xml")
+                .SetAssemblyFilters("-TestTypeFoundation*")
+                .SetReports(TestResultsDirectory / "**" / "coverage.cobertura.xml")
                 .SetTargetDirectory(ReportsDirectory)
                 .SetReportTypes("lcov", ReportTypes.HtmlInline));
 
@@ -160,7 +167,20 @@ partial class Build : NukeBuild
         .Executes(() =>
         {
             DotNetPack(s => s
-                .SetProject(Solution)
+                .SetOutputDirectory(PackagesDirectory)
+                .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
+                .EnableIncludeSymbols()
+                .SetVersion(GitVersion.NuGetVersionV2)
+                .SetAssemblyVersion(GitVersion.AssemblySemVer)
+                .SetFileVersion(GitVersion.AssemblySemFileVer)
+                .SetInformationalVersion(GitVersion.InformationalVersion)
+                .SetDeterministic(IsDeterministic)
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
+                .SetProcessArgumentConfigurator(a => a
+                    .Add("/p:CheckEolTargetFramework=false"))
+                .CombineWith(CSharpLibraries, (s, p) => s.SetProject(p)));
+
+            DotNetPack(s => s
                 .SetConfiguration(Configuration)
                 .SetOutputDirectory(PackagesDirectory)
                 .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
@@ -169,29 +189,37 @@ partial class Build : NukeBuild
                 .SetAssemblyVersion(GitVersion.AssemblySemVer)
                 .SetFileVersion(GitVersion.AssemblySemFileVer)
                 .SetInformationalVersion(GitVersion.InformationalVersion)
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
-                    .Add("/p:CheckEolTargetFramework=false")));
+                    .Add("/p:CheckEolTargetFramework=false"))
+                .CombineWith(FSharpLibraries, (s, p) => s.SetProject(p)));
         });
 
     Target Publish => _ => _
         .DependsOn(Pack)
-        .OnlyWhenDynamic(() => IsServerBuild)
-        .OnlyWhenDynamic(() => AppVeyor != null && Trigger == BuildTrigger.SemVerTag)
         .Consumes(Pack)
-        .Executes(() =>
-        {
-            DotNetNuGetPush(s => s
-                .EnableSkipDuplicate()
-                .When(
-                    GitRepository.IsOnMasterBranch(),
-                    v => v
-                        .SetApiKey(NuGetApiKey)
-                        .SetSource(NuGetSource))
-                .When(
-                    !GitRepository.IsOnMasterBranch(),
-                    v => v
-                        .SetApiKey(MyGetApiKey)
-                        .SetSource(MyGetSource))
-                .CombineWith(Packages, (_, p) => _.SetTargetPath(p)));
-        });
+        .Executes(PublishPackages);
+
+    void PublishPackages()
+    {
+        DotNetNuGetPush(s => s
+            .EnableSkipDuplicate()
+            .When(
+                GitRepository.IsOnMasterBranch(),
+                v => v
+                    .SetApiKey(NuGetApiKey)
+                    .SetSource(NuGetSource))
+            .When(
+                !GitRepository.IsOnMasterBranch(),
+                v => v
+                    .SetApiKey(MyGetApiKey)
+                    .SetSource(MyGetSource))
+            .CombineWith(Packages, (_, p) => _.SetTargetPath(p)));
+    }
+
+    public static class Secrets
+    {
+        public const string MyGetApiKey = "MYGET_API_KEY";
+        public const string NuGetApiKey = "NUGET_API_KEY";
+    }
 }
\ No newline at end of file
diff --git a/build/Integration/BuildTriggerAttribute.cs b/build/Integration/BuildTriggerAttribute.cs
index 1e248c1c..435e42b4 100644
--- a/build/Integration/BuildTriggerAttribute.cs
+++ b/build/Integration/BuildTriggerAttribute.cs
@@ -9,6 +9,6 @@ namespace Integration
     public class BuildTriggerAttribute : ValueInjectionAttributeBase
     {
         public override object GetValue(MemberInfo member, object instance)
-            => AppVeyor.Instance?.GetTrigger();
+            => AppVeyor.Instance.GetTrigger();
     }
 }
\ No newline at end of file
diff --git a/build/Integration/EnvironmentVariableAtttribute.cs b/build/Integration/EnvironmentVariableAtttribute.cs
deleted file mode 100644
index b7bc7f46..00000000
--- a/build/Integration/EnvironmentVariableAtttribute.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Reflection;
-using JetBrains.Annotations;
-using Nuke.Common.ValueInjection;
-
-namespace Integration
-{
-    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
-    public class EnvironmentVariableAttribute : ValueInjectionAttributeBase
-    {
-        readonly string Name;
-
-        public EnvironmentVariableAttribute([NotNull] string name)
-        {
-            Name = name ?? throw new ArgumentNullException(nameof(name));
-        }
-
-        public override object GetValue(MemberInfo member, object instance)
-            => Environment.GetEnvironmentVariable(Name);
-    }
-}
\ No newline at end of file
diff --git a/build/_build.csproj b/build/_build.csproj
index e41838c0..450c63d1 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -14,7 +14,6 @@
     
     
     
-    
   
 
 

From a4b83a74e41babac557db57f0a1c19675e15b0d0 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Thu, 10 Feb 2022 00:14:56 +0200
Subject: [PATCH 05/30] Raised minimum .NET Framework target version to 4.6.1

---
 .../AutoFixture.NUnit2.UnitTest.csproj                          | 2 +-
 Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj                | 2 +-
 Src/TestTypeFoundation/TestTypeFoundation.csproj                | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
index 4128cdc1..3dc6210a 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
+++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
@@ -3,7 +3,7 @@
   
 
   
-    net452
+    net461
     AutoFixture.NUnit2.UnitTest
     AutoFixture.NUnit2.UnitTest
     AutoFixture.NUnit2.UnitTest
diff --git a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
index 619dd340..d393a2d1 100644
--- a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
+++ b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
@@ -2,7 +2,7 @@
   
 
   
-    net452
+    net461
     AutoFixture.NUnit2
     AutoFixture.NUnit2
     AutoFixture.NUnit2
diff --git a/Src/TestTypeFoundation/TestTypeFoundation.csproj b/Src/TestTypeFoundation/TestTypeFoundation.csproj
index e35da2e2..e387c4a8 100644
--- a/Src/TestTypeFoundation/TestTypeFoundation.csproj
+++ b/Src/TestTypeFoundation/TestTypeFoundation.csproj
@@ -3,7 +3,7 @@
   
 
   
-    net452;netstandard1.2
+    net461;netstandard1.2
     TestTypeFoundation
     TestTypeFoundation
   

From ae65d2177c564b99e675d03333c2b93ed6481d0d Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Thu, 10 Feb 2022 01:14:27 +0200
Subject: [PATCH 06/30] Dropped support for FakeItEasy v2 to v5

---
 Src/All.sln | 58 +++++------------------------------------------------
 1 file changed, 5 insertions(+), 53 deletions(-)

diff --git a/Src/All.sln b/Src/All.sln
index 714d8a44..bebad98a 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30114.105
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.32112.339
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture", "AutoFixture\AutoFixture.csproj", "{400AC174-9A4A-4C7D-815B-F2A21130A0D1}"
 EndProject
@@ -13,8 +13,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestTypeFoundation", "TestT
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy", "AutoFakeItEasy\AutoFakeItEasy.csproj", "{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy2", "AutoFakeItEasy2\AutoFakeItEasy2.csproj", "{68A3F347-7D9D-4020-A3D5-F127234DD429}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasyUnitTest", "AutoFakeItEasyUnitTest\AutoFakeItEasyUnitTest.csproj", "{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2", "AutoFixture.NUnit2\AutoFixture.NUnit2.csproj", "{786AFDB3-B705-49DD-A565-34F44A4A2DAD}"
@@ -68,12 +66,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 		Common.Test.xUnit.props = Common.Test.xUnit.props
 	EndProjectSection
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy2UnitTest", "AutoFakeItEasy.FakeItEasy2UnitTest\AutoFakeItEasy.FakeItEasy2UnitTest.csproj", "{7F957CC0-79C3-48A1-9A3E-47BED7539248}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy3UnitTest", "AutoFakeItEasy.FakeItEasy3UnitTest\AutoFakeItEasy.FakeItEasy3UnitTest.csproj", "{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy4UnitTest", "AutoFakeItEasy.FakeItEasy4UnitTest\AutoFakeItEasy.FakeItEasy4UnitTest.csproj", "{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}"
-EndProject
 Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck.FsCheck1UnitTest", "Idioms.FsCheck.FsCheck1UnitTest\Idioms.FsCheck.FsCheck1UnitTest.fsproj", "{42270230-D6FC-4FE8-ACE9-334006BF6692}"
 EndProject
 Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck.FsCheck2UnitTest", "Idioms.FsCheck.FsCheck2UnitTest\Idioms.FsCheck.FsCheck2UnitTest.fsproj", "{3C9C7C3E-452D-4ECE-9124-854406758A6D}"
@@ -84,12 +76,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy5UnitTest", "AutoFakeItEasy.FakeItEasy5UnitTest\AutoFakeItEasy.FakeItEasy5UnitTest.csproj", "{FA9FA942-3E9F-49B5-A622-396DB0FC791F}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute4UnitTest", "AutoNSubstitute.NSubstitute4UnitTest\AutoNSubstitute.NSubstitute4UnitTest.csproj", "{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy6UnitTest", "AutoFakeItEasy.FakeItEasy6UnitTest\AutoFakeItEasy.FakeItEasy6UnitTest.csproj", "{311A3010-B938-4832-9D3A-21A1A56FE5EA}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy7UnitTest", "AutoFakeItEasy.FakeItEasy7UnitTest\AutoFakeItEasy.FakeItEasy7UnitTest.csproj", "{1B42519B-24C2-4141-83A3-AB68AB09EE28}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{E709A052-9203-4991-954B-193F0E2046A3}"
@@ -131,12 +119,6 @@ Global
 		{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Release|Any CPU.Build.0 = Release|Any CPU
 		{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{68A3F347-7D9D-4020-A3D5-F127234DD429}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{68A3F347-7D9D-4020-A3D5-F127234DD429}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{68A3F347-7D9D-4020-A3D5-F127234DD429}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{68A3F347-7D9D-4020-A3D5-F127234DD429}.Release|Any CPU.Build.0 = Release|Any CPU
-		{68A3F347-7D9D-4020-A3D5-F127234DD429}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{68A3F347-7D9D-4020-A3D5-F127234DD429}.Verify|Any CPU.Build.0 = Verify|Any CPU
 		{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -263,24 +245,6 @@ Global
 		{730E1D38-BA80-48C7-B05C-E2BD29F38851}.Release|Any CPU.Build.0 = Release|Any CPU
 		{730E1D38-BA80-48C7-B05C-E2BD29F38851}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{730E1D38-BA80-48C7-B05C-E2BD29F38851}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{7F957CC0-79C3-48A1-9A3E-47BED7539248}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{7F957CC0-79C3-48A1-9A3E-47BED7539248}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7F957CC0-79C3-48A1-9A3E-47BED7539248}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{7F957CC0-79C3-48A1-9A3E-47BED7539248}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7F957CC0-79C3-48A1-9A3E-47BED7539248}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{7F957CC0-79C3-48A1-9A3E-47BED7539248}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}.Release|Any CPU.Build.0 = Release|Any CPU
-		{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{A7AE8091-3AC8-42A3-ACEB-32F49A8B05D1}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{B8B07C7C-E7C8-4272-AAA4-E4ED4CCD249C}.Verify|Any CPU.Build.0 = Verify|Any CPU
 		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -311,33 +275,21 @@ Global
 		{0F3C467A-ED89-4348-9210-FC2D358E20C5}.Release|Any CPU.Build.0 = Release|Any CPU
 		{0F3C467A-ED89-4348-9210-FC2D358E20C5}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{0F3C467A-ED89-4348-9210-FC2D358E20C5}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{FA9FA942-3E9F-49B5-A622-396DB0FC791F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{FA9FA942-3E9F-49B5-A622-396DB0FC791F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{FA9FA942-3E9F-49B5-A622-396DB0FC791F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{FA9FA942-3E9F-49B5-A622-396DB0FC791F}.Release|Any CPU.Build.0 = Release|Any CPU
-		{FA9FA942-3E9F-49B5-A622-396DB0FC791F}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{FA9FA942-3E9F-49B5-A622-396DB0FC791F}.Verify|Any CPU.Build.0 = Verify|Any CPU
 		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Release|Any CPU.Build.0 = Release|Any CPU
 		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{311A3010-B938-4832-9D3A-21A1A56FE5EA}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{E709A052-9203-4991-954B-193F0E2046A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E709A052-9203-4991-954B-193F0E2046A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E709A052-9203-4991-954B-193F0E2046A3}.Verify|Any CPU.ActiveCfg = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Release|Any CPU.Build.0 = Release|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Verify|Any CPU.Build.0 = Verify|Any CPU
+		{E709A052-9203-4991-954B-193F0E2046A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E709A052-9203-4991-954B-193F0E2046A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E709A052-9203-4991-954B-193F0E2046A3}.Verify|Any CPU.ActiveCfg = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

From fa387ba5e2469a245a7f1c70442f4a830f3276a6 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Thu, 10 Feb 2022 01:29:14 +0200
Subject: [PATCH 07/30] Removed netstandard1.x and netcoreapp1.x targets

---
 Src/Common.Test.xUnit.props                   | 27 +++++--------------
 .../TestTypeFoundation.csproj                 |  2 +-
 2 files changed, 8 insertions(+), 21 deletions(-)

diff --git a/Src/Common.Test.xUnit.props b/Src/Common.Test.xUnit.props
index 506e1575..502f8b6e 100644
--- a/Src/Common.Test.xUnit.props
+++ b/Src/Common.Test.xUnit.props
@@ -4,26 +4,13 @@
     
   
 
-  
-    
-      
-        
+  
+    
 
-        
-          all
-          runtime; build; native; contentfiles; analyzers; buildtransitive
-        
-      
-    
-    
-      
-        
+    
+      all
+      runtime; build; native; contentfiles; analyzers; buildtransitive
+    
+  
 
-        
-          all
-          runtime; build; native; contentfiles; analyzers; buildtransitive
-        
-      
-    
-  
 
diff --git a/Src/TestTypeFoundation/TestTypeFoundation.csproj b/Src/TestTypeFoundation/TestTypeFoundation.csproj
index e387c4a8..b57501dc 100644
--- a/Src/TestTypeFoundation/TestTypeFoundation.csproj
+++ b/Src/TestTypeFoundation/TestTypeFoundation.csproj
@@ -3,7 +3,7 @@
   
 
   
-    net461;netstandard1.2
+    net461;netstandard2.0
     TestTypeFoundation
     TestTypeFoundation
   

From b55e845ed6e946fa4c2ad75ec9ac8a0653ac1365 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 4 Dec 2023 15:38:16 +0200
Subject: [PATCH 08/30] Updated build script and project references (#1424)

* Consolidated test project dependencies
* Added missing test project
* Hidden net sdk deprecation warning
* Updated NUnit3TestAdapter
* Updated .gitignore
* Inlined PublishPackages() build script method
* Removed AppVeyor CI integration
* Removed AppVeyor integration
* Disabled loading MyGet key on GitHub
* Removed unused sdks
---
 .github/workflows/continuous.yml              |   2 -
 .github/workflows/release.yml                 |   3 -
 .gitignore                                    | 392 +++++++++++++++++-
 .nuke/build.schema.json                       |  11 -
 Src/All.sln                                   |   8 +
 .../AutoFixture.NUnit2.UnitTest.csproj        |   6 -
 Src/Common.Test.props                         |   9 +
 Src/Common.Test.xUnit.props                   |   9 +-
 Src/Common.props                              |   3 +
 build/Build.CI.AppVeyor.cs                    |  48 ---
 build/Build.CI.GitHub.cs                      |   2 +-
 build/Build.cs                                |  38 +-
 build/Integration/AppVeyorExtensions.cs       |  70 ----
 build/Integration/BuildTrigger.cs             |  11 -
 build/Integration/BuildTriggerAttribute.cs    |  14 -
 build/Integration/TestType.cs                 |  11 -
 global.json                                   |   3 +-
 17 files changed, 404 insertions(+), 236 deletions(-)
 delete mode 100644 build/Build.CI.AppVeyor.cs
 delete mode 100644 build/Integration/AppVeyorExtensions.cs
 delete mode 100644 build/Integration/BuildTrigger.cs
 delete mode 100644 build/Integration/BuildTriggerAttribute.cs
 delete mode 100644 build/Integration/TestType.cs

diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml
index 275a17c5..28ca0734 100644
--- a/.github/workflows/continuous.yml
+++ b/.github/workflows/continuous.yml
@@ -33,11 +33,9 @@ jobs:
       - uses: actions/setup-dotnet@v1
         with:
           dotnet-version: |
-            1.1.x
             2.1.x
             3.1.x
             5.0.x
-            6.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
         uses: actions/cache@v2
         with:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index eb2b283a..83ca696b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -32,11 +32,9 @@ jobs:
       - uses: actions/setup-dotnet@v1
         with:
           dotnet-version: |
-            1.1.x
             2.1.x
             3.1.x
             5.0.x
-            6.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
         uses: actions/cache@v2
         with:
@@ -48,7 +46,6 @@ jobs:
         run: ./build.cmd Verify Cover Publish --no-logo
         env:
           GitHubToken: ${{ secrets.GITHUB_TOKEN }}
-          MYGET_API_KEY: ${{ secrets.MYGET_API_KEY }}
           NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
       - uses: actions/upload-artifact@v1
         with:
diff --git a/.gitignore b/.gitignore
index 56339a6b..8dd4607a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,52 +1,398 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
 [Dd]ebug/
+[Dd]ebugPublic/
 [Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
 [Bb]in/
 [Oo]bj/
-[Hh]elp/
+[Ll]og/
+[Ll]ogs/
 
-# User-specific files
-*.suo
-*.user
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
 
-# DotCover is a Code Coverage Tool
-*.dotCover
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.tlog
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
 
 # ReSharper is a .NET coding add-in
 _ReSharper*/
 *.[Rr]e[Ss]harper
 *.DotSettings.user
 
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
 # NCrunch
 _NCrunch_*
 .*crunch*.local.xml
 nCrunchTemp_*
 
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio 6 auto-generated project file (contains which files were open etc.)
+*.vbp
+
+# Visual Studio 6 workspace and project file (working project files containing files to include in project)
+*.dsw
+*.dsp
+
+# Visual Studio 6 technical files
+*.ncb
+*.aps
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
 # FAKE - F# Make
 .fake/
 
-# NUKE - C# Build
-.nuke/temp/
+# CodeRush personal settings
+.cr/personal
 
-# JetBrains Rider
-.idea/
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
 
-# Visual Studio 2015 cache/options directory
-.vs/
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
 
-# VS Code cache/options
-.vscode/
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# Visual Studio History (VSHistory) files
+.vshistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
 .ionide/
 
-# package files can be ignored because of the NuGet restore
-**/packages/*
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
 
-# Tmp modified files
-*.orig
+# VS Code files for those working on multiple tools
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+*.code-workspace
 
-# Temp build artifacts and tools
-artifacts/
+# Local History for Visual Studio Code
+.history/
 
-# VIM tmp files
-*.swp
+# Windows Installer files from build outputs
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
 
-.tmp/
\ No newline at end of file
+# JetBrains Rider
+*.sln.iml
\ No newline at end of file
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index 61e6e681..da91f722 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -52,11 +52,6 @@
             "TravisCI"
           ]
         },
-        "MYGET_API_KEY": {
-          "type": "string",
-          "description": "MyGet API Key (secret)",
-          "default": "Secrets must be entered via 'nuke :secret [profile]'"
-        },
         "NoLogo": {
           "type": "boolean",
           "description": "Disables displaying the NUKE logo"
@@ -87,9 +82,6 @@
           "items": {
             "type": "string",
             "enum": [
-              "AppVeyorPublish",
-              "AppVeyorSetBuildVersion",
-              "AppVeyorUploadTestResults",
               "Clean",
               "Compile",
               "Cover",
@@ -111,9 +103,6 @@
           "items": {
             "type": "string",
             "enum": [
-              "AppVeyorPublish",
-              "AppVeyorSetBuildVersion",
-              "AppVeyorUploadTestResults",
               "Clean",
               "Compile",
               "Cover",
diff --git a/Src/All.sln b/Src/All.sln
index 315ac2c8..ca73914f 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -84,6 +84,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{16506C81-BE25-498B-AEE8-E14D0E6F0108}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy8UnitTest", "AutoFakeItEasy.FakeItEasy8UnitTest\AutoFakeItEasy.FakeItEasy8UnitTest.csproj", "{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -298,6 +300,12 @@ Global
 		{16506C81-BE25-498B-AEE8-E14D0E6F0108}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{16506C81-BE25-498B-AEE8-E14D0E6F0108}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{16506C81-BE25-498B-AEE8-E14D0E6F0108}.Verify|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
+		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Verify|Any CPU.Build.0 = Verify|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
index 3dc6210a..315e6266 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
+++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
@@ -13,12 +13,6 @@
     
     
     
-    
-
-    
-      all
-      runtime; build; native; contentfiles; analyzers; buildtransitive
-    
   
 
   
diff --git a/Src/Common.Test.props b/Src/Common.Test.props
index 2e7fb838..9ac3c27f 100644
--- a/Src/Common.Test.props
+++ b/Src/Common.Test.props
@@ -16,4 +16,13 @@
     
     true
   
+
+  
+    
+
+    
+      all
+      runtime; build; native; contentfiles; analyzers; buildtransitive
+    
+  
 
diff --git a/Src/Common.Test.xUnit.props b/Src/Common.Test.xUnit.props
index 502f8b6e..cb8aae1c 100644
--- a/Src/Common.Test.xUnit.props
+++ b/Src/Common.Test.xUnit.props
@@ -1,16 +1,9 @@
 
   
     
-    
-  
-
-  
-    
-
-    
+    
       all
       runtime; build; native; contentfiles; analyzers; buildtransitive
     
   
-
 
diff --git a/Src/Common.props b/Src/Common.props
index 4fbb1a7b..ac7aa3d7 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -17,6 +17,9 @@
 
     true
 
+    
+    $(NoWarn);NETSDK1138;NU1902;NU1903
+
     
     Mark Seemann,AutoFixture
     https://github.com/AutoFixture/AutoFixture
diff --git a/build/Build.CI.AppVeyor.cs b/build/Build.CI.AppVeyor.cs
deleted file mode 100644
index 07213ac2..00000000
--- a/build/Build.CI.AppVeyor.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using Integration;
-using Nuke.Common;
-using Nuke.Common.CI;
-using Nuke.Common.CI.AppVeyor;
-
-[AppVeyor(
-    AppVeyorImage.VisualStudio2019,
-    AutoGenerate = false,
-    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack), nameof(AppVeyorPublish) },
-    Secrets = new[] { AppVeyorSecrets.NuGetApiKey, AppVeyorSecrets.MyGetApiKey })]
-partial class Build
-{
-    [CI] readonly AppVeyor AppVeyor;
-
-    Target AppVeyorUploadTestResults => _ => _
-        .TriggeredBy(Test)
-        .After(Test)
-        .Before(Pack)
-        .OnlyWhenDynamic(() => IsServerBuild && AppVeyor != null)
-        .Executes(() =>
-        {
-            AppVeyor.UploadTestResults(TestType.MsTest, TestResultsDirectory, "*.trx");
-            AppVeyor.UploadTestResults(TestType.NUnit, TestResultsDirectory, "*.xml");
-        });
-
-    Target AppVeyorSetBuildVersion => _ => _
-        .TriggeredBy(Restore)
-        .After(Restore)
-        .OnlyWhenDynamic(() => IsServerBuild && AppVeyor != null)
-        .Executes(() =>
-        {
-            AppVeyor.UpdateBuildVersion(
-                $"{GitVersion.MajorMinorPatch}.{AppVeyor.BuildNumber}{GitVersion.PreReleaseTagWithDash}");
-        });
-
-    Target AppVeyorPublish => _ => _
-        .OnlyWhenStatic(() => Trigger == BuildTrigger.SemVerTag)
-        .Executes(PublishPackages);
-
-    public static class AppVeyorSecrets
-    {
-        public const string NuGetApiKeyValue = "b/B9mFX99as5WjjR9Xzr7zAUDKwvCOmPgEkttJxcP+OClOv59lrcIE4OrsAdQRW3";
-        public const string NuGetApiKey = Secrets.NuGetApiKey + ":" + NuGetApiKeyValue;
-
-        public const string MyGetApiKeyValue = "hA4Ut1N2lrrdEtAN24Bty/FNiU0d/Ur/dLYSqpr8jKHOvoO7MU4jD+KwzUvATh+E";
-        public const string MyGetApiKey = Secrets.MyGetApiKey + ":" + MyGetApiKeyValue;
-    }
-}
\ No newline at end of file
diff --git a/build/Build.CI.GitHub.cs b/build/Build.CI.GitHub.cs
index 07b8db3d..c71c7d08 100644
--- a/build/Build.CI.GitHub.cs
+++ b/build/Build.CI.GitHub.cs
@@ -18,7 +18,7 @@
     PublishArtifacts = true,
     InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Publish) },
     ImportGitHubTokenAs = nameof(GitHubToken),
-    ImportSecrets = new[] { Secrets.MyGetApiKey, Secrets.NuGetApiKey })]
+    ImportSecrets = new[] { Secrets.NuGetApiKey })]
 partial class Build
 {
     [CI] readonly GitHubActions GitHubActions;
diff --git a/build/Build.cs b/build/Build.cs
index 28abf2ce..73e9a37f 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -1,6 +1,5 @@
 using System.Collections.Generic;
 using System.Linq;
-using Integration;
 using Nuke.Common;
 using Nuke.Common.CI;
 using Nuke.Common.Execution;
@@ -33,7 +32,6 @@ partial class Build : NukeBuild
     [Solution] readonly Solution Solution;
     [GitRepository] readonly GitRepository GitRepository;
     [GitVersion] readonly GitVersion GitVersion;
-    [BuildTrigger] readonly BuildTrigger Trigger;
 
     [Parameter("Makes the build deterministic when packaging assemblies")] readonly bool Deterministic;
     [Parameter("Sets the continuous integration build flag")] readonly bool CI;
@@ -44,12 +42,6 @@ partial class Build : NukeBuild
 
     readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
 
-    [Secret]
-    [Parameter("MyGet API Key (secret)", Name = Secrets.MyGetApiKey)]
-    readonly string MyGetApiKey;
-
-    readonly string MyGetSource = "https://www.myget.org/F/autofixture/api/v3/index.json";
-
     IEnumerable Excluded => new []
     {
         Solution.GetProject("_build"),
@@ -198,28 +190,20 @@ partial class Build : NukeBuild
     Target Publish => _ => _
         .DependsOn(Pack)
         .Consumes(Pack)
-        .Executes(PublishPackages);
-
-    void PublishPackages()
-    {
-        DotNetNuGetPush(s => s
-            .EnableSkipDuplicate()
-            .When(
-                GitRepository.IsOnMasterBranch(),
-                v => v
-                    .SetApiKey(NuGetApiKey)
-                    .SetSource(NuGetSource))
-            .When(
-                !GitRepository.IsOnMasterBranch(),
-                v => v
-                    .SetApiKey(MyGetApiKey)
-                    .SetSource(MyGetSource))
-            .CombineWith(Packages, (_, p) => _.SetTargetPath(p)));
-    }
+        .Executes(() =>
+        {
+            DotNetNuGetPush(s => s
+                .EnableSkipDuplicate()
+                .When(
+                    GitRepository.IsOnMasterBranch() || GitRepository.IsOnReleaseBranch(),
+                    v => v
+                        .SetApiKey(NuGetApiKey)
+                        .SetSource(NuGetSource))
+                .CombineWith(Packages, (_, p) => _.SetTargetPath(p)));
+        });
 
     public static class Secrets
     {
-        public const string MyGetApiKey = "MYGET_API_KEY";
         public const string NuGetApiKey = "NUGET_API_KEY";
     }
 }
\ No newline at end of file
diff --git a/build/Integration/AppVeyorExtensions.cs b/build/Integration/AppVeyorExtensions.cs
deleted file mode 100644
index 8b5a9c63..00000000
--- a/build/Integration/AppVeyorExtensions.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System.Diagnostics.CodeAnalysis;
-using System.IO;
-using System.Net;
-using System.Text.RegularExpressions;
-using Nuke.Common;
-using Nuke.Common.CI.AppVeyor;
-using Nuke.Common.IO;
-
-namespace Integration
-{
-    public static class AppVeyorExtensions
-    {
-        public static BuildTrigger GetTrigger(this AppVeyor environment)
-        {
-            if (environment == null) return BuildTrigger.Invalid;
-
-            var tag = environment.RepositoryTag ? environment.RepositoryTagName : null;
-            var isPr = environment.PullRequestNumber.HasValue;
-            var branchName = environment.RepositoryBranch;
-
-            return (tag, isPr, branchName) switch
-            {
-                ({ } t, _, _) when Regex.IsMatch(t, "^v\\d.*") => BuildTrigger.SemVerTag,
-                (_, true, _) => BuildTrigger.PullRequest,
-                (_, _, "master") => BuildTrigger.MasterBranch,
-                _ => BuildTrigger.UnknownBranchOrTag
-            };
-        }
-
-        public static void UploadTestResults([NotNull] this AppVeyor environment,
-            TestType type, AbsolutePath directory, params string[] patterns)
-        {
-            var testType = GetType(type);
-            var address = $"https://ci.appveyor.com/api/testresults/{testType}/{environment.JobId}";
-            var webClient = new WebClient();
-
-            var files = directory.GlobFiles(patterns);
-
-            foreach (var file in files)
-            {
-                try
-                {
-                    Logger.Normal($"Uploading file \"{file}\"...");
-                    webClient.UploadFile(address, file);
-                    Logger.Success($"File uploaded: {file}");
-                }
-                catch (WebException e)
-                {
-                    string response;
-                    using (var stream = e.Response?.GetResponseStream() ?? Stream.Null)
-                    using (var reader = new StreamReader(stream))
-                    {
-                        response = reader.ReadToEnd();
-                    }
-                    Logger.Warn($"Failed to upload file \"{file}\".\nStatus: {e.Status}\nResponse:\n{response}");
-                }
-            }
-        }
-
-        static string GetType(TestType type)
-            => type switch
-            {
-                TestType.MsTest => "mstest",
-                TestType.XUnit => "xunit",
-                TestType.NUnit => "nunit",
-                TestType.NUnit3 => "nunit3",
-                _ => "mstest"
-            };
-    }
-}
\ No newline at end of file
diff --git a/build/Integration/BuildTrigger.cs b/build/Integration/BuildTrigger.cs
deleted file mode 100644
index d0676261..00000000
--- a/build/Integration/BuildTrigger.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Integration
-{
-    public enum BuildTrigger
-    {
-        Invalid = 0,
-        SemVerTag,
-        PullRequest,
-        MasterBranch,
-        UnknownBranchOrTag
-    }
-}
\ No newline at end of file
diff --git a/build/Integration/BuildTriggerAttribute.cs b/build/Integration/BuildTriggerAttribute.cs
deleted file mode 100644
index 435e42b4..00000000
--- a/build/Integration/BuildTriggerAttribute.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using System.Reflection;
-using Nuke.Common.CI.AppVeyor;
-using Nuke.Common.ValueInjection;
-
-namespace Integration
-{
-    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
-    public class BuildTriggerAttribute : ValueInjectionAttributeBase
-    {
-        public override object GetValue(MemberInfo member, object instance)
-            => AppVeyor.Instance.GetTrigger();
-    }
-}
\ No newline at end of file
diff --git a/build/Integration/TestType.cs b/build/Integration/TestType.cs
deleted file mode 100644
index 38fe8936..00000000
--- a/build/Integration/TestType.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Integration
-{
-    public enum TestType
-    {
-        None = 0,
-        MsTest,
-        XUnit,
-        NUnit,
-        NUnit3,
-    }
-}
\ No newline at end of file
diff --git a/global.json b/global.json
index 6e34824b..12f5f65b 100644
--- a/global.json
+++ b/global.json
@@ -1,5 +1,6 @@
 {
   "sdk": {
-    "version": "5.0.401"
+    "version": "5.0.401",
+    "rollForward": "latestMinor"
   }
 }
\ No newline at end of file

From 2ddcadbccdcfe7d3f3e2f52d4db15dbdd2f51991 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 4 Dec 2023 22:37:15 +0200
Subject: [PATCH 09/30] Added GitHub SemVer tag check (#1425)

---
 build/Build.CI.GitHub.cs         | 27 ---------------------------
 build/Build.cs                   | 24 +++++++++++++++++++++++-
 build/GitHubActionsExtensions.cs | 19 +++++++++++++++++++
 3 files changed, 42 insertions(+), 28 deletions(-)
 delete mode 100644 build/Build.CI.GitHub.cs
 create mode 100644 build/GitHubActionsExtensions.cs

diff --git a/build/Build.CI.GitHub.cs b/build/Build.CI.GitHub.cs
deleted file mode 100644
index c71c7d08..00000000
--- a/build/Build.CI.GitHub.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Nuke.Common;
-using Nuke.Common.CI;
-using Nuke.Common.CI.GitHubActions;
-
-[GitHubActions(
-    "continuous",
-    GitHubActionsImage.WindowsLatest,
-    AutoGenerate = false,
-    OnPullRequestBranches = new[] { MasterBranch, ReleaseBranch },
-    PublishArtifacts = false,
-    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack) },
-    ImportGitHubTokenAs = nameof(GitHubToken))]
-[GitHubActions(
-    "release",
-    GitHubActionsImage.WindowsLatest,
-    AutoGenerate = false,
-    OnPushTags = new[] { "v*" },
-    PublishArtifacts = true,
-    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Publish) },
-    ImportGitHubTokenAs = nameof(GitHubToken),
-    ImportSecrets = new[] { Secrets.NuGetApiKey })]
-partial class Build
-{
-    [CI] readonly GitHubActions GitHubActions;
-
-    [Parameter("GitHub auth token", Name = "github-token"), Secret] readonly string GitHubToken;
-}
\ No newline at end of file
diff --git a/build/Build.cs b/build/Build.cs
index 73e9a37f..530f7697 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -2,6 +2,7 @@
 using System.Linq;
 using Nuke.Common;
 using Nuke.Common.CI;
+using Nuke.Common.CI.GitHubActions;
 using Nuke.Common.Execution;
 using Nuke.Common.Git;
 using Nuke.Common.IO;
@@ -19,6 +20,23 @@
 [CheckBuildProjectConfigurations]
 [ShutdownDotNetAfterServerBuild]
 [DotNetVerbosityMapping]
+[GitHubActions(
+    "continuous",
+    GitHubActionsImage.WindowsLatest,
+    AutoGenerate = false,
+    OnPullRequestBranches = new[] { MasterBranch, ReleaseBranch },
+    PublishArtifacts = false,
+    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack) },
+    ImportGitHubTokenAs = nameof(GitHubToken))]
+[GitHubActions(
+    "release",
+    GitHubActionsImage.WindowsLatest,
+    AutoGenerate = false,
+    OnPushTags = new[] { "v*" },
+    PublishArtifacts = true,
+    InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Publish) },
+    ImportGitHubTokenAs = nameof(GitHubToken),
+    ImportSecrets = new[] { Secrets.NuGetApiKey })]
 partial class Build : NukeBuild
 {
     public static int Main() => Execute(x => x.Compile);
@@ -42,6 +60,10 @@ partial class Build : NukeBuild
 
     readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
 
+    [CI] readonly GitHubActions GitHubActions;
+
+    [Parameter("GitHub auth token", Name = "github-token"), Secret] readonly string GitHubToken;
+
     IEnumerable Excluded => new []
     {
         Solution.GetProject("_build"),
@@ -195,7 +217,7 @@ partial class Build : NukeBuild
             DotNetNuGetPush(s => s
                 .EnableSkipDuplicate()
                 .When(
-                    GitRepository.IsOnMasterBranch() || GitRepository.IsOnReleaseBranch(),
+                    GitHubActions.IsOnSemVerTag(),
                     v => v
                         .SetApiKey(NuGetApiKey)
                         .SetSource(NuGetSource))
diff --git a/build/GitHubActionsExtensions.cs b/build/GitHubActionsExtensions.cs
new file mode 100644
index 00000000..3f8e0d77
--- /dev/null
+++ b/build/GitHubActionsExtensions.cs
@@ -0,0 +1,19 @@
+using System.Text.RegularExpressions;
+
+namespace Nuke.Common.CI.GitHubActions
+{
+    public static class GitHubActionsExtensions
+    {
+        private static readonly Regex SemVerRef = new(@"^refs\/tags\/v(?\d+\.\d+\.\d+)", RegexOptions.Compiled);
+
+        public static bool IsOnSemVerTag(this GitHubActions source)
+        {
+            if (string.IsNullOrWhiteSpace(source?.GitHubRef))
+            {
+                return false;
+            }
+
+            return SemVerRef.IsMatch(source.GitHubRef);
+        }
+    }
+}
\ No newline at end of file

From 8ec9a907238acb2be87f890dfd2db041838cb93b Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Wed, 6 Dec 2023 01:00:11 +0200
Subject: [PATCH 10/30] Optimized deterministic builds (#1428)

---
 .nuke/build.schema.json |  9 +++------
 build/Build.cs          | 32 +++++++++++++++-----------------
 build/Configuration.cs  |  1 +
 3 files changed, 19 insertions(+), 23 deletions(-)

diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index da91f722..5855979d 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -8,24 +8,21 @@
       "properties": {
         "CI": {
           "type": "boolean",
-          "description": "Sets the continuous integration build flag"
+          "description": "Forces the continuous integration build flag"
         },
         "Configuration": {
           "type": "string",
           "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)",
           "enum": [
             "Debug",
-            "Release"
+            "Release",
+            "Verify"
           ]
         },
         "Continue": {
           "type": "boolean",
           "description": "Indicates to continue a previously failed build attempt"
         },
-        "Deterministic": {
-          "type": "boolean",
-          "description": "Makes the build deterministic when packaging assemblies"
-        },
         "github-token": {
           "type": "string",
           "description": "GitHub auth token",
diff --git a/build/Build.cs b/build/Build.cs
index 530f7697..72ee808c 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -50,32 +50,26 @@ partial class Build : NukeBuild
     [Solution] readonly Solution Solution;
     [GitRepository] readonly GitRepository GitRepository;
     [GitVersion] readonly GitVersion GitVersion;
-
-    [Parameter("Makes the build deterministic when packaging assemblies")] readonly bool Deterministic;
-    [Parameter("Sets the continuous integration build flag")] readonly bool CI;
-
-    [Secret]
-    [Parameter("NuGet API Key (secret)", Name = Secrets.NuGetApiKey)]
-    readonly string NuGetApiKey;
-
-    readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
-
     [CI] readonly GitHubActions GitHubActions;
 
     [Parameter("GitHub auth token", Name = "github-token"), Secret] readonly string GitHubToken;
+    [Parameter("Forces the continuous integration build flag")] readonly bool CI;
 
-    IEnumerable Excluded => new []
+    [Secret] [Parameter("NuGet API Key (secret)", Name = Secrets.NuGetApiKey)] readonly string NuGetApiKey;
+    readonly string NuGetSource = "https://api.nuget.org/v3/index.json";
+
+    IEnumerable Excluded => new[]
     {
         Solution.GetProject("_build"),
         Solution.GetProject("TestTypeFoundation")
     };
+
     IEnumerable TestProjects => Solution.GetProjects("*Test");
     IEnumerable Libraries => Solution.Projects.Except(TestProjects).Except(Excluded);
     IEnumerable CSharpLibraries => Libraries.Where(x => x.Is(ProjectType.CSharpProject));
     IEnumerable FSharpLibraries => Libraries.Where(x => x.Path.ToString().EndsWith(".fsproj"));
     IEnumerable Packages => PackagesDirectory.GlobFiles("*.nupkg");
 
-    bool IsDeterministic => IsServerBuild || Deterministic;
     bool IsContinuousIntegration => IsServerBuild || CI;
 
     AbsolutePath SourceDirectory => RootDirectory / "src";
@@ -111,7 +105,7 @@ partial class Build : NukeBuild
         {
             DotNetBuild(s => s
                 .SetProjectFile(Solution)
-                .SetConfiguration("Verify")
+                .SetConfiguration(Configuration.Verify)
                 .SetNoRestore(FinishedTargets.Contains(Restore))
                 .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
@@ -125,12 +119,14 @@ partial class Build : NukeBuild
             DotNetBuild(s => s
                 .SetProjectFile(Solution)
                 .SetConfiguration(Configuration)
+                .SetDeterministic(IsContinuousIntegration)
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
+                .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
                 .SetVersion(GitVersion.NuGetVersionV2)
                 .SetAssemblyVersion(GitVersion.AssemblySemVer)
                 .SetFileVersion(GitVersion.AssemblySemFileVer)
                 .SetInformationalVersion(GitVersion.InformationalVersion)
                 .SetNoRestore(FinishedTargets.Contains(Restore))
-                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false")));
         });
@@ -181,15 +177,17 @@ partial class Build : NukeBuild
         .Executes(() =>
         {
             DotNetPack(s => s
+                .SetConfiguration(Configuration)
+                .SetNoBuild(FinishedTargets.Contains(Compile))
                 .SetOutputDirectory(PackagesDirectory)
                 .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
                 .EnableIncludeSymbols()
+                .SetDeterministic(IsContinuousIntegration)
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetVersion(GitVersion.NuGetVersionV2)
                 .SetAssemblyVersion(GitVersion.AssemblySemVer)
                 .SetFileVersion(GitVersion.AssemblySemFileVer)
                 .SetInformationalVersion(GitVersion.InformationalVersion)
-                .SetDeterministic(IsDeterministic)
-                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false"))
                 .CombineWith(CSharpLibraries, (s, p) => s.SetProject(p)));
@@ -199,11 +197,11 @@ partial class Build : NukeBuild
                 .SetOutputDirectory(PackagesDirectory)
                 .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
                 .EnableIncludeSymbols()
+                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetVersion(GitVersion.NuGetVersionV2)
                 .SetAssemblyVersion(GitVersion.AssemblySemVer)
                 .SetFileVersion(GitVersion.AssemblySemFileVer)
                 .SetInformationalVersion(GitVersion.InformationalVersion)
-                .SetContinuousIntegrationBuild(IsContinuousIntegration)
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false"))
                 .CombineWith(FSharpLibraries, (s, p) => s.SetProject(p)));
diff --git a/build/Configuration.cs b/build/Configuration.cs
index 78049f7e..88c405b3 100644
--- a/build/Configuration.cs
+++ b/build/Configuration.cs
@@ -6,6 +6,7 @@ public class Configuration : Enumeration
 {
     public static Configuration Debug = new() { Value = nameof(Debug) };
     public static Configuration Release = new() { Value = nameof(Release) };
+    public static Configuration Verify = new() { Value = nameof(Verify) };
 
     public static implicit operator string(Configuration configuration)
     {

From 3a621a51c1dde8132f8a14e9075176a8d75c00ac Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 9 Dec 2023 21:17:55 +0200
Subject: [PATCH 11/30] Removed explicit dependency to
 System.ComponentModel.Annotations

---
 .../AutoFixture.NUnit2.UnitTest.csproj                        | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
index 315e6266..268e0151 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
+++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
@@ -21,10 +21,6 @@
     
   
 
-  
-    
-  
-
   
     
   

From 0dee7b9fddb9d4b00944eb6eaf0ca8ee9dcc949e Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 9 Dec 2023 23:00:03 +0200
Subject: [PATCH 12/30] Dropped NSubstitute 3

---
 Src/All.sln              | 2 --
 Src/AutoNSubstitute.slnf | 2 +-
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/Src/All.sln b/Src/All.sln
index ca73914f..7d72945e 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -70,8 +70,6 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck.FsCheck1Unit
 EndProject
 Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck.FsCheck2UnitTest", "Idioms.FsCheck.FsCheck2UnitTest\Idioms.FsCheck.FsCheck2UnitTest.fsproj", "{3C9C7C3E-452D-4ECE-9124-854406758A6D}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute3UnitTest", "AutoNSubstitute.NSubstitute3UnitTest\AutoNSubstitute.NSubstitute3UnitTest.csproj", "{C25EA45A-358C-43F7-9A61-8F68632730F3}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions", "AutoFixture.SeedExtensions\AutoFixture.SeedExtensions.csproj", "{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}"
diff --git a/Src/AutoNSubstitute.slnf b/Src/AutoNSubstitute.slnf
index fd502e1c..78040781 100644
--- a/Src/AutoNSubstitute.slnf
+++ b/Src/AutoNSubstitute.slnf
@@ -4,8 +4,8 @@
     "projects": [
       "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
       "AutoFixture\\AutoFixture.csproj",
-      "AutoNSubstitute.NSubstitute3UnitTest\\AutoNSubstitute.NSubstitute3UnitTest.csproj",
       "AutoNSubstitute.NSubstitute4UnitTest\\AutoNSubstitute.NSubstitute4UnitTest.csproj",
+      "AutoNSubstitute.NSubstitute5UnitTest\\AutoNSubstitute.NSubstitute5UnitTest.csproj",
       "AutoNSubstituteUnitTest\\AutoNSubstituteUnitTest.csproj",
       "AutoNSubstitute\\AutoNSubstitute.csproj",
       "TestTypeFoundation\\TestTypeFoundation.csproj"

From efda19fa1700c9de9e4206d9fa503d664efff166 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 9 Dec 2023 23:00:42 +0200
Subject: [PATCH 13/30] Dropped FsCheck 0.9 and 1.x

---
 Src/All.sln             | 22 ----------------------
 Src/Idioms.FsCheck.slnf |  1 -
 2 files changed, 23 deletions(-)

diff --git a/Src/All.sln b/Src/All.sln
index 7d72945e..a41c83e9 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -66,10 +66,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 		Common.Test.xUnit.props = Common.Test.xUnit.props
 	EndProjectSection
 EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck.FsCheck1UnitTest", "Idioms.FsCheck.FsCheck1UnitTest\Idioms.FsCheck.FsCheck1UnitTest.fsproj", "{42270230-D6FC-4FE8-ACE9-334006BF6692}"
-EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck.FsCheck2UnitTest", "Idioms.FsCheck.FsCheck2UnitTest\Idioms.FsCheck.FsCheck2UnitTest.fsproj", "{3C9C7C3E-452D-4ECE-9124-854406758A6D}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions", "AutoFixture.SeedExtensions\AutoFixture.SeedExtensions.csproj", "{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}"
@@ -247,24 +243,6 @@ Global
 		{730E1D38-BA80-48C7-B05C-E2BD29F38851}.Release|Any CPU.Build.0 = Release|Any CPU
 		{730E1D38-BA80-48C7-B05C-E2BD29F38851}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{730E1D38-BA80-48C7-B05C-E2BD29F38851}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Release|Any CPU.Build.0 = Release|Any CPU
-		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{42270230-D6FC-4FE8-ACE9-334006BF6692}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{3C9C7C3E-452D-4ECE-9124-854406758A6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{3C9C7C3E-452D-4ECE-9124-854406758A6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{3C9C7C3E-452D-4ECE-9124-854406758A6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{3C9C7C3E-452D-4ECE-9124-854406758A6D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{3C9C7C3E-452D-4ECE-9124-854406758A6D}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{3C9C7C3E-452D-4ECE-9124-854406758A6D}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{C25EA45A-358C-43F7-9A61-8F68632730F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{C25EA45A-358C-43F7-9A61-8F68632730F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{C25EA45A-358C-43F7-9A61-8F68632730F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{C25EA45A-358C-43F7-9A61-8F68632730F3}.Release|Any CPU.Build.0 = Release|Any CPU
-		{C25EA45A-358C-43F7-9A61-8F68632730F3}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{C25EA45A-358C-43F7-9A61-8F68632730F3}.Verify|Any CPU.Build.0 = Verify|Any CPU
 		{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/Src/Idioms.FsCheck.slnf b/Src/Idioms.FsCheck.slnf
index 1d75093d..17d020fe 100644
--- a/Src/Idioms.FsCheck.slnf
+++ b/Src/Idioms.FsCheck.slnf
@@ -4,7 +4,6 @@
     "projects": [
       "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
       "AutoFixture\\AutoFixture.csproj",
-      "Idioms.FsCheck.FsCheck1UnitTest\\Idioms.FsCheck.FsCheck1UnitTest.fsproj",
       "Idioms.FsCheck.FsCheck2UnitTest\\Idioms.FsCheck.FsCheck2UnitTest.fsproj",
       "Idioms.FsCheckUnitTest\\Idioms.FsCheckUnitTest.fsproj",
       "Idioms.FsCheck\\Idioms.FsCheck.fsproj",

From 769737e3415876e3cb942e028df9b699a44808df Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 9 Dec 2023 23:01:04 +0200
Subject: [PATCH 14/30] Skip sdk deprecation in nuke project

---
 build/_build.csproj | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/build/_build.csproj b/build/_build.csproj
index 450c63d1..69c10669 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -8,6 +8,9 @@
     ..
     ..
     9
+
+    
+    $(NoWarn);NETSDK1138;NU1902;NU1903
   
 
   

From 1f6a628d19a76e5f16f0eaf0aba8f10a21527c2a Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 9 Dec 2023 23:06:38 +0200
Subject: [PATCH 15/30] Removed FsCheck 2 project from slnf

---
 Src/Idioms.FsCheck.slnf | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Src/Idioms.FsCheck.slnf b/Src/Idioms.FsCheck.slnf
index 17d020fe..6714b709 100644
--- a/Src/Idioms.FsCheck.slnf
+++ b/Src/Idioms.FsCheck.slnf
@@ -4,7 +4,6 @@
     "projects": [
       "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
       "AutoFixture\\AutoFixture.csproj",
-      "Idioms.FsCheck.FsCheck2UnitTest\\Idioms.FsCheck.FsCheck2UnitTest.fsproj",
       "Idioms.FsCheckUnitTest\\Idioms.FsCheckUnitTest.fsproj",
       "Idioms.FsCheck\\Idioms.FsCheck.fsproj",
       "IdiomsUnitTest\\IdiomsUnitTest.csproj",

From 41460ffa0f9e9a7597e9e1d2274119209e122682 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sun, 10 Dec 2023 02:26:19 +0200
Subject: [PATCH 16/30] Removed package format from build

---
 build/Build.cs | 1 -
 1 file changed, 1 deletion(-)

diff --git a/build/Build.cs b/build/Build.cs
index 72ee808c..0905fa09 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -121,7 +121,6 @@ partial class Build : NukeBuild
                 .SetConfiguration(Configuration)
                 .SetDeterministic(IsContinuousIntegration)
                 .SetContinuousIntegrationBuild(IsContinuousIntegration)
-                .SetSymbolPackageFormat(DotNetSymbolPackageFormat.snupkg)
                 .SetVersion(GitVersion.NuGetVersionV2)
                 .SetAssemblyVersion(GitVersion.AssemblySemVer)
                 .SetFileVersion(GitVersion.AssemblySemFileVer)

From be17d6619dffb967a2da76cf5afa8ae3983548cb Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sun, 10 Dec 2023 10:49:26 +0200
Subject: [PATCH 17/30] Set debug type to always be portable

---
 Src/Common.props | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/Src/Common.props b/Src/Common.props
index ac7aa3d7..6a41ba69 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -62,9 +62,7 @@
     
       
         true
-        
-        full
-        portable
+        portable
       
     
     

From d357604a8faad3770a200ee78675571f30fefde5 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 19 Feb 2024 00:36:58 +0200
Subject: [PATCH 18/30] Added .NET 5 target runtime (#1443)

* Upgraded minimum .NET Framework to net462

* Added net5.0 target framework to AutoFixture

* Added net5.0 to AutoFakeItEasy

* Updated NUnit 3 test project

* Updated runtime for seed extensions test project

* Updated runtime for xunit 2 test project

* Updated runtime for documentation test project

* Updated runtime for Foq test project

* Updated runtime for Moq test project

* Updated runtime for NSubstitute test projects

* Updated runtime for FsCheck idioms test projects

* Added ignore rule for Rider

* Updated runtime for Idioms test project

* Fixed ConfigureAwait warnings

* Refactored hash code implementation to use HashCode BCL type

* Ignored warnings on assertions on literal values

* Refactored test arguments to match test data

* Resolved all async code warnings

* Resolved missing documentation warning

* Marked binary serializer tests as obsolete

* Removed .NET Core 2 and .NET Core 3 SDKs from pipelines

* Updated build script to not target .NET Core 3

* Raised minimum NUnit version to 3.7.0 for all target frameworks

* Added net5.0 target to seed extensions

* Raised minimum xunit 2 extensibility core version to 2.2.0 and added net5.0 target

* Added net5.0 target to AutoFoq

* Added net5.0 target to AutoMoq

* Added net5.0 target to AutoNSubstitute

* Removed duplicate AutoNSubstitute test project

* Added net5.0 target for Idioms

* Added net5.0 runtime to FsCheck idioms

* Fixed validation warnings

* Removed obsolete attribute from build script

* Added packages fixing transitive vulnerabilities
---
 .github/workflows/continuous.yml                   |  2 --
 .github/workflows/release.yml                      |  2 --
 .gitignore                                         |  3 ++-
 .nuke/build.schema.json                            | 14 +++++++++++---
 Src/All.sln                                        |  8 --------
 .../AutoFixture.NUnit2.UnitTest.csproj             |  2 +-
 Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj   |  2 +-
 Src/Common.Test.xUnit.props                        |  2 +-
 Src/Common.props                                   |  4 ++--
 Src/TestTypeFoundation/TestTypeFoundation.csproj   |  2 +-
 build/Build.cs                                     | 10 ++++------
 build/GitHubActionsExtensions.cs                   |  4 ++--
 build/_build.csproj                                |  6 +++---
 13 files changed, 28 insertions(+), 33 deletions(-)

diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml
index 28ca0734..f7a1364c 100644
--- a/.github/workflows/continuous.yml
+++ b/.github/workflows/continuous.yml
@@ -33,8 +33,6 @@ jobs:
       - uses: actions/setup-dotnet@v1
         with:
           dotnet-version: |
-            2.1.x
-            3.1.x
             5.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
         uses: actions/cache@v2
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 83ca696b..257f30c7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -32,8 +32,6 @@ jobs:
       - uses: actions/setup-dotnet@v1
         with:
           dotnet-version: |
-            2.1.x
-            3.1.x
             5.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
         uses: actions/cache@v2
diff --git a/.gitignore b/.gitignore
index 8dd4607a..0bdc52e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -395,4 +395,5 @@ FodyWeavers.xsd
 *.msp
 
 # JetBrains Rider
-*.sln.iml
\ No newline at end of file
+*.sln.iml
+.idea/
\ No newline at end of file
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index 5855979d..6958ca5a 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -26,7 +26,7 @@
         "github-token": {
           "type": "string",
           "description": "GitHub auth token",
-          "default": "Secrets must be entered via 'nuke :secret [profile]'"
+          "default": "Secrets must be entered via 'nuke :secrets [profile]'"
         },
         "Help": {
           "type": "boolean",
@@ -39,14 +39,18 @@
             "AppVeyor",
             "AzurePipelines",
             "Bamboo",
+            "Bitbucket",
             "Bitrise",
             "GitHubActions",
             "GitLab",
             "Jenkins",
+            "Rider",
             "SpaceAutomation",
             "TeamCity",
             "Terminal",
-            "TravisCI"
+            "TravisCI",
+            "VisualStudio",
+            "VSCode"
           ]
         },
         "NoLogo": {
@@ -56,7 +60,11 @@
         "NUGET_API_KEY": {
           "type": "string",
           "description": "NuGet API Key (secret)",
-          "default": "Secrets must be entered via 'nuke :secret [profile]'"
+          "default": "Secrets must be entered via 'nuke :secrets [profile]'"
+        },
+        "Partition": {
+          "type": "string",
+          "description": "Partition to use on CI"
         },
         "Plan": {
           "type": "boolean",
diff --git a/Src/All.sln b/Src/All.sln
index a41c83e9..672f1492 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -70,8 +70,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute4UnitTest", "AutoNSubstitute.NSubstitute4UnitTest\AutoNSubstitute.NSubstitute4UnitTest.csproj", "{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy7UnitTest", "AutoFakeItEasy.FakeItEasy7UnitTest\AutoFakeItEasy.FakeItEasy7UnitTest.csproj", "{1B42519B-24C2-4141-83A3-AB68AB09EE28}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute5UnitTest", "AutoNSubstitute.NSubstitute5UnitTest\AutoNSubstitute.NSubstitute5UnitTest.csproj", "{DCFA3909-031E-40CB-8A1D-D3AED666C24B}"
@@ -255,12 +253,6 @@ Global
 		{0F3C467A-ED89-4348-9210-FC2D358E20C5}.Release|Any CPU.Build.0 = Release|Any CPU
 		{0F3C467A-ED89-4348-9210-FC2D358E20C5}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{0F3C467A-ED89-4348-9210-FC2D358E20C5}.Verify|Any CPU.Build.0 = Verify|Any CPU
-		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
-		{4BDBE8A1-CF75-4049-9B3D-B194B1F45369}.Verify|Any CPU.Build.0 = Verify|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1B42519B-24C2-4141-83A3-AB68AB09EE28}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
index 268e0151..6048e153 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
+++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
@@ -3,7 +3,7 @@
   
 
   
-    net461
+    net462
     AutoFixture.NUnit2.UnitTest
     AutoFixture.NUnit2.UnitTest
     AutoFixture.NUnit2.UnitTest
diff --git a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
index d393a2d1..3dc104e4 100644
--- a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
+++ b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
@@ -2,7 +2,7 @@
   
 
   
-    net461
+    net462
     AutoFixture.NUnit2
     AutoFixture.NUnit2
     AutoFixture.NUnit2
diff --git a/Src/Common.Test.xUnit.props b/Src/Common.Test.xUnit.props
index cb8aae1c..08c590eb 100644
--- a/Src/Common.Test.xUnit.props
+++ b/Src/Common.Test.xUnit.props
@@ -1,6 +1,6 @@
 
   
-    
+    
     
       all
       runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Src/Common.props b/Src/Common.props
index 6a41ba69..e5771ea4 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -42,7 +42,7 @@
   
 
   
-    
+    
       
         $(DefineConstants);SYSTEM_GLOBALIZATION_CULTUREINFO_CULTURESETTERS
       
@@ -55,7 +55,7 @@
     
   
   
-    $(DefineConstants);SYSTEM_NET_MAIL
+    $(DefineConstants);SYSTEM_NET_MAIL
   
 
   
diff --git a/Src/TestTypeFoundation/TestTypeFoundation.csproj b/Src/TestTypeFoundation/TestTypeFoundation.csproj
index b57501dc..205ee402 100644
--- a/Src/TestTypeFoundation/TestTypeFoundation.csproj
+++ b/Src/TestTypeFoundation/TestTypeFoundation.csproj
@@ -3,7 +3,7 @@
   
 
   
-    net461;netstandard2.0
+    net462;netstandard2.0;net5.0
     TestTypeFoundation
     TestTypeFoundation
   
diff --git a/build/Build.cs b/build/Build.cs
index 0905fa09..832419c5 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -3,7 +3,6 @@
 using Nuke.Common;
 using Nuke.Common.CI;
 using Nuke.Common.CI.GitHubActions;
-using Nuke.Common.Execution;
 using Nuke.Common.Git;
 using Nuke.Common.IO;
 using Nuke.Common.ProjectModel;
@@ -17,7 +16,6 @@
 using static Nuke.Common.Tools.DotNet.DotNetTasks;
 using static Nuke.Common.Tools.ReportGenerator.ReportGeneratorTasks;
 
-[CheckBuildProjectConfigurations]
 [ShutdownDotNetAfterServerBuild]
 [DotNetVerbosityMapping]
 [GitHubActions(
@@ -27,7 +25,7 @@
     OnPullRequestBranches = new[] { MasterBranch, ReleaseBranch },
     PublishArtifacts = false,
     InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Pack) },
-    ImportGitHubTokenAs = nameof(GitHubToken))]
+    EnableGitHubToken = true)]
 [GitHubActions(
     "release",
     GitHubActionsImage.WindowsLatest,
@@ -35,7 +33,7 @@
     OnPushTags = new[] { "v*" },
     PublishArtifacts = true,
     InvokedTargets = new[] { nameof(Verify), nameof(Cover), nameof(Publish) },
-    ImportGitHubTokenAs = nameof(GitHubToken),
+    EnableGitHubToken = true,
     ImportSecrets = new[] { Secrets.NuGetApiKey })]
 partial class Build : NukeBuild
 {
@@ -139,7 +137,7 @@ partial class Build : NukeBuild
                 .SetConfiguration(Configuration)
                 .SetResultsDirectory(TestResultsDirectory)
                 .SetNoBuild(FinishedTargets.Contains(Compile))
-                .SetLogger("trx")
+                .SetLoggers("trx")
                 .SetProcessArgumentConfigurator(a => a
                     .Add("/p:CheckEolTargetFramework=false")
                     .Add("-- RunConfiguration.DisableAppDomain=true")
@@ -159,7 +157,7 @@ partial class Build : NukeBuild
         .Executes(() =>
         {
             ReportGenerator(_ => _
-                .SetFramework("netcoreapp2.1")
+                .SetFramework("net5.0")
                 .SetAssemblyFilters("-TestTypeFoundation*")
                 .SetReports(TestResultsDirectory / "**" / "coverage.cobertura.xml")
                 .SetTargetDirectory(ReportsDirectory)
diff --git a/build/GitHubActionsExtensions.cs b/build/GitHubActionsExtensions.cs
index 3f8e0d77..7a9a9a2f 100644
--- a/build/GitHubActionsExtensions.cs
+++ b/build/GitHubActionsExtensions.cs
@@ -8,12 +8,12 @@ public static class GitHubActionsExtensions
 
         public static bool IsOnSemVerTag(this GitHubActions source)
         {
-            if (string.IsNullOrWhiteSpace(source?.GitHubRef))
+            if (string.IsNullOrWhiteSpace(source?.Ref))
             {
                 return false;
             }
 
-            return SemVerRef.IsMatch(source.GitHubRef);
+            return SemVerRef.IsMatch(source.Ref);
         }
     }
 }
\ No newline at end of file
diff --git a/build/_build.csproj b/build/_build.csproj
index 69c10669..d7906d66 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -14,9 +14,9 @@
   
 
   
-    
-    
-    
+    
+    
+    
   
 
 

From 8ffe99f6c65f1179637261cbb12ba85f40661134 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 25 Mar 2024 04:15:23 +0200
Subject: [PATCH 19/30] Reimplemented XUnit 2 AutoData attributes (#1433)

---
 Src/All.sln                                   |  6 ++++
 Src/TestTypeFoundation/RecordType.cs          | 32 +++++++++++++++++++
 .../TypeWithOverloadedMembers.cs              |  9 +++++-
 3 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 Src/TestTypeFoundation/RecordType.cs

diff --git a/Src/All.sln b/Src/All.sln
index 672f1492..bf4bcca2 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -58,12 +58,18 @@ EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F0A01F00-72C7-4CE4-8BA4-9EB178B72329}"
 	ProjectSection(SolutionItems) = preProject
 		..\.editorconfig = ..\.editorconfig
+		..\.gitattributes = ..\.gitattributes
+		..\.gitignore = ..\.gitignore
 		CodeAnalysis.AutoFixture.ruleset = CodeAnalysis.AutoFixture.ruleset
 		CodeAnalysis.Empty.ruleset = CodeAnalysis.Empty.ruleset
 		CodeAnalysis.Test.ruleset = CodeAnalysis.Test.ruleset
+		..\CODE_OF_CONDUCT.md = ..\CODE_OF_CONDUCT.md
 		Common.props = Common.props
 		Common.Test.props = Common.Test.props
 		Common.Test.xUnit.props = Common.Test.xUnit.props
+		..\CONTRIBUTING.md = ..\CONTRIBUTING.md
+		..\LICENCE.txt = ..\LICENCE.txt
+		..\README.md = ..\README.md
 	EndProjectSection
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions", "AutoFixture.SeedExtensions\AutoFixture.SeedExtensions.csproj", "{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}"
diff --git a/Src/TestTypeFoundation/RecordType.cs b/Src/TestTypeFoundation/RecordType.cs
new file mode 100644
index 00000000..847f241d
--- /dev/null
+++ b/Src/TestTypeFoundation/RecordType.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestTypeFoundation
+{
+    public class RecordType : IEquatable>
+    {
+        public RecordType(T value)
+        {
+            this.Value = value;
+        }
+
+        public T Value { get; }
+
+        public bool Equals(RecordType other)
+        {
+            if (ReferenceEquals(null, other)) return false;
+            if (ReferenceEquals(this, other)) return true;
+            return EqualityComparer.Default.Equals(this.Value, other.Value);
+        }
+
+        public override bool Equals(object obj)
+        {
+            return this.Equals(obj as RecordType);
+        }
+
+        public override int GetHashCode()
+        {
+            return EqualityComparer.Default.GetHashCode(this.Value);
+        }
+    }
+}
\ No newline at end of file
diff --git a/Src/TestTypeFoundation/TypeWithOverloadedMembers.cs b/Src/TestTypeFoundation/TypeWithOverloadedMembers.cs
index cede6381..a9ad6583 100644
--- a/Src/TestTypeFoundation/TypeWithOverloadedMembers.cs
+++ b/Src/TestTypeFoundation/TypeWithOverloadedMembers.cs
@@ -1,4 +1,7 @@
-namespace TestTypeFoundation
+using System;
+using System.Reflection;
+
+namespace TestTypeFoundation
 {
     public class TypeWithOverloadedMembers
     {
@@ -19,5 +22,9 @@ public void DoSomething(object x, object y)
         public void DoSomething(object x, object y, object z)
         {
         }
+
+        public static MethodInfo GetDoSomethingMethod(params Type[] parameterTypes) =>
+            typeof(TypeWithOverloadedMembers)
+                .GetMethod(nameof(DoSomething), parameterTypes);
     }
 }

From 1809a8c622230b74d496004a6812c7b82223aec7 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sun, 14 Apr 2024 23:24:33 +0300
Subject: [PATCH 20/30] Added .NET 6.0 target (#1448)

* Added support for net6.0
* Enabled code NET SDK code analysis
* Fixed compiler warnings
* Converted ruleset files into Analyzer Config files
* Moved global suppressions to globalconfig files
* Replaced the analysis mode with the analysis level parameter
---
 .github/workflows/continuous.yml              |   1 +
 .github/workflows/release.yml                 |   1 +
 Src/All.sln                                   |   5 +-
 Src/AutoFixture.NUnit2.UnitTest/Scenario.cs   |   2 +-
 Src/AutoFixture.NUnit2/GlobalSuppressions.cs  |  25 -
 Src/AutoFixture.Tests.globalconfig            | 654 ++++++++++++++
 Src/AutoFixture.globalconfig                  |  56 ++
 Src/CodeAnalysis.AutoFixture.ruleset          |  42 -
 Src/CodeAnalysis.Empty.ruleset                | 844 ------------------
 Src/CodeAnalysis.Test.ruleset                 | 609 -------------
 Src/Common.Test.props                         |  10 +-
 Src/Common.props                              |  15 +-
 ...nstructorHostHoldingStaticReadOnlyField.cs |   4 +-
 .../TestTypeFoundation.csproj                 |   2 +-
 global.json                                   |   2 +-
 15 files changed, 739 insertions(+), 1533 deletions(-)
 delete mode 100644 Src/AutoFixture.NUnit2/GlobalSuppressions.cs
 create mode 100644 Src/AutoFixture.Tests.globalconfig
 create mode 100644 Src/AutoFixture.globalconfig
 delete mode 100644 Src/CodeAnalysis.AutoFixture.ruleset
 delete mode 100644 Src/CodeAnalysis.Empty.ruleset
 delete mode 100644 Src/CodeAnalysis.Test.ruleset

diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml
index f7a1364c..6ba4ff0a 100644
--- a/.github/workflows/continuous.yml
+++ b/.github/workflows/continuous.yml
@@ -34,6 +34,7 @@ jobs:
         with:
           dotnet-version: |
             5.0.x
+            6.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
         uses: actions/cache@v2
         with:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 257f30c7..e0a695d8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -33,6 +33,7 @@ jobs:
         with:
           dotnet-version: |
             5.0.x
+            6.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
         uses: actions/cache@v2
         with:
diff --git a/Src/All.sln b/Src/All.sln
index bf4bcca2..f094e7d4 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -60,9 +60,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 		..\.editorconfig = ..\.editorconfig
 		..\.gitattributes = ..\.gitattributes
 		..\.gitignore = ..\.gitignore
-		CodeAnalysis.AutoFixture.ruleset = CodeAnalysis.AutoFixture.ruleset
-		CodeAnalysis.Empty.ruleset = CodeAnalysis.Empty.ruleset
-		CodeAnalysis.Test.ruleset = CodeAnalysis.Test.ruleset
+		AutoFixture.globalconfig = AutoFixture.globalconfig
+		AutoFixture.Tests.globalconfig = AutoFixture.Tests.globalconfig
 		..\CODE_OF_CONDUCT.md = ..\CODE_OF_CONDUCT.md
 		Common.props = Common.props
 		Common.Test.props = Common.Test.props
diff --git a/Src/AutoFixture.NUnit2.UnitTest/Scenario.cs b/Src/AutoFixture.NUnit2.UnitTest/Scenario.cs
index 44e49381..58a4c76b 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/Scenario.cs
+++ b/Src/AutoFixture.NUnit2.UnitTest/Scenario.cs
@@ -18,7 +18,7 @@ public void AutoTestCaseProvidesCorrectInteger(int primitiveValue)
         [Test, AutoData]
         public void AutoTestCaseProvidesCorrectString(string text)
         {
-            Assert.True(text.StartsWith("text"));
+            Assert.That(text, Does.StartWith("text"));
         }
 
         [Test, AutoData]
diff --git a/Src/AutoFixture.NUnit2/GlobalSuppressions.cs b/Src/AutoFixture.NUnit2/GlobalSuppressions.cs
deleted file mode 100644
index 8e19a144..00000000
--- a/Src/AutoFixture.NUnit2/GlobalSuppressions.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is used by Code Analysis to maintain SuppressMessage
-// attributes that are applied to this project.
-// Project-level suppressions either have no target or are given
-// a specific target and scoped to a namespace, type, member, etc.
-//
-// To add a suppression to this file, right-click the message in the
-// Code Analysis results, point to "Suppress Message", and click
-// "In Suppression File".
-// You do not need to add suppressions to this file manually.
-
-using System.Diagnostics.CodeAnalysis;
-
-[assembly: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "NUnit", Scope = "namespace", Target = "AutoFixture.NUnit2", Justification ="NUnit is the proper name")]
-[assembly: SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "NUnit", Justification = "NUnit is the proper name")]
-
-[assembly:
-    SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes",
-        Scope = "namespace",
-        Target = "AutoFixture.NUnit2.Addins",
-        Justification = "It has been ported from other project and I don't want to introduce the breaking changes.")]
-[assembly:
-    SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes",
-        Scope = "namespace",
-        Target = "AutoFixture.NUnit2.Addins.Builders",
-        Justification = "It has been ported from other project and I don't want to introduce the breaking changes.")]
\ No newline at end of file
diff --git a/Src/AutoFixture.Tests.globalconfig b/Src/AutoFixture.Tests.globalconfig
new file mode 100644
index 00000000..2b8356f0
--- /dev/null
+++ b/Src/AutoFixture.Tests.globalconfig
@@ -0,0 +1,654 @@
+is_global = true
+global_level = 200
+
+# NOTE: No section headers for configuration entries
+
+#### .NET Coding Conventions ####
+
+## Naming conventions ##
+
+#### Diagnostic configuration ####
+
+## Managed code analysis ##
+
+dotnet_diagnostic.CA1000.severity = none
+dotnet_diagnostic.CA1001.severity = none
+dotnet_diagnostic.CA1002.severity = none
+dotnet_diagnostic.CA1003.severity = none
+dotnet_diagnostic.CA1004.severity = none
+dotnet_diagnostic.CA1005.severity = none
+dotnet_diagnostic.CA1006.severity = none
+dotnet_diagnostic.CA1007.severity = none
+dotnet_diagnostic.CA1008.severity = none
+dotnet_diagnostic.CA1009.severity = none
+dotnet_diagnostic.CA1010.severity = none
+dotnet_diagnostic.CA1011.severity = none
+dotnet_diagnostic.CA1012.severity = none
+dotnet_diagnostic.CA1013.severity = none
+dotnet_diagnostic.CA1014.severity = none
+dotnet_diagnostic.CA1016.severity = none
+dotnet_diagnostic.CA1017.severity = none
+dotnet_diagnostic.CA1018.severity = none
+dotnet_diagnostic.CA1019.severity = none
+dotnet_diagnostic.CA1020.severity = none
+dotnet_diagnostic.CA1021.severity = none
+dotnet_diagnostic.CA1023.severity = none
+dotnet_diagnostic.CA1024.severity = none
+dotnet_diagnostic.CA1025.severity = none
+dotnet_diagnostic.CA1026.severity = none
+dotnet_diagnostic.CA1027.severity = none
+dotnet_diagnostic.CA1028.severity = none
+dotnet_diagnostic.CA1030.severity = none
+dotnet_diagnostic.CA1031.severity = none
+dotnet_diagnostic.CA1032.severity = none
+dotnet_diagnostic.CA1033.severity = none
+dotnet_diagnostic.CA1034.severity = none
+dotnet_diagnostic.CA1035.severity = none
+dotnet_diagnostic.CA1036.severity = none
+dotnet_diagnostic.CA1038.severity = none
+dotnet_diagnostic.CA1039.severity = none
+dotnet_diagnostic.CA1040.severity = none
+dotnet_diagnostic.CA1041.severity = none
+dotnet_diagnostic.CA1043.severity = none
+dotnet_diagnostic.CA1044.severity = none
+dotnet_diagnostic.CA1045.severity = none
+dotnet_diagnostic.CA1046.severity = none
+dotnet_diagnostic.CA1047.severity = none
+dotnet_diagnostic.CA1048.severity = none
+dotnet_diagnostic.CA1049.severity = none
+dotnet_diagnostic.CA1050.severity = none
+dotnet_diagnostic.CA1051.severity = none
+dotnet_diagnostic.CA1052.severity = none
+dotnet_diagnostic.CA1053.severity = none
+dotnet_diagnostic.CA1054.severity = none
+dotnet_diagnostic.CA1055.severity = none
+dotnet_diagnostic.CA1056.severity = none
+dotnet_diagnostic.CA1057.severity = none
+dotnet_diagnostic.CA1058.severity = none
+dotnet_diagnostic.CA1059.severity = none
+dotnet_diagnostic.CA1060.severity = none
+dotnet_diagnostic.CA1061.severity = none
+dotnet_diagnostic.CA1062.severity = none
+dotnet_diagnostic.CA1063.severity = none
+dotnet_diagnostic.CA1064.severity = none
+dotnet_diagnostic.CA1065.severity = none
+dotnet_diagnostic.CA1300.severity = none
+dotnet_diagnostic.CA1301.severity = none
+dotnet_diagnostic.CA1302.severity = none
+dotnet_diagnostic.CA1303.severity = none
+dotnet_diagnostic.CA1304.severity = none
+dotnet_diagnostic.CA1305.severity = none
+dotnet_diagnostic.CA1306.severity = none
+dotnet_diagnostic.CA1307.severity = none
+dotnet_diagnostic.CA1308.severity = none
+dotnet_diagnostic.CA1309.severity = none
+dotnet_diagnostic.CA1400.severity = none
+dotnet_diagnostic.CA1401.severity = none
+dotnet_diagnostic.CA1402.severity = none
+dotnet_diagnostic.CA1403.severity = none
+dotnet_diagnostic.CA1404.severity = none
+dotnet_diagnostic.CA1405.severity = none
+dotnet_diagnostic.CA1406.severity = none
+dotnet_diagnostic.CA1407.severity = none
+dotnet_diagnostic.CA1408.severity = none
+dotnet_diagnostic.CA1409.severity = none
+dotnet_diagnostic.CA1410.severity = none
+dotnet_diagnostic.CA1411.severity = none
+dotnet_diagnostic.CA1412.severity = none
+dotnet_diagnostic.CA1413.severity = none
+dotnet_diagnostic.CA1414.severity = none
+dotnet_diagnostic.CA1415.severity = none
+dotnet_diagnostic.CA1500.severity = none
+dotnet_diagnostic.CA1501.severity = none
+dotnet_diagnostic.CA1502.severity = none
+dotnet_diagnostic.CA1504.severity = none
+dotnet_diagnostic.CA1505.severity = none
+dotnet_diagnostic.CA1506.severity = none
+dotnet_diagnostic.CA1600.severity = none
+dotnet_diagnostic.CA1601.severity = none
+dotnet_diagnostic.CA1700.severity = none
+dotnet_diagnostic.CA1701.severity = none
+dotnet_diagnostic.CA1702.severity = none
+dotnet_diagnostic.CA1703.severity = none
+dotnet_diagnostic.CA1704.severity = none
+dotnet_diagnostic.CA1707.severity = none
+dotnet_diagnostic.CA1708.severity = none
+dotnet_diagnostic.CA1709.severity = none
+dotnet_diagnostic.CA1710.severity = none
+dotnet_diagnostic.CA1711.severity = none
+dotnet_diagnostic.CA1712.severity = none
+dotnet_diagnostic.CA1713.severity = none
+dotnet_diagnostic.CA1714.severity = none
+dotnet_diagnostic.CA1715.severity = none
+dotnet_diagnostic.CA1716.severity = none
+dotnet_diagnostic.CA1717.severity = none
+dotnet_diagnostic.CA1719.severity = none
+dotnet_diagnostic.CA1720.severity = none
+dotnet_diagnostic.CA1721.severity = none
+dotnet_diagnostic.CA1722.severity = none
+dotnet_diagnostic.CA1724.severity = none
+dotnet_diagnostic.CA1725.severity = none
+dotnet_diagnostic.CA1726.severity = none
+dotnet_diagnostic.CA1800.severity = none
+dotnet_diagnostic.CA1801.severity = none
+dotnet_diagnostic.CA1802.severity = none
+dotnet_diagnostic.CA1804.severity = none
+dotnet_diagnostic.CA1806.severity = none
+dotnet_diagnostic.CA1809.severity = none
+dotnet_diagnostic.CA1810.severity = none
+dotnet_diagnostic.CA1811.severity = none
+dotnet_diagnostic.CA1812.severity = none
+dotnet_diagnostic.CA1813.severity = none
+dotnet_diagnostic.CA1814.severity = none
+dotnet_diagnostic.CA1815.severity = none
+dotnet_diagnostic.CA1816.severity = none
+dotnet_diagnostic.CA1819.severity = none
+dotnet_diagnostic.CA1820.severity = none
+dotnet_diagnostic.CA1821.severity = none
+dotnet_diagnostic.CA1822.severity = none
+dotnet_diagnostic.CA1823.severity = none
+dotnet_diagnostic.CA1824.severity = none
+dotnet_diagnostic.CA1825.severity = none
+dotnet_diagnostic.CA1900.severity = none
+dotnet_diagnostic.CA1901.severity = none
+dotnet_diagnostic.CA1903.severity = none
+dotnet_diagnostic.CA2000.severity = none
+dotnet_diagnostic.CA2001.severity = none
+dotnet_diagnostic.CA2002.severity = none
+dotnet_diagnostic.CA2003.severity = none
+dotnet_diagnostic.CA2004.severity = none
+dotnet_diagnostic.CA2006.severity = none
+dotnet_diagnostic.CA2100.severity = none
+dotnet_diagnostic.CA2101.severity = none
+dotnet_diagnostic.CA2102.severity = none
+dotnet_diagnostic.CA2103.severity = none
+dotnet_diagnostic.CA2104.severity = none
+dotnet_diagnostic.CA2105.severity = none
+dotnet_diagnostic.CA2106.severity = none
+dotnet_diagnostic.CA2107.severity = none
+dotnet_diagnostic.CA2108.severity = none
+dotnet_diagnostic.CA2109.severity = none
+dotnet_diagnostic.CA2111.severity = none
+dotnet_diagnostic.CA2112.severity = none
+dotnet_diagnostic.CA2114.severity = none
+dotnet_diagnostic.CA2115.severity = none
+dotnet_diagnostic.CA2116.severity = none
+dotnet_diagnostic.CA2117.severity = none
+dotnet_diagnostic.CA2118.severity = none
+dotnet_diagnostic.CA2119.severity = none
+dotnet_diagnostic.CA2120.severity = none
+dotnet_diagnostic.CA2121.severity = none
+dotnet_diagnostic.CA2122.severity = none
+dotnet_diagnostic.CA2123.severity = none
+dotnet_diagnostic.CA2124.severity = none
+dotnet_diagnostic.CA2126.severity = none
+dotnet_diagnostic.CA2130.severity = none
+dotnet_diagnostic.CA2131.severity = none
+dotnet_diagnostic.CA2132.severity = none
+dotnet_diagnostic.CA2133.severity = none
+dotnet_diagnostic.CA2134.severity = none
+dotnet_diagnostic.CA2135.severity = none
+dotnet_diagnostic.CA2136.severity = none
+dotnet_diagnostic.CA2137.severity = none
+dotnet_diagnostic.CA2138.severity = none
+dotnet_diagnostic.CA2139.severity = none
+dotnet_diagnostic.CA2140.severity = none
+dotnet_diagnostic.CA2141.severity = none
+dotnet_diagnostic.CA2142.severity = none
+dotnet_diagnostic.CA2143.severity = none
+dotnet_diagnostic.CA2144.severity = none
+dotnet_diagnostic.CA2145.severity = none
+dotnet_diagnostic.CA2146.severity = none
+dotnet_diagnostic.CA2147.severity = none
+dotnet_diagnostic.CA2149.severity = none
+dotnet_diagnostic.CA2151.severity = none
+dotnet_diagnostic.CA2200.severity = none
+dotnet_diagnostic.CA2201.severity = none
+dotnet_diagnostic.CA2202.severity = none
+dotnet_diagnostic.CA2204.severity = none
+dotnet_diagnostic.CA2205.severity = none
+dotnet_diagnostic.CA2207.severity = none
+dotnet_diagnostic.CA2208.severity = none
+dotnet_diagnostic.CA2210.severity = none
+dotnet_diagnostic.CA2211.severity = none
+dotnet_diagnostic.CA2212.severity = none
+dotnet_diagnostic.CA2213.severity = none
+dotnet_diagnostic.CA2214.severity = none
+dotnet_diagnostic.CA2215.severity = none
+dotnet_diagnostic.CA2216.severity = none
+dotnet_diagnostic.CA2217.severity = none
+dotnet_diagnostic.CA2218.severity = none
+dotnet_diagnostic.CA2219.severity = none
+dotnet_diagnostic.CA2220.severity = none
+dotnet_diagnostic.CA2221.severity = none
+dotnet_diagnostic.CA2222.severity = none
+dotnet_diagnostic.CA2223.severity = none
+dotnet_diagnostic.CA2224.severity = none
+dotnet_diagnostic.CA2225.severity = none
+dotnet_diagnostic.CA2226.severity = none
+dotnet_diagnostic.CA2227.severity = none
+dotnet_diagnostic.CA2228.severity = none
+dotnet_diagnostic.CA2229.severity = none
+dotnet_diagnostic.CA2230.severity = none
+dotnet_diagnostic.CA2231.severity = none
+dotnet_diagnostic.CA2232.severity = none
+dotnet_diagnostic.CA2233.severity = none
+dotnet_diagnostic.CA2234.severity = none
+dotnet_diagnostic.CA2235.severity = none
+dotnet_diagnostic.CA2236.severity = none
+dotnet_diagnostic.CA2237.severity = none
+dotnet_diagnostic.CA2238.severity = none
+dotnet_diagnostic.CA2239.severity = none
+dotnet_diagnostic.CA2240.severity = none
+dotnet_diagnostic.CA2241.severity = none
+dotnet_diagnostic.CA2242.severity = none
+dotnet_diagnostic.CA2243.severity = none
+dotnet_diagnostic.CA5122.severity = none
+
+## Security analysis ##
+
+dotnet_diagnostic.CA2300.severity = none
+
+## Native code analysis ##
+
+dotnet_diagnostic.C26100.severity = none
+dotnet_diagnostic.C26101.severity = none
+dotnet_diagnostic.C26105.severity = none
+dotnet_diagnostic.C26110.severity = none
+dotnet_diagnostic.C26111.severity = none
+dotnet_diagnostic.C26112.severity = none
+dotnet_diagnostic.C26115.severity = none
+dotnet_diagnostic.C26116.severity = none
+dotnet_diagnostic.C26117.severity = none
+dotnet_diagnostic.C26130.severity = none
+dotnet_diagnostic.C26135.severity = none
+dotnet_diagnostic.C26140.severity = none
+dotnet_diagnostic.C26160.severity = none
+dotnet_diagnostic.C26165.severity = none
+dotnet_diagnostic.C26166.severity = none
+dotnet_diagnostic.C26167.severity = none
+dotnet_diagnostic.C28020.severity = none
+dotnet_diagnostic.C28021.severity = none
+dotnet_diagnostic.C28022.severity = none
+dotnet_diagnostic.C28023.severity = none
+dotnet_diagnostic.C28024.severity = none
+dotnet_diagnostic.C28039.severity = none
+dotnet_diagnostic.C28101.severity = none
+dotnet_diagnostic.C28103.severity = none
+dotnet_diagnostic.C28104.severity = none
+dotnet_diagnostic.C28105.severity = none
+dotnet_diagnostic.C28106.severity = none
+dotnet_diagnostic.C28107.severity = none
+dotnet_diagnostic.C28108.severity = none
+dotnet_diagnostic.C28109.severity = none
+dotnet_diagnostic.C28110.severity = none
+dotnet_diagnostic.C28111.severity = none
+dotnet_diagnostic.C28112.severity = none
+dotnet_diagnostic.C28113.severity = none
+dotnet_diagnostic.C28114.severity = none
+dotnet_diagnostic.C28120.severity = none
+dotnet_diagnostic.C28121.severity = none
+dotnet_diagnostic.C28122.severity = none
+dotnet_diagnostic.C28123.severity = none
+dotnet_diagnostic.C28124.severity = none
+dotnet_diagnostic.C28125.severity = none
+dotnet_diagnostic.C28126.severity = none
+dotnet_diagnostic.C28127.severity = none
+dotnet_diagnostic.C28128.severity = none
+dotnet_diagnostic.C28129.severity = none
+dotnet_diagnostic.C28131.severity = none
+dotnet_diagnostic.C28132.severity = none
+dotnet_diagnostic.C28133.severity = none
+dotnet_diagnostic.C28134.severity = none
+dotnet_diagnostic.C28135.severity = none
+dotnet_diagnostic.C28137.severity = none
+dotnet_diagnostic.C28138.severity = none
+dotnet_diagnostic.C28141.severity = none
+dotnet_diagnostic.C28143.severity = none
+dotnet_diagnostic.C28144.severity = none
+dotnet_diagnostic.C28145.severity = none
+dotnet_diagnostic.C28146.severity = none
+dotnet_diagnostic.C28147.severity = none
+dotnet_diagnostic.C28150.severity = none
+dotnet_diagnostic.C28151.severity = none
+dotnet_diagnostic.C28152.severity = none
+dotnet_diagnostic.C28153.severity = none
+dotnet_diagnostic.C28156.severity = none
+dotnet_diagnostic.C28157.severity = none
+dotnet_diagnostic.C28158.severity = none
+dotnet_diagnostic.C28159.severity = none
+dotnet_diagnostic.C28160.severity = none
+dotnet_diagnostic.C28161.severity = none
+dotnet_diagnostic.C28162.severity = none
+dotnet_diagnostic.C28163.severity = none
+dotnet_diagnostic.C28164.severity = none
+dotnet_diagnostic.C28165.severity = none
+dotnet_diagnostic.C28166.severity = none
+dotnet_diagnostic.C28167.severity = none
+dotnet_diagnostic.C28168.severity = none
+dotnet_diagnostic.C28169.severity = none
+dotnet_diagnostic.C28170.severity = none
+dotnet_diagnostic.C28171.severity = none
+dotnet_diagnostic.C28172.severity = none
+dotnet_diagnostic.C28173.severity = none
+dotnet_diagnostic.C28175.severity = none
+dotnet_diagnostic.C28176.severity = none
+dotnet_diagnostic.C28182.severity = none
+dotnet_diagnostic.C28183.severity = none
+dotnet_diagnostic.C28193.severity = none
+dotnet_diagnostic.C28194.severity = none
+dotnet_diagnostic.C28195.severity = none
+dotnet_diagnostic.C28196.severity = none
+dotnet_diagnostic.C28197.severity = none
+dotnet_diagnostic.C28198.severity = none
+dotnet_diagnostic.C28199.severity = none
+dotnet_diagnostic.C28202.severity = none
+dotnet_diagnostic.C28203.severity = none
+dotnet_diagnostic.C28204.severity = none
+dotnet_diagnostic.C28205.severity = none
+dotnet_diagnostic.C28206.severity = none
+dotnet_diagnostic.C28207.severity = none
+dotnet_diagnostic.C28208.severity = none
+dotnet_diagnostic.C28209.severity = none
+dotnet_diagnostic.C28210.severity = none
+dotnet_diagnostic.C28211.severity = none
+dotnet_diagnostic.C28212.severity = none
+dotnet_diagnostic.C28213.severity = none
+dotnet_diagnostic.C28214.severity = none
+dotnet_diagnostic.C28215.severity = none
+dotnet_diagnostic.C28216.severity = none
+dotnet_diagnostic.C28217.severity = none
+dotnet_diagnostic.C28218.severity = none
+dotnet_diagnostic.C28219.severity = none
+dotnet_diagnostic.C28220.severity = none
+dotnet_diagnostic.C28221.severity = none
+dotnet_diagnostic.C28222.severity = none
+dotnet_diagnostic.C28223.severity = none
+dotnet_diagnostic.C28224.severity = none
+dotnet_diagnostic.C28225.severity = none
+dotnet_diagnostic.C28226.severity = none
+dotnet_diagnostic.C28227.severity = none
+dotnet_diagnostic.C28228.severity = none
+dotnet_diagnostic.C28229.severity = none
+dotnet_diagnostic.C28230.severity = none
+dotnet_diagnostic.C28231.severity = none
+dotnet_diagnostic.C28232.severity = none
+dotnet_diagnostic.C28233.severity = none
+dotnet_diagnostic.C28234.severity = none
+dotnet_diagnostic.C28235.severity = none
+dotnet_diagnostic.C28236.severity = none
+dotnet_diagnostic.C28237.severity = none
+dotnet_diagnostic.C28238.severity = none
+dotnet_diagnostic.C28239.severity = none
+dotnet_diagnostic.C28240.severity = none
+dotnet_diagnostic.C28241.severity = none
+dotnet_diagnostic.C28243.severity = none
+dotnet_diagnostic.C28244.severity = none
+dotnet_diagnostic.C28245.severity = none
+dotnet_diagnostic.C28246.severity = none
+dotnet_diagnostic.C28250.severity = none
+dotnet_diagnostic.C28251.severity = none
+dotnet_diagnostic.C28252.severity = none
+dotnet_diagnostic.C28253.severity = none
+dotnet_diagnostic.C28254.severity = none
+dotnet_diagnostic.C28260.severity = none
+dotnet_diagnostic.C28262.severity = none
+dotnet_diagnostic.C28263.severity = none
+dotnet_diagnostic.C28266.severity = none
+dotnet_diagnostic.C28267.severity = none
+dotnet_diagnostic.C28272.severity = none
+dotnet_diagnostic.C28273.severity = none
+dotnet_diagnostic.C28275.severity = none
+dotnet_diagnostic.C28278.severity = none
+dotnet_diagnostic.C28279.severity = none
+dotnet_diagnostic.C28280.severity = none
+dotnet_diagnostic.C28282.severity = none
+dotnet_diagnostic.C28283.severity = none
+dotnet_diagnostic.C28284.severity = none
+dotnet_diagnostic.C28285.severity = none
+dotnet_diagnostic.C28286.severity = none
+dotnet_diagnostic.C28287.severity = none
+dotnet_diagnostic.C28288.severity = none
+dotnet_diagnostic.C28289.severity = none
+dotnet_diagnostic.C28290.severity = none
+dotnet_diagnostic.C28291.severity = none
+dotnet_diagnostic.C28300.severity = none
+dotnet_diagnostic.C28301.severity = none
+dotnet_diagnostic.C28302.severity = none
+dotnet_diagnostic.C28303.severity = none
+dotnet_diagnostic.C28304.severity = none
+dotnet_diagnostic.C28305.severity = none
+dotnet_diagnostic.C28306.severity = none
+dotnet_diagnostic.C28307.severity = none
+dotnet_diagnostic.C28308.severity = none
+dotnet_diagnostic.C28309.severity = none
+dotnet_diagnostic.C28350.severity = none
+dotnet_diagnostic.C28351.severity = none
+dotnet_diagnostic.C28601.severity = none
+dotnet_diagnostic.C28602.severity = none
+dotnet_diagnostic.C28604.severity = none
+dotnet_diagnostic.C28615.severity = none
+dotnet_diagnostic.C28616.severity = none
+dotnet_diagnostic.C28617.severity = none
+dotnet_diagnostic.C28623.severity = none
+dotnet_diagnostic.C28624.severity = none
+dotnet_diagnostic.C28625.severity = none
+dotnet_diagnostic.C28636.severity = none
+dotnet_diagnostic.C28637.severity = none
+dotnet_diagnostic.C28638.severity = none
+dotnet_diagnostic.C28639.severity = none
+dotnet_diagnostic.C28640.severity = none
+dotnet_diagnostic.C28645.severity = none
+dotnet_diagnostic.C28648.severity = none
+dotnet_diagnostic.C28649.severity = none
+dotnet_diagnostic.C28650.severity = none
+dotnet_diagnostic.C28714.severity = none
+dotnet_diagnostic.C28715.severity = none
+dotnet_diagnostic.C28716.severity = none
+dotnet_diagnostic.C28717.severity = none
+dotnet_diagnostic.C28719.severity = none
+dotnet_diagnostic.C28720.severity = none
+dotnet_diagnostic.C28721.severity = none
+dotnet_diagnostic.C28726.severity = none
+dotnet_diagnostic.C28727.severity = none
+dotnet_diagnostic.C28730.severity = none
+dotnet_diagnostic.C28735.severity = none
+dotnet_diagnostic.C28736.severity = none
+dotnet_diagnostic.C28750.severity = none
+dotnet_diagnostic.C28751.severity = none
+dotnet_diagnostic.C6001.severity = none
+dotnet_diagnostic.C6011.severity = none
+dotnet_diagnostic.C6014.severity = none
+dotnet_diagnostic.C6029.severity = none
+dotnet_diagnostic.C6031.severity = none
+dotnet_diagnostic.C6053.severity = none
+dotnet_diagnostic.C6054.severity = none
+dotnet_diagnostic.C6059.severity = none
+dotnet_diagnostic.C6063.severity = none
+dotnet_diagnostic.C6064.severity = none
+dotnet_diagnostic.C6066.severity = none
+dotnet_diagnostic.C6067.severity = none
+dotnet_diagnostic.C6101.severity = none
+dotnet_diagnostic.C6200.severity = none
+dotnet_diagnostic.C6201.severity = none
+dotnet_diagnostic.C6211.severity = none
+dotnet_diagnostic.C6214.severity = none
+dotnet_diagnostic.C6215.severity = none
+dotnet_diagnostic.C6216.severity = none
+dotnet_diagnostic.C6217.severity = none
+dotnet_diagnostic.C6219.severity = none
+dotnet_diagnostic.C6220.severity = none
+dotnet_diagnostic.C6221.severity = none
+dotnet_diagnostic.C6225.severity = none
+dotnet_diagnostic.C6226.severity = none
+dotnet_diagnostic.C6230.severity = none
+dotnet_diagnostic.C6235.severity = none
+dotnet_diagnostic.C6236.severity = none
+dotnet_diagnostic.C6237.severity = none
+dotnet_diagnostic.C6239.severity = none
+dotnet_diagnostic.C6240.severity = none
+dotnet_diagnostic.C6242.severity = none
+dotnet_diagnostic.C6244.severity = none
+dotnet_diagnostic.C6246.severity = none
+dotnet_diagnostic.C6248.severity = none
+dotnet_diagnostic.C6250.severity = none
+dotnet_diagnostic.C6255.severity = none
+dotnet_diagnostic.C6258.severity = none
+dotnet_diagnostic.C6259.severity = none
+dotnet_diagnostic.C6260.severity = none
+dotnet_diagnostic.C6262.severity = none
+dotnet_diagnostic.C6263.severity = none
+dotnet_diagnostic.C6268.severity = none
+dotnet_diagnostic.C6269.severity = none
+dotnet_diagnostic.C6270.severity = none
+dotnet_diagnostic.C6271.severity = none
+dotnet_diagnostic.C6272.severity = none
+dotnet_diagnostic.C6273.severity = none
+dotnet_diagnostic.C6274.severity = none
+dotnet_diagnostic.C6276.severity = none
+dotnet_diagnostic.C6277.severity = none
+dotnet_diagnostic.C6278.severity = none
+dotnet_diagnostic.C6279.severity = none
+dotnet_diagnostic.C6280.severity = none
+dotnet_diagnostic.C6281.severity = none
+dotnet_diagnostic.C6282.severity = none
+dotnet_diagnostic.C6283.severity = none
+dotnet_diagnostic.C6284.severity = none
+dotnet_diagnostic.C6285.severity = none
+dotnet_diagnostic.C6286.severity = none
+dotnet_diagnostic.C6287.severity = none
+dotnet_diagnostic.C6288.severity = none
+dotnet_diagnostic.C6289.severity = none
+dotnet_diagnostic.C6290.severity = none
+dotnet_diagnostic.C6291.severity = none
+dotnet_diagnostic.C6292.severity = none
+dotnet_diagnostic.C6293.severity = none
+dotnet_diagnostic.C6294.severity = none
+dotnet_diagnostic.C6295.severity = none
+dotnet_diagnostic.C6296.severity = none
+dotnet_diagnostic.C6297.severity = none
+dotnet_diagnostic.C6298.severity = none
+dotnet_diagnostic.C6299.severity = none
+dotnet_diagnostic.C6302.severity = none
+dotnet_diagnostic.C6303.severity = none
+dotnet_diagnostic.C6305.severity = none
+dotnet_diagnostic.C6306.severity = none
+dotnet_diagnostic.C6308.severity = none
+dotnet_diagnostic.C6310.severity = none
+dotnet_diagnostic.C6312.severity = none
+dotnet_diagnostic.C6313.severity = none
+dotnet_diagnostic.C6314.severity = none
+dotnet_diagnostic.C6315.severity = none
+dotnet_diagnostic.C6316.severity = none
+dotnet_diagnostic.C6317.severity = none
+dotnet_diagnostic.C6318.severity = none
+dotnet_diagnostic.C6319.severity = none
+dotnet_diagnostic.C6320.severity = none
+dotnet_diagnostic.C6322.severity = none
+dotnet_diagnostic.C6323.severity = none
+dotnet_diagnostic.C6324.severity = none
+dotnet_diagnostic.C6326.severity = none
+dotnet_diagnostic.C6328.severity = none
+dotnet_diagnostic.C6329.severity = none
+dotnet_diagnostic.C6330.severity = none
+dotnet_diagnostic.C6331.severity = none
+dotnet_diagnostic.C6332.severity = none
+dotnet_diagnostic.C6333.severity = none
+dotnet_diagnostic.C6334.severity = none
+dotnet_diagnostic.C6335.severity = none
+dotnet_diagnostic.C6336.severity = none
+dotnet_diagnostic.C6340.severity = none
+dotnet_diagnostic.C6381.severity = none
+dotnet_diagnostic.C6383.severity = none
+dotnet_diagnostic.C6384.severity = none
+dotnet_diagnostic.C6385.severity = none
+dotnet_diagnostic.C6386.severity = none
+dotnet_diagnostic.C6387.severity = none
+dotnet_diagnostic.C6388.severity = none
+dotnet_diagnostic.C6400.severity = none
+dotnet_diagnostic.C6401.severity = none
+dotnet_diagnostic.C6411.severity = none
+dotnet_diagnostic.C6412.severity = none
+dotnet_diagnostic.C6500.severity = none
+dotnet_diagnostic.C6501.severity = none
+dotnet_diagnostic.C6503.severity = none
+dotnet_diagnostic.C6504.severity = none
+dotnet_diagnostic.C6505.severity = none
+dotnet_diagnostic.C6506.severity = none
+dotnet_diagnostic.C6508.severity = none
+dotnet_diagnostic.C6509.severity = none
+dotnet_diagnostic.C6510.severity = none
+dotnet_diagnostic.C6511.severity = none
+dotnet_diagnostic.C6513.severity = none
+dotnet_diagnostic.C6514.severity = none
+dotnet_diagnostic.C6515.severity = none
+dotnet_diagnostic.C6516.severity = none
+dotnet_diagnostic.C6517.severity = none
+dotnet_diagnostic.C6518.severity = none
+dotnet_diagnostic.C6522.severity = none
+dotnet_diagnostic.C6525.severity = none
+dotnet_diagnostic.C6527.severity = none
+dotnet_diagnostic.C6530.severity = none
+dotnet_diagnostic.C6540.severity = none
+dotnet_diagnostic.C6551.severity = none
+dotnet_diagnostic.C6552.severity = none
+dotnet_diagnostic.C6701.severity = none
+dotnet_diagnostic.C6702.severity = none
+dotnet_diagnostic.C6703.severity = none
+dotnet_diagnostic.C6704.severity = none
+dotnet_diagnostic.C6705.severity = none
+dotnet_diagnostic.C6706.severity = none
+dotnet_diagnostic.C6707.severity = none
+dotnet_diagnostic.C6993.severity = none
+dotnet_diagnostic.C6995.severity = none
+dotnet_diagnostic.C6997.severity = none
+
+
+## Runtime analysis ##
+
+dotnet_diagnostic.CA1825.severity = none	# CA1825: Avoid zero-length array allocations
+
+## Tasks analysis ##
+
+dotnet_diagnostic.RS0018.severity = none
+
+## Documentation ##
+
+dotnet_diagnostic.RS0010.severity = none
+
+## StyleCop Analyzers ##
+
+dotnet_diagnostic.SA0001.severity = none # SA0001: XML comment analysis is disabled due to project configuration
+dotnet_diagnostic.SA1116.severity = none # SA1116: The parameters should begin on the line after the declaration, whenever the parameter span across multiple line
+dotnet_diagnostic.SA1117.severity = none # SA1117: The parameters should all be placed on the same line or each parameter should be placed on its own line.
+dotnet_diagnostic.SA1118.severity = none # SA1118: The parameter spans multiple lines
+dotnet_diagnostic.SA1133.severity = none # SA1133: Each attribute should be placed in its own set of square brackets.
+dotnet_diagnostic.SA1200.severity = none # SA1200: Using directive should appear within a namespace declaration
+dotnet_diagnostic.SA1201.severity = none # SA1201: A property should not follow a method
+dotnet_diagnostic.SA1202.severity = none # SA1202: 'public' members should come before 'private' members
+dotnet_diagnostic.SA1203.severity = none # SA1203: Constant fields should appear before non-constant fields
+dotnet_diagnostic.SA1204.severity = none # SA1204: Static members should appear before non-static members
+dotnet_diagnostic.SA1214.severity = none # SA1214: Readonly fields should appear before non-readonly fields
+dotnet_diagnostic.SA1401.severity = none # SA1401: Field should be private
+dotnet_diagnostic.SA1402.severity = none # SA1402: File may only contain a single type
+dotnet_diagnostic.SA1413.severity = none # SA1413: Use trailing comma in multi-line initializers
+dotnet_diagnostic.SA1501.severity = none # SA1501: Statement should not be on a single line
+dotnet_diagnostic.SA1503.severity = none # SA1503: Braces should not be omitted
+dotnet_diagnostic.SA1513.severity = none # SA1513: Closing brace should be followed by blank line
+dotnet_diagnostic.SA1515.severity = none # SA1515: Single-line comment should be preceded by blank line
+dotnet_diagnostic.SA1516.severity = none # SA1516: Elements should be separated by blank line
+dotnet_diagnostic.SA1600.severity = none # SA1600: Elements should be documented
+dotnet_diagnostic.SA1604.severity = none # SA1604: Element documentation should have summary
+dotnet_diagnostic.SA1610.severity = none # SA1610: Property documentation should have value text
+dotnet_diagnostic.SA1611.severity = none # SA1611: The documentation for parameter 'predicate' is missing
+dotnet_diagnostic.SA1612.severity = none # SA1612: The parameter documentation for 'context' should be at position 1.
+dotnet_diagnostic.SA1614.severity = none # SA1614: Element parameter documentation should have text
+dotnet_diagnostic.SA1615.severity = none # SA1615: Element return value should be documented
+dotnet_diagnostic.SA1616.severity = none # SA1616: Element return value documentation should have text
+dotnet_diagnostic.SA1618.severity = none # SA1618: The documentation for type parameter 'TProperty' is missing
+dotnet_diagnostic.SA1622.severity = none # SA1622: Generic type parameter documentation should have text.
+dotnet_diagnostic.SA1623.severity = none # SA1623: The property's documentation summary text should begin with: 'Gets'
+dotnet_diagnostic.SA1625.severity = none # SA1625: Element documentation should not be copied and pasted
+dotnet_diagnostic.SA1627.severity = none # SA1627: The documentation text within the \'exception\' tag should not be empty.
+dotnet_diagnostic.SA1633.severity = none # SA1633: The file header is missing or not located at the top of the file.
+dotnet_diagnostic.SA1642.severity = none # SA1642: Constructor summary documentation should begin with standard text
diff --git a/Src/AutoFixture.globalconfig b/Src/AutoFixture.globalconfig
new file mode 100644
index 00000000..297b7df2
--- /dev/null
+++ b/Src/AutoFixture.globalconfig
@@ -0,0 +1,56 @@
+is_global = true
+global_level = 100
+
+# NOTE: No section headers for configuration entries
+
+#### .NET Coding Conventions ####
+
+## Naming conventions ##
+
+#### Diagnostic configuration ####
+
+## Managed code analysis ##
+
+dotnet_diagnostic.CA1006.severity = none	# CA1006: Do not nest generic types in member signatures
+dotnet_diagnostic.CA1020.severity = none	# CA1020: Avoid namespaces with few types
+dotnet_diagnostic.CA1303.severity = none	# CA1303: Do not pass literals as localized parameters
+dotnet_diagnostic.CA2243.severity = none	# CA2243: Attribute string literals should parse correctly
+
+## Runtime analysis ##
+
+dotnet_diagnostic.CA1825.severity = none	# CA1825: Avoid zero-length array allocations
+
+## Security ##
+
+dotnet_diagnostic.CA5394.severity = none	# CA5394: Do not use insecure randomness
+
+## StyleCop Analyzers ##
+
+dotnet_diagnostic.SA1116.severity = none # SA1116: The parameters should begin on the line after the declaration, whenever the parameter span across multiple line
+dotnet_diagnostic.SA1117.severity = none # SA1117: The parameters should all be placed on the same line or each parameter should be placed on its own line.
+dotnet_diagnostic.SA1118.severity = none # SA1118: The parameter spans multiple lines
+dotnet_diagnostic.SA1200.severity = none # SA1200: Using directive should appear within a namespace declaration
+dotnet_diagnostic.SA1201.severity = none # SA1201: A property should not follow a method
+dotnet_diagnostic.SA1202.severity = none # SA1202: 'public' members should come before 'private' members
+dotnet_diagnostic.SA1203.severity = none # SA1203: Constant fields should appear before non-constant fields
+dotnet_diagnostic.SA1204.severity = none # SA1204: Static members should appear before non-static members
+dotnet_diagnostic.SA1214.severity = none # SA1214: Readonly fields should appear before non-readonly fields
+dotnet_diagnostic.SA1413.severity = none # SA1413: Use trailing comma in multi-line initializers
+dotnet_diagnostic.SA1501.severity = none # SA1501: Statement should not be on a single line
+dotnet_diagnostic.SA1503.severity = none # SA1503: Braces should not be omitted
+dotnet_diagnostic.SA1513.severity = none # SA1513: Closing brace should be followed by blank line
+dotnet_diagnostic.SA1600.severity = none # SA1600: Elements should be documented
+dotnet_diagnostic.SA1604.severity = none # SA1604: Element documentation should have summary
+dotnet_diagnostic.SA1610.severity = none # SA1610: Property documentation should have value text
+dotnet_diagnostic.SA1611.severity = none # SA1611: The documentation for parameter 'predicate' is missing
+dotnet_diagnostic.SA1612.severity = none # SA1612: The parameter documentation for 'context' should be at position 1.
+dotnet_diagnostic.SA1614.severity = none # SA1614: Element parameter documentation should have text
+dotnet_diagnostic.SA1615.severity = none # SA1615: Element return value should be documented
+dotnet_diagnostic.SA1616.severity = none # SA1616: Element return value documentation should have text
+dotnet_diagnostic.SA1618.severity = none # SA1618: The documentation for type parameter 'TProperty' is missing
+dotnet_diagnostic.SA1622.severity = none # SA1622: Generic type parameter documentation should have text.
+dotnet_diagnostic.SA1623.severity = none # SA1623: The property's documentation summary text should begin with: 'Gets'
+dotnet_diagnostic.SA1625.severity = none # SA1625: Element documentation should not be copied and pasted
+dotnet_diagnostic.SA1627.severity = none # SA1627: The documentation text within the \'exception\' tag should not be empty.
+dotnet_diagnostic.SA1633.severity = none # SA1633: The file header is missing or not located at the top of the file.
+dotnet_diagnostic.SA1642.severity = none # SA1642: Constructor summary documentation should begin with standard text
\ No newline at end of file
diff --git a/Src/CodeAnalysis.AutoFixture.ruleset b/Src/CodeAnalysis.AutoFixture.ruleset
deleted file mode 100644
index 5449996f..00000000
--- a/Src/CodeAnalysis.AutoFixture.ruleset
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-  
-  
-    
-    
-    
-  
-  
-    
-  
-  
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-     
-  
-
diff --git a/Src/CodeAnalysis.Empty.ruleset b/Src/CodeAnalysis.Empty.ruleset
deleted file mode 100644
index e7f77caf..00000000
--- a/Src/CodeAnalysis.Empty.ruleset
+++ /dev/null
@@ -1,844 +0,0 @@
-
-
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-
\ No newline at end of file
diff --git a/Src/CodeAnalysis.Test.ruleset b/Src/CodeAnalysis.Test.ruleset
deleted file mode 100644
index 18e040c6..00000000
--- a/Src/CodeAnalysis.Test.ruleset
+++ /dev/null
@@ -1,609 +0,0 @@
-
-
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-     
-     
-     
-     
-     
-     
-  
-
diff --git a/Src/Common.Test.props b/Src/Common.Test.props
index 9ac3c27f..e59b8068 100644
--- a/Src/Common.Test.props
+++ b/Src/Common.Test.props
@@ -6,8 +6,12 @@
     true
     true
 
+    false
+
+    
     false
-    $(MSBuildThisFileDirectory)\CodeAnalysis.Test.ruleset
+    true
+    latest-Default
 
     false
     
@@ -25,4 +29,8 @@
       runtime; build; native; contentfiles; analyzers; buildtransitive
     
   
+
+  
+    
+  
 
diff --git a/Src/Common.props b/Src/Common.props
index e5771ea4..d9490984 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -7,7 +7,6 @@
     false
 
     en-US
-    $(MSBuildThisFileDirectory)CodeAnalysis.Empty.ruleset
 
     True
     $(MSBuildThisFileDirectory)AutoFixture.snk
@@ -20,6 +19,10 @@
     
     $(NoWarn);NETSDK1138;NU1902;NU1903
 
+    
+    true
+    latest-Recommended
+
     
     Mark Seemann,AutoFixture
     https://github.com/AutoFixture/AutoFixture
@@ -30,6 +33,11 @@
     $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb
     true
   
+
+  
+    
+  
+
   
     
   
@@ -70,14 +78,13 @@
         $(DefineConstants);CODE_ANALYSIS
         true
         true
-        $(MSBuildThisFileDirectory)\CodeAnalysis.AutoFixture.ruleset
+        true
       
     
   
 
   
-    
-    
+    
     
   
 
diff --git a/Src/TestTypeFoundation/GuardedConstructorHostHoldingStaticReadOnlyField.cs b/Src/TestTypeFoundation/GuardedConstructorHostHoldingStaticReadOnlyField.cs
index f3648fc1..48f0f075 100644
--- a/Src/TestTypeFoundation/GuardedConstructorHostHoldingStaticReadOnlyField.cs
+++ b/Src/TestTypeFoundation/GuardedConstructorHostHoldingStaticReadOnlyField.cs
@@ -5,11 +5,11 @@ namespace TestTypeFoundation
     public class GuardedConstructorHostHoldingStaticReadOnlyField
         where TItem : class
     {
-        public static readonly TStaticField Field = default(TStaticField);
+        public static readonly TStaticField Field;
 
         public GuardedConstructorHostHoldingStaticReadOnlyField(TItem item)
         {
-            if (item == null)
+            if (item is null)
             {
                 throw new ArgumentNullException(nameof(item));
             }
diff --git a/Src/TestTypeFoundation/TestTypeFoundation.csproj b/Src/TestTypeFoundation/TestTypeFoundation.csproj
index 205ee402..51f2d6b0 100644
--- a/Src/TestTypeFoundation/TestTypeFoundation.csproj
+++ b/Src/TestTypeFoundation/TestTypeFoundation.csproj
@@ -3,7 +3,7 @@
   
 
   
-    net462;netstandard2.0;net5.0
+    net462;netstandard2.0;net5.0;net6.0
     TestTypeFoundation
     TestTypeFoundation
   
diff --git a/global.json b/global.json
index 12f5f65b..d8366ba9 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "5.0.401",
+    "version": "6.0.0",
     "rollForward": "latestMinor"
   }
 }
\ No newline at end of file

From 6f91c813d8ff18c7d608c424aba9faea2c973310 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 15 Apr 2024 00:13:25 +0300
Subject: [PATCH 21/30] Added NUnit 4 support (#1452)

---
 Src/All.sln | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Src/All.sln b/Src/All.sln
index f094e7d4..687003a9 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -83,6 +83,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.c
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy8UnitTest", "AutoFakeItEasy.FakeItEasy8UnitTest\AutoFakeItEasy.FakeItEasy8UnitTest.csproj", "{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4", "AutoFixture.NUnit4\AutoFixture.NUnit4.csproj", "{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4.UnitTest", "AutoFixture.NUnit4.UnitTest\AutoFixture.NUnit4.UnitTest.csproj", "{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -279,6 +283,18 @@ Global
 		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Release|Any CPU.Build.0 = Release|Any CPU
 		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Verify|Any CPU.Build.0 = Verify|Any CPU
+		{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
+		{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Verify|Any CPU.Build.0 = Verify|Any CPU
+		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
+		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Verify|Any CPU.Build.0 = Verify|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

From 7393c43c3f7e493aaa27a530df9084daa2be6c80 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Mon, 15 Apr 2024 10:16:58 +0300
Subject: [PATCH 22/30] XML documentation generation always enabled (#1454)

---
 Src/Common.props | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/Src/Common.props b/Src/Common.props
index d9490984..fd4c0318 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -5,6 +5,7 @@
     Copyright © AutoFixture 2011
     false
     false
+    true
 
     en-US
 
@@ -69,14 +70,12 @@
   
     
       
-        true
         portable
       
     
     
       
         $(DefineConstants);CODE_ANALYSIS
-        true
         true
         true
       

From bfc553d48ec0cccb2f9f873cf9e5b07623c3ec61 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Sat, 21 Sep 2024 16:38:41 +0300
Subject: [PATCH 23/30] Set explicit versions for C# and F# (#1476)

---
 Src/All.sln             | 1 +
 Src/Common.FSharp.props | 1 +
 Src/Common.props        | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/Src/All.sln b/Src/All.sln
index 687003a9..c5a6a1b5 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -63,6 +63,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 		AutoFixture.globalconfig = AutoFixture.globalconfig
 		AutoFixture.Tests.globalconfig = AutoFixture.Tests.globalconfig
 		..\CODE_OF_CONDUCT.md = ..\CODE_OF_CONDUCT.md
+		Common.FSharp.props = Common.FSharp.props
 		Common.props = Common.props
 		Common.Test.props = Common.Test.props
 		Common.Test.xUnit.props = Common.Test.xUnit.props
diff --git a/Src/Common.FSharp.props b/Src/Common.FSharp.props
index 171f79f0..5e04c789 100644
--- a/Src/Common.FSharp.props
+++ b/Src/Common.FSharp.props
@@ -3,5 +3,6 @@
         
         true
+        6
     
 
\ No newline at end of file
diff --git a/Src/Common.props b/Src/Common.props
index fd4c0318..827fc1fc 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -13,7 +13,7 @@
     $(MSBuildThisFileDirectory)AutoFixture.snk
 
     Debug;Release;Verify
-    latest
+    10
 
     true
 

From 8b187b027bbb1a8c5866e65a73873f0dfef06ea0 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Tue, 14 Jan 2025 22:55:38 +0200
Subject: [PATCH 24/30] Refactored xUnit data attribute internal implementation
 (#1479)

* - Made xUnit 2 internal implementations public for better testability, and reuse by clients of the library
- Changed class and member source behavior to repeat the original xUnit 2 behavior
- Made internal implementation more statically typed to reduce casting operations
- Reduced the number of lazy initializations
- Reduced the number of allocations

* Added inline test case source tests

* Added tests demonstrating fix for #1463

* Added MemberTestCaseSource tests

* - Renamed test cases to test data
- Fixed syntax warnings

* Replaced missing feature exception in fake class

* Updated modifier order rule for JetBrains IDEs

* Fixed type conversion error

* Added test for test data with null values passed from class auto data attribute
---
 Src/All.sln.DotSettings         | 4 +++-
 build/_build.csproj.DotSettings | 5 +++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/Src/All.sln.DotSettings b/Src/All.sln.DotSettings
index 4219b5da..503e8c67 100644
--- a/Src/All.sln.DotSettings
+++ b/Src/All.sln.DotSettings
@@ -1,6 +1,7 @@
-
+
 	SUGGESTION
 	True
+	public private protected internal file static new abstract virtual sealed readonly override extern unsafe volatile async required
 	1
 	1
 	1
@@ -21,6 +22,7 @@
 	True
 	True
 	True
+	True
 	True
 	True
 	xUnit fact template
diff --git a/build/_build.csproj.DotSettings b/build/_build.csproj.DotSettings
index 7bc28484..9b7b3fb2 100644
--- a/build/_build.csproj.DotSettings
+++ b/build/_build.csproj.DotSettings
@@ -1,4 +1,4 @@
-
+
 	DO_NOT_SHOW
 	DO_NOT_SHOW
 	DO_NOT_SHOW
@@ -24,4 +24,5 @@
 	True
 	True
 	True
-	True
+	True
+	True

From 0345b3488b98cf46a9679e0b802459ecf5f648a1 Mon Sep 17 00:00:00 2001
From: Sebastian Walter 
Date: Mon, 20 Jan 2025 00:00:20 +0100
Subject: [PATCH 25/30] Feature/xunit.v3 (#1471)

* duplicated xunit2 project as base for xunit3 support

* raised .net sdk and remove unsupported framework versions

* fixed build issues by resolving types

* changed naming from xunit3 to xunit.v3

* rolled back TargetFramework changes es discussed in PR 1471 | https://github.com/AutoFixture/AutoFixture/pull/1471#issuecomment-2296668536

* Revert "changed naming from xunit3 to xunit.v3"

This reverts commit f89caf838112c329b6cd9ab81c40e2437278a640.

* corrected path of nuget.config and updated package references

* updated xunit.v3.* packages to v0.3.0-pre11

* updated xunit.v3.* packages to v0.4.0-pre1

* updated xunit.v3 and xunit.v3.extensibility.core to v0.5.0-pre27

* Updated NuGet Packages once again

* updated xunit.v3 and xunit.v3.extensibility.core to v1.0.0

* Reset changed configuratino

* Removed net472 target

* Removed commented test

* Updated copyright info

* Fixed build error

* Disabled discovery enumeration

* Fixed ValueTask warning

* Re-imported xUnit 2 sources

* Removed unnecessary dependencies

* Fixed xUnit 2 mentions in test names

---------

Co-authored-by: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
---
 Src/All.sln                  | 18 +++++++++++++++++-
 Src/All.sln.DotSettings      |  1 +
 Src/Common.Test.props        |  4 ++--
 Src/Common.Test.xUnit3.props |  9 +++++++++
 build.sh                     |  0
 5 files changed, 29 insertions(+), 3 deletions(-)
 create mode 100644 Src/Common.Test.xUnit3.props
 mode change 100755 => 100644 build.sh

diff --git a/Src/All.sln b/Src/All.sln
index c5a6a1b5..04f3d524 100644
--- a/Src/All.sln
+++ b/Src/All.sln
@@ -1,4 +1,3 @@
-
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 17
 VisualStudioVersion = 17.4.33205.214
@@ -67,6 +66,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 		Common.props = Common.props
 		Common.Test.props = Common.Test.props
 		Common.Test.xUnit.props = Common.Test.xUnit.props
+		Common.Test.xUnit3.props = Common.Test.xUnit3.props
 		..\CONTRIBUTING.md = ..\CONTRIBUTING.md
 		..\LICENCE.txt = ..\LICENCE.txt
 		..\README.md = ..\README.md
@@ -88,6 +88,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4", "AutoF
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4.UnitTest", "AutoFixture.NUnit4.UnitTest\AutoFixture.NUnit4.UnitTest.csproj", "{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}"
 EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3", "AutoFixture.xUnit3\AutoFixture.xUnit3.csproj", "{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3.UnitTest", "AutoFixture.xUnit3.UnitTest\AutoFixture.xUnit3.UnitTest.csproj", "{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -296,6 +300,18 @@ Global
 		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Release|Any CPU.Build.0 = Release|Any CPU
 		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
 		{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Verify|Any CPU.Build.0 = Verify|Any CPU
+		{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Release|Any CPU.Build.0 = Release|Any CPU
+		{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
+		{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Verify|Any CPU.Build.0 = Verify|Any CPU
+		{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Verify|Any CPU.ActiveCfg = Verify|Any CPU
+		{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Verify|Any CPU.Build.0 = Verify|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Src/All.sln.DotSettings b/Src/All.sln.DotSettings
index 503e8c67..dac263b9 100644
--- a/Src/All.sln.DotSettings
+++ b/Src/All.sln.DotSettings
@@ -13,6 +13,7 @@
 	True
 	True
 	<Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" />
+	<Policy><Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy>
 	True
 	True
 	True
diff --git a/Src/Common.Test.props b/Src/Common.Test.props
index e59b8068..f7a68151 100644
--- a/Src/Common.Test.props
+++ b/Src/Common.Test.props
@@ -22,9 +22,9 @@
   
 
   
-    
+    
 
-    
+    
       all
       runtime; build; native; contentfiles; analyzers; buildtransitive
     
diff --git a/Src/Common.Test.xUnit3.props b/Src/Common.Test.xUnit3.props
new file mode 100644
index 00000000..5963feff
--- /dev/null
+++ b/Src/Common.Test.xUnit3.props
@@ -0,0 +1,9 @@
+
+  
+    
+    
+      all
+      runtime; build; native; contentfiles; analyzers; buildtransitive
+    
+  
+
diff --git a/build.sh b/build.sh
old mode 100755
new mode 100644

From ee124ac44b5ade987ac0b52bfe39022f474b4638 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Tue, 21 Jan 2025 19:57:19 +0200
Subject: [PATCH 26/30] Updated GitHub workflow action versions (#1488)

---
 .github/workflows/continuous.yml |  6 +++---
 .github/workflows/release.yml    | 12 ++++++------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml
index 6ba4ff0a..85e5db60 100644
--- a/.github/workflows/continuous.yml
+++ b/.github/workflows/continuous.yml
@@ -27,16 +27,16 @@ jobs:
     name: windows-latest
     runs-on: windows-latest
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
         with:
           fetch-depth: 0
-      - uses: actions/setup-dotnet@v1
+      - uses: actions/setup-dotnet@v4
         with:
           dotnet-version: |
             5.0.x
             6.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
-        uses: actions/cache@v2
+        uses: actions/cache@v4
         with:
           path: |
             .nuke/temp
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e0a695d8..a5e2408e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -26,16 +26,16 @@ jobs:
     name: windows-latest
     runs-on: windows-latest
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v4
         with:
           fetch-depth: 0
-      - uses: actions/setup-dotnet@v1
+      - uses: actions/setup-dotnet@v4
         with:
           dotnet-version: |
             5.0.x
             6.0.x
       - name: Cache .nuke/temp, ~/.nuget/packages
-        uses: actions/cache@v2
+        uses: actions/cache@v4
         with:
           path: |
             .nuke/temp
@@ -46,15 +46,15 @@ jobs:
         env:
           GitHubToken: ${{ secrets.GITHUB_TOKEN }}
           NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
-      - uses: actions/upload-artifact@v1
+      - uses: actions/upload-artifact@v4
         with:
           name: testresults
           path: artifacts/testresults
-      - uses: actions/upload-artifact@v1
+      - uses: actions/upload-artifact@v4
         with:
           name: reports
           path: artifacts/reports
-      - uses: actions/upload-artifact@v1
+      - uses: actions/upload-artifact@v4
         with:
           name: packages
           path: artifacts/packages

From 644afb639b83871fd81aef63a5f315ba1c415884 Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Wed, 19 Feb 2025 18:34:21 +0200
Subject: [PATCH 27/30] Updated copyright and author details (#1491)

This PR changes the copyright and author information in the packages metadata and license the agreements to reference explicitly the AutoFixture project and its contributors (as a collective).
This should remove any legal ambiguity of copyright ownership, in respect to the .NET Foundation CLA agreement.
---
 LICENCE.txt                                      | 2 +-
 Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj | 2 --
 Src/Common.props                                 | 4 ++--
 3 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/LICENCE.txt b/LICENCE.txt
index 85921e70..9d04c63f 100644
--- a/LICENCE.txt
+++ b/LICENCE.txt
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2013 Mark Seemann
+Copyright (c) AutoFixture
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
index 3dc104e4..2045c229 100644
--- a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
+++ b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
@@ -6,13 +6,11 @@
     AutoFixture.NUnit2
     AutoFixture.NUnit2
     AutoFixture.NUnit2
-    Copyright © Ploeh 2011
 
     
     AutoFixture.NUnit2
     AutoFixture with NUnit2
     By leveraging the some features of NUnit, this extension turns AutoFixture into a declarative framework for writing unit tests. In many ways it becomes a unit testing DSL (Domain Specific Language).
-    Gert Jansen van Rensburg,AutoFixture
   
 
   
diff --git a/Src/Common.props b/Src/Common.props
index 827fc1fc..024af5ea 100644
--- a/Src/Common.props
+++ b/Src/Common.props
@@ -2,7 +2,7 @@
   
     AutoFixture
     AutoFixture
-    Copyright © AutoFixture 2011
+    Copyright © AutoFixture
     false
     false
     true
@@ -25,7 +25,7 @@
     latest-Recommended
 
     
-    Mark Seemann,AutoFixture
+    AutoFixture Contributors
     https://github.com/AutoFixture/AutoFixture
     true
     MIT

From 91c23e5c7bb6844a53eba6ee99febbc9092a7e4b Mon Sep 17 00:00:00 2001
From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com>
Date: Wed, 19 Feb 2025 19:26:57 +0200
Subject: [PATCH 28/30] Updated solution structure (#1492)

* Removed partial solution files

* Move solution files to root directory

* Renamed main solution file and configuration

* Added test results file override
---
 .nuke/parameters.json                         |   2 +-
 ...alconfig => AutoFixture.Tests.globalconfig |   0
 ...e.globalconfig => AutoFixture.globalconfig |   0
 Src/All.sln => AutoFixture.sln                |  88 +++++++++---------
 ...DotSettings => AutoFixture.sln.DotSettings |   0
 Src/AutoFixture.snk => AutoFixture.snk        | Bin
 Src/Common.Test.props => Common.Test.props    |   0
 Src/Common.props => Common.props              |   2 +-
 .../AutoFixture.NUnit2.UnitTest.csproj        |   4 +-
 Src/AutoFixture.NUnit2.slnf                   |  12 ---
 .../AutoFixture.NUnit2.csproj                 |   2 +-
 Src/AutoFixture.NUnit3.slnf                   |  12 ---
 Src/AutoFixture.sln.DotSettings               |   5 -
 Src/AutoFixture.slnf                          |  13 ---
 Src/AutoFixture.xUnit.slnf                    |  12 ---
 Src/AutoFixture.xUnit2.slnf                   |  12 ---
 Src/AutoFoq.slnf                              |  12 ---
 Src/AutoMoq.slnf                              |  12 ---
 Src/AutoNSubstitute.slnf                      |  14 ---
 Src/AutoRhinoMock.slnf                        |  12 ---
 Src/Common.FSharp.props                       |   8 --
 Src/Common.Test.xUnit.props                   |   9 --
 Src/Common.Test.xUnit3.props                  |   9 --
 Src/Idioms.FsCheck.slnf                       |  14 ---
 Src/Idioms.slnf                               |  12 ---
 .../TestTypeFoundation.csproj                 |   4 +-
 build/Build.cs                                |  12 ++-
 27 files changed, 61 insertions(+), 221 deletions(-)
 rename Src/AutoFixture.Tests.globalconfig => AutoFixture.Tests.globalconfig (100%)
 rename Src/AutoFixture.globalconfig => AutoFixture.globalconfig (100%)
 rename Src/All.sln => AutoFixture.sln (82%)
 rename Src/All.sln.DotSettings => AutoFixture.sln.DotSettings (100%)
 rename Src/AutoFixture.snk => AutoFixture.snk (100%)
 rename Src/Common.Test.props => Common.Test.props (100%)
 rename Src/Common.props => Common.props (96%)
 delete mode 100644 Src/AutoFixture.NUnit2.slnf
 delete mode 100644 Src/AutoFixture.NUnit3.slnf
 delete mode 100644 Src/AutoFixture.sln.DotSettings
 delete mode 100644 Src/AutoFixture.slnf
 delete mode 100644 Src/AutoFixture.xUnit.slnf
 delete mode 100644 Src/AutoFixture.xUnit2.slnf
 delete mode 100644 Src/AutoFoq.slnf
 delete mode 100644 Src/AutoMoq.slnf
 delete mode 100644 Src/AutoNSubstitute.slnf
 delete mode 100644 Src/AutoRhinoMock.slnf
 delete mode 100644 Src/Common.FSharp.props
 delete mode 100644 Src/Common.Test.xUnit.props
 delete mode 100644 Src/Common.Test.xUnit3.props
 delete mode 100644 Src/Idioms.FsCheck.slnf
 delete mode 100644 Src/Idioms.slnf

diff --git a/.nuke/parameters.json b/.nuke/parameters.json
index 6a951160..da152299 100644
--- a/.nuke/parameters.json
+++ b/.nuke/parameters.json
@@ -1,4 +1,4 @@
 {
   "$schema": "./build.schema.json",
-  "Solution": "Src/All.sln"
+  "Solution": "AutoFixture.sln"
 }
\ No newline at end of file
diff --git a/Src/AutoFixture.Tests.globalconfig b/AutoFixture.Tests.globalconfig
similarity index 100%
rename from Src/AutoFixture.Tests.globalconfig
rename to AutoFixture.Tests.globalconfig
diff --git a/Src/AutoFixture.globalconfig b/AutoFixture.globalconfig
similarity index 100%
rename from Src/AutoFixture.globalconfig
rename to AutoFixture.globalconfig
diff --git a/Src/All.sln b/AutoFixture.sln
similarity index 82%
rename from Src/All.sln
rename to AutoFixture.sln
index 04f3d524..82755465 100644
--- a/Src/All.sln
+++ b/AutoFixture.sln
@@ -2,95 +2,95 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio Version 17
 VisualStudioVersion = 17.4.33205.214
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture", "AutoFixture\AutoFixture.csproj", "{400AC174-9A4A-4C7D-815B-F2A21130A0D1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture", "Src\AutoFixture\AutoFixture.csproj", "{400AC174-9A4A-4C7D-815B-F2A21130A0D1}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixtureUnitTest", "AutoFixtureUnitTest\AutoFixtureUnitTest.csproj", "{01C86B79-C79F-4EC4-B32E-DA5467DBBD31}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixtureUnitTest", "Src\AutoFixtureUnitTest\AutoFixtureUnitTest.csproj", "{01C86B79-C79F-4EC4-B32E-DA5467DBBD31}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixtureDocumentationTest", "AutoFixtureDocumentationTest\AutoFixtureDocumentationTest.csproj", "{53F3A7F8-B4CA-4500-B493-FBE59D2619A7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixtureDocumentationTest", "Src\AutoFixtureDocumentationTest\AutoFixtureDocumentationTest.csproj", "{53F3A7F8-B4CA-4500-B493-FBE59D2619A7}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestTypeFoundation", "TestTypeFoundation\TestTypeFoundation.csproj", "{7FF65787-F462-4204-BB9D-60B0D1BB6CC1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestTypeFoundation", "Src\TestTypeFoundation\TestTypeFoundation.csproj", "{7FF65787-F462-4204-BB9D-60B0D1BB6CC1}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy", "AutoFakeItEasy\AutoFakeItEasy.csproj", "{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy", "Src\AutoFakeItEasy\AutoFakeItEasy.csproj", "{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasyUnitTest", "AutoFakeItEasyUnitTest\AutoFakeItEasyUnitTest.csproj", "{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasyUnitTest", "Src\AutoFakeItEasyUnitTest\AutoFakeItEasyUnitTest.csproj", "{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2", "AutoFixture.NUnit2\AutoFixture.NUnit2.csproj", "{786AFDB3-B705-49DD-A565-34F44A4A2DAD}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2", "Src\AutoFixture.NUnit2\AutoFixture.NUnit2.csproj", "{786AFDB3-B705-49DD-A565-34F44A4A2DAD}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2.UnitTest", "AutoFixture.NUnit2.UnitTest\AutoFixture.NUnit2.UnitTest.csproj", "{5CACC229-A5EF-4683-A846-D59230284D66}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2.UnitTest", "Src\AutoFixture.NUnit2.UnitTest\AutoFixture.NUnit2.UnitTest.csproj", "{5CACC229-A5EF-4683-A846-D59230284D66}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit3", "AutoFixture.NUnit3\AutoFixture.NUnit3.csproj", "{6539DC8B-7829-478E-A601-7625B0C814E1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit3", "Src\AutoFixture.NUnit3\AutoFixture.NUnit3.csproj", "{6539DC8B-7829-478E-A601-7625B0C814E1}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit3.UnitTest", "AutoFixture.NUnit3.UnitTest\AutoFixture.NUnit3.UnitTest.csproj", "{1E512431-ADC0-4218-873E-E4DF40C97268}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit3.UnitTest", "Src\AutoFixture.NUnit3.UnitTest\AutoFixture.NUnit3.UnitTest.csproj", "{1E512431-ADC0-4218-873E-E4DF40C97268}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit", "AutoFixture.xUnit\AutoFixture.xUnit.csproj", "{266B9F0E-28E5-47CA-9816-ACB6737E7E4D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit", "Src\AutoFixture.xUnit\AutoFixture.xUnit.csproj", "{266B9F0E-28E5-47CA-9816-ACB6737E7E4D}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit.UnitTest", "AutoFixture.xUnit.UnitTest\AutoFixture.xUnit.UnitTest.csproj", "{14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit.UnitTest", "Src\AutoFixture.xUnit.UnitTest\AutoFixture.xUnit.UnitTest.csproj", "{14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit2", "AutoFixture.xUnit2\AutoFixture.xUnit2.csproj", "{240605C0-84DC-4B01-A79E-1123D20BB25D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit2", "Src\AutoFixture.xUnit2\AutoFixture.xUnit2.csproj", "{240605C0-84DC-4B01-A79E-1123D20BB25D}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit2.UnitTest", "AutoFixture.xUnit2.UnitTest\AutoFixture.xUnit2.UnitTest.csproj", "{67D81234-8589-4E11-85BC-C0C49399A289}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit2.UnitTest", "Src\AutoFixture.xUnit2.UnitTest\AutoFixture.xUnit2.UnitTest.csproj", "{67D81234-8589-4E11-85BC-C0C49399A289}"
 EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AutoFoq", "AutoFoq\AutoFoq.fsproj", "{E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AutoFoq", "Src\AutoFoq\AutoFoq.fsproj", "{E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}"
 EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AutoFoqUnitTest", "AutoFoqUnitTest\AutoFoqUnitTest.fsproj", "{11544D61-62C6-4B24-BBD7-8685D7786AE9}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AutoFoqUnitTest", "Src\AutoFoqUnitTest\AutoFoqUnitTest.fsproj", "{11544D61-62C6-4B24-BBD7-8685D7786AE9}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMoq", "AutoMoq\AutoMoq.csproj", "{5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMoq", "Src\AutoMoq\AutoMoq.csproj", "{5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMoqUnitTest", "AutoMoqUnitTest\AutoMoqUnitTest.csproj", "{C50B2B1F-AF13-4DAB-8F56-788155017318}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMoqUnitTest", "Src\AutoMoqUnitTest\AutoMoqUnitTest.csproj", "{C50B2B1F-AF13-4DAB-8F56-788155017318}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute", "AutoNSubstitute\AutoNSubstitute.csproj", "{189C9474-B406-4356-A367-FBC882E9BA4B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute", "Src\AutoNSubstitute\AutoNSubstitute.csproj", "{189C9474-B406-4356-A367-FBC882E9BA4B}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstituteUnitTest", "AutoNSubstituteUnitTest\AutoNSubstituteUnitTest.csproj", "{B953A044-440C-43C0-B2CC-2585504221A9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstituteUnitTest", "Src\AutoNSubstituteUnitTest\AutoNSubstituteUnitTest.csproj", "{B953A044-440C-43C0-B2CC-2585504221A9}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRhinoMock", "AutoRhinoMock\AutoRhinoMock.csproj", "{35500763-A1C6-468A-A0F0-7AE737D5CEF0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRhinoMock", "Src\AutoRhinoMock\AutoRhinoMock.csproj", "{35500763-A1C6-468A-A0F0-7AE737D5CEF0}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRhinoMockUnitTest", "AutoRhinoMockUnitTest\AutoRhinoMockUnitTest.csproj", "{481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRhinoMockUnitTest", "Src\AutoRhinoMockUnitTest\AutoRhinoMockUnitTest.csproj", "{481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Idioms", "Idioms\Idioms.csproj", "{35DE0E35-4E3A-46D7-B175-80CA10276BE7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Idioms", "Src\Idioms\Idioms.csproj", "{35DE0E35-4E3A-46D7-B175-80CA10276BE7}"
 EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck", "Idioms.FsCheck\Idioms.FsCheck.fsproj", "{DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck", "Src\Idioms.FsCheck\Idioms.FsCheck.fsproj", "{DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}"
 EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheckUnitTest", "Idioms.FsCheckUnitTest\Idioms.FsCheckUnitTest.fsproj", "{B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheckUnitTest", "Src\Idioms.FsCheckUnitTest\Idioms.FsCheckUnitTest.fsproj", "{B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdiomsUnitTest", "IdiomsUnitTest\IdiomsUnitTest.csproj", "{730E1D38-BA80-48C7-B05C-E2BD29F38851}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdiomsUnitTest", "Src\IdiomsUnitTest\IdiomsUnitTest.csproj", "{730E1D38-BA80-48C7-B05C-E2BD29F38851}"
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F0A01F00-72C7-4CE4-8BA4-9EB178B72329}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Src\Solution Items", "{F0A01F00-72C7-4CE4-8BA4-9EB178B72329}"
 	ProjectSection(SolutionItems) = preProject
-		..\.editorconfig = ..\.editorconfig
-		..\.gitattributes = ..\.gitattributes
-		..\.gitignore = ..\.gitignore
+		.editorconfig = .editorconfig
+		.gitattributes = .gitattributes
+		.gitignore = .gitignore
 		AutoFixture.globalconfig = AutoFixture.globalconfig
 		AutoFixture.Tests.globalconfig = AutoFixture.Tests.globalconfig
-		..\CODE_OF_CONDUCT.md = ..\CODE_OF_CONDUCT.md
+		CODE_OF_CONDUCT.md = CODE_OF_CONDUCT.md
 		Common.FSharp.props = Common.FSharp.props
 		Common.props = Common.props
 		Common.Test.props = Common.Test.props
 		Common.Test.xUnit.props = Common.Test.xUnit.props
 		Common.Test.xUnit3.props = Common.Test.xUnit3.props
-		..\CONTRIBUTING.md = ..\CONTRIBUTING.md
-		..\LICENCE.txt = ..\LICENCE.txt
-		..\README.md = ..\README.md
+		CONTRIBUTING.md = CONTRIBUTING.md
+		LICENCE.txt = LICENCE.txt
+		README.md = README.md
 	EndProjectSection
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions", "AutoFixture.SeedExtensions\AutoFixture.SeedExtensions.csproj", "{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions", "Src\AutoFixture.SeedExtensions\AutoFixture.SeedExtensions.csproj", "{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "Src\AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy7UnitTest", "AutoFakeItEasy.FakeItEasy7UnitTest\AutoFakeItEasy.FakeItEasy7UnitTest.csproj", "{1B42519B-24C2-4141-83A3-AB68AB09EE28}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy7UnitTest", "Src\AutoFakeItEasy.FakeItEasy7UnitTest\AutoFakeItEasy.FakeItEasy7UnitTest.csproj", "{1B42519B-24C2-4141-83A3-AB68AB09EE28}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute5UnitTest", "AutoNSubstitute.NSubstitute5UnitTest\AutoNSubstitute.NSubstitute5UnitTest.csproj", "{DCFA3909-031E-40CB-8A1D-D3AED666C24B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute5UnitTest", "Src\AutoNSubstitute.NSubstitute5UnitTest\AutoNSubstitute.NSubstitute5UnitTest.csproj", "{DCFA3909-031E-40CB-8A1D-D3AED666C24B}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "..\build\_build.csproj", "{16506C81-BE25-498B-AEE8-E14D0E6F0108}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{16506C81-BE25-498B-AEE8-E14D0E6F0108}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy8UnitTest", "AutoFakeItEasy.FakeItEasy8UnitTest\AutoFakeItEasy.FakeItEasy8UnitTest.csproj", "{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy8UnitTest", "Src\AutoFakeItEasy.FakeItEasy8UnitTest\AutoFakeItEasy.FakeItEasy8UnitTest.csproj", "{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4", "AutoFixture.NUnit4\AutoFixture.NUnit4.csproj", "{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4", "Src\AutoFixture.NUnit4\AutoFixture.NUnit4.csproj", "{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4.UnitTest", "AutoFixture.NUnit4.UnitTest\AutoFixture.NUnit4.UnitTest.csproj", "{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4.UnitTest", "Src\AutoFixture.NUnit4.UnitTest\AutoFixture.NUnit4.UnitTest.csproj", "{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3", "AutoFixture.xUnit3\AutoFixture.xUnit3.csproj", "{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3", "Src\AutoFixture.xUnit3\AutoFixture.xUnit3.csproj", "{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3.UnitTest", "AutoFixture.xUnit3.UnitTest\AutoFixture.xUnit3.UnitTest.csproj", "{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3.UnitTest", "Src\AutoFixture.xUnit3.UnitTest\AutoFixture.xUnit3.UnitTest.csproj", "{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/Src/All.sln.DotSettings b/AutoFixture.sln.DotSettings
similarity index 100%
rename from Src/All.sln.DotSettings
rename to AutoFixture.sln.DotSettings
diff --git a/Src/AutoFixture.snk b/AutoFixture.snk
similarity index 100%
rename from Src/AutoFixture.snk
rename to AutoFixture.snk
diff --git a/Src/Common.Test.props b/Common.Test.props
similarity index 100%
rename from Src/Common.Test.props
rename to Common.Test.props
diff --git a/Src/Common.props b/Common.props
similarity index 96%
rename from Src/Common.props
rename to Common.props
index 024af5ea..e0277d1d 100644
--- a/Src/Common.props
+++ b/Common.props
@@ -40,7 +40,7 @@
   
 
   
-    
+    
   
 
   
diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
index 6048e153..e199fb8b 100644
--- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
+++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj
@@ -1,6 +1,6 @@
 
-  
-  
+  
+  
 
   
     net462
diff --git a/Src/AutoFixture.NUnit2.slnf b/Src/AutoFixture.NUnit2.slnf
deleted file mode 100644
index 21453e39..00000000
--- a/Src/AutoFixture.NUnit2.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixture.NUnit2.UnitTest\\AutoFixture.NUnit2.UnitTest.csproj",
-      "AutoFixture.NUnit2\\AutoFixture.NUnit2.csproj",
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
index 2045c229..8c4cdece 100644
--- a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
+++ b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj
@@ -1,5 +1,5 @@
 
-  
+  
 
   
     net462
diff --git a/Src/AutoFixture.NUnit3.slnf b/Src/AutoFixture.NUnit3.slnf
deleted file mode 100644
index a4f71a89..00000000
--- a/Src/AutoFixture.NUnit3.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixture.NUnit3.UnitTest\\AutoFixture.NUnit3.UnitTest.csproj",
-      "AutoFixture.NUnit3\\AutoFixture.NUnit3.csproj",
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoFixture.sln.DotSettings b/Src/AutoFixture.sln.DotSettings
deleted file mode 100644
index e76b93a7..00000000
--- a/Src/AutoFixture.sln.DotSettings
+++ /dev/null
@@ -1,5 +0,0 @@
-
-	..\All.sln.DotSettings
-	True
-	True
-	1
diff --git a/Src/AutoFixture.slnf b/Src/AutoFixture.slnf
deleted file mode 100644
index bca857e0..00000000
--- a/Src/AutoFixture.slnf
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixture\\AutoFixture.csproj",
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture.SeedExtensions\\AutoFixture.SeedExtensions.csproj",
-      "AutoFixture.SeedExtensions.UnitTest\\AutoFixture.SeedExtensions.UnitTest.csproj",
-      "AutoFixtureDocumentationTest\\AutoFixtureDocumentationTest.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoFixture.xUnit.slnf b/Src/AutoFixture.xUnit.slnf
deleted file mode 100644
index bded2bf0..00000000
--- a/Src/AutoFixture.xUnit.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixture.xUnit.UnitTest\\AutoFixture.xUnit.UnitTest.csproj",
-      "AutoFixture.xUnit\\AutoFixture.xUnit.csproj",
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoFixture.xUnit2.slnf b/Src/AutoFixture.xUnit2.slnf
deleted file mode 100644
index 10852652..00000000
--- a/Src/AutoFixture.xUnit2.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixture.xUnit2.UnitTest\\AutoFixture.xUnit2.UnitTest.csproj",
-      "AutoFixture.xUnit2\\AutoFixture.xUnit2.csproj",
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoFoq.slnf b/Src/AutoFoq.slnf
deleted file mode 100644
index 9e942d95..00000000
--- a/Src/AutoFoq.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "AutoFoqUnitTest\\AutoFoqUnitTest.fsproj",
-      "AutoFoq\\AutoFoq.fsproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoMoq.slnf b/Src/AutoMoq.slnf
deleted file mode 100644
index ca48dd31..00000000
--- a/Src/AutoMoq.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "AutoMoqUnitTest\\AutoMoqUnitTest.csproj",
-      "AutoMoq\\AutoMoq.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoNSubstitute.slnf b/Src/AutoNSubstitute.slnf
deleted file mode 100644
index 78040781..00000000
--- a/Src/AutoNSubstitute.slnf
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "AutoNSubstitute.NSubstitute4UnitTest\\AutoNSubstitute.NSubstitute4UnitTest.csproj",
-      "AutoNSubstitute.NSubstitute5UnitTest\\AutoNSubstitute.NSubstitute5UnitTest.csproj",
-      "AutoNSubstituteUnitTest\\AutoNSubstituteUnitTest.csproj",
-      "AutoNSubstitute\\AutoNSubstitute.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/AutoRhinoMock.slnf b/Src/AutoRhinoMock.slnf
deleted file mode 100644
index 147974a8..00000000
--- a/Src/AutoRhinoMock.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "AutoRhinoMockUnitTest\\AutoRhinoMockUnitTest.csproj",
-      "AutoRhinoMock\\AutoRhinoMock.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/Common.FSharp.props b/Src/Common.FSharp.props
deleted file mode 100644
index 5e04c789..00000000
--- a/Src/Common.FSharp.props
+++ /dev/null
@@ -1,8 +0,0 @@
-
-    
-        
-        true
-        6
-    
-
\ No newline at end of file
diff --git a/Src/Common.Test.xUnit.props b/Src/Common.Test.xUnit.props
deleted file mode 100644
index 08c590eb..00000000
--- a/Src/Common.Test.xUnit.props
+++ /dev/null
@@ -1,9 +0,0 @@
-
-  
-    
-    
-      all
-      runtime; build; native; contentfiles; analyzers; buildtransitive
-    
-  
-
diff --git a/Src/Common.Test.xUnit3.props b/Src/Common.Test.xUnit3.props
deleted file mode 100644
index 5963feff..00000000
--- a/Src/Common.Test.xUnit3.props
+++ /dev/null
@@ -1,9 +0,0 @@
-
-  
-    
-    
-      all
-      runtime; build; native; contentfiles; analyzers; buildtransitive
-    
-  
-
diff --git a/Src/Idioms.FsCheck.slnf b/Src/Idioms.FsCheck.slnf
deleted file mode 100644
index 6714b709..00000000
--- a/Src/Idioms.FsCheck.slnf
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "Idioms.FsCheckUnitTest\\Idioms.FsCheckUnitTest.fsproj",
-      "Idioms.FsCheck\\Idioms.FsCheck.fsproj",
-      "IdiomsUnitTest\\IdiomsUnitTest.csproj",
-      "Idioms\\Idioms.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/Idioms.slnf b/Src/Idioms.slnf
deleted file mode 100644
index 86f75c54..00000000
--- a/Src/Idioms.slnf
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "solution": {
-    "path": "All.sln",
-    "projects": [
-      "AutoFixtureUnitTest\\AutoFixtureUnitTest.csproj",
-      "AutoFixture\\AutoFixture.csproj",
-      "IdiomsUnitTest\\IdiomsUnitTest.csproj",
-      "Idioms\\Idioms.csproj",
-      "TestTypeFoundation\\TestTypeFoundation.csproj"
-    ]
-  }
-}
\ No newline at end of file
diff --git a/Src/TestTypeFoundation/TestTypeFoundation.csproj b/Src/TestTypeFoundation/TestTypeFoundation.csproj
index 51f2d6b0..94b9aa53 100644
--- a/Src/TestTypeFoundation/TestTypeFoundation.csproj
+++ b/Src/TestTypeFoundation/TestTypeFoundation.csproj
@@ -1,6 +1,6 @@
 
-  
-  
+  
+  
 
   
     net462;netstandard2.0;net5.0;net6.0
diff --git a/build/Build.cs b/build/Build.cs
index 832419c5..1ed3107b 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -146,7 +146,11 @@ partial class Build : NukeBuild
                     .SetDataCollector("XPlat Code Coverage"))
                 .CombineWith(TestProjects, (s, p) => s.SetProjectFile(p)));
 
-            CompressZip(TestResultsDirectory, TestResultsDirectory / "TestResults.zip");
+            var testArchive = TestResultsDirectory / "TestResults.zip";
+            if(testArchive.Exists())
+                DeleteFile(testArchive);
+
+            CompressZip(TestResultsDirectory, testArchive);
         });
 
     Target Cover => _ => _
@@ -163,7 +167,11 @@ partial class Build : NukeBuild
                 .SetTargetDirectory(ReportsDirectory)
                 .SetReportTypes("lcov", ReportTypes.HtmlInline));
 
-            CompressZip(ReportsDirectory, ReportsDirectory / "CoverageReport.zip");
+            var coverageArchive = ReportsDirectory / "CoverageReport.zip";
+            if(coverageArchive.Exists())
+                DeleteFile(coverageArchive);
+
+            CompressZip(ReportsDirectory, coverageArchive);
         });
 
     Target Pack => _ => _

From 56c9b3cf8ac58bbafa232cff05c5e3e4911a8b62 Mon Sep 17 00:00:00 2001
From: Sebastian Walter 
Date: Mon, 10 Mar 2025 14:58:09 +0100
Subject: [PATCH 29/30] updated readme to respect AutoFixture.XUnit3 and
 AutoFixture NUnit4 (#1493)

* updated readme to respect AutoFixture.XUnit3 and AutoFixture NUnit4
---
 README.md | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/README.md b/README.md
index 6c0e3c01..598bbf8d 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
 [![NuGet version](https://img.shields.io/nuget/v/AutoFixture?logo=nuget)](https://www.nuget.org/packages/AutoFixture)
 [![NuGet preview version](https://img.shields.io/nuget/vpre/AutoFixture?logo=nuget)](https://www.nuget.org/packages/AutoFixture)
 [![NuGet downloads](https://img.shields.io/nuget/dt/AutoFixture)](https://www.nuget.org/packages/AutoFixture)
-
+
     AutoFixture
 
 
@@ -101,23 +101,23 @@ AutoFixture offers a variety of utility packages and integrations with most of t
 
 The core packages offer the full set of AutoFixture's features without requring any testing framework or third party integration.
 
-| Product | Package | Stable | Preview | Downloads |
-|---------|---------|--------|---------|-----------|
-| The core package | [AutoFixture](http://www.nuget.org/packages/AutoFixture) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture)](https://www.nuget.org/packages/AutoFixture) | [![NuGet](https://img.shields.io/nuget/vpre/autofixture)](https://www.nuget.org/packages/AutoFixture)| ![NuGet](https://img.shields.io/nuget/dt/autofixture) |
-| Assertion idioms | [AutoFixture.Idioms](http://www.nuget.org/packages/AutoFixture.Idioms) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Idioms)](https://www.nuget.org/packages/AutoFixture.Idioms) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Idioms)](https://www.nuget.org/packages/AutoFixture.Idioms)| ![NuGet](https://img.shields.io/nuget/dt/autofixture.idioms) |
-| Seed extensions  | [AutoFixture.SeedExtensions](http://www.nuget.org/packages/AutoFixture.SeedExtensions) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.SeedExtensions)](https://www.nuget.org/packages/AutoFixture.SeedExtensions) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.SeedExtensions)](https://www.nuget.org/packages/AutoFixture.SeedExtensions)| ![NuGet](https://img.shields.io/nuget/dt/autofixture.seedextensions) |
+| Product          | Package                                                                                | Stable                                                                                                                           | Preview                                                                                                                             | Downloads                                                            |
+| ---------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
+| The core package | [AutoFixture](http://www.nuget.org/packages/AutoFixture)                               | [![NuGet](https://img.shields.io/nuget/v/AutoFixture)](https://www.nuget.org/packages/AutoFixture)                               | [![NuGet](https://img.shields.io/nuget/vpre/autofixture)](https://www.nuget.org/packages/AutoFixture)                               | ![NuGet](https://img.shields.io/nuget/dt/autofixture)                |
+| Assertion idioms | [AutoFixture.Idioms](http://www.nuget.org/packages/AutoFixture.Idioms)                 | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Idioms)](https://www.nuget.org/packages/AutoFixture.Idioms)                 | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Idioms)](https://www.nuget.org/packages/AutoFixture.Idioms)                 | ![NuGet](https://img.shields.io/nuget/dt/autofixture.idioms)         |
+| Seed extensions  | [AutoFixture.SeedExtensions](http://www.nuget.org/packages/AutoFixture.SeedExtensions) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.SeedExtensions)](https://www.nuget.org/packages/AutoFixture.SeedExtensions) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.SeedExtensions)](https://www.nuget.org/packages/AutoFixture.SeedExtensions) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.seedextensions) |
 
 ### Mocking libraries
 
 AutoFixture offers integations with most major .NET mocking libraries.
These integrations enable such features as configuring mocks, auto-injecting mocks, etc. -| Product | Package | Stable | Preview | Downloads | -|---------|---------|--------|---------|-----------| -| Moq | [AutoFixture.AutoMoq](http://www.nuget.org/packages/AutoFixture.AutoMoq) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoMoq)](https://www.nuget.org/packages/AutoFixture.AutoMoq) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoMoq)](https://www.nuget.org/packages/AutoFixture.AutoMoq)| ![NuGet](https://img.shields.io/nuget/dt/autofixture.automoq) | -| NSubstitute | [AutoFixture.AutoNSubstitute](http://www.nuget.org/packages/AutoFixture.AutoNSubstitute) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoNSubstitute)](https://www.nuget.org/packages/AutoFixture.AutoNSubstitute) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoNSubstitute)](https://www.nuget.org/packages/AutoFixture.AutoNSubstitute)| ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoNSubstitute) | -| FakeItEasy | [AutoFixture.AutoFakeItEasy](http://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoFakeItEasy)](https://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoFakeItEasy)](https://www.nuget.org/packages/AutoFixture.AutoFakeItEasy)| ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoFakeItEasy) | -| Rhino Mocks | [AutoFixture.AutoRhinoMocks](http://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoRhinoMocks)](https://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoRhinoMocks)](https://www.nuget.org/packages/AutoFixture.AutoRhinoMocks)| ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoRhinoMocks) | +| Product | Package | Stable | Preview | Downloads | +| ----------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | +| Moq | [AutoFixture.AutoMoq](http://www.nuget.org/packages/AutoFixture.AutoMoq) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoMoq)](https://www.nuget.org/packages/AutoFixture.AutoMoq) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoMoq)](https://www.nuget.org/packages/AutoFixture.AutoMoq) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.automoq) | +| NSubstitute | [AutoFixture.AutoNSubstitute](http://www.nuget.org/packages/AutoFixture.AutoNSubstitute) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoNSubstitute)](https://www.nuget.org/packages/AutoFixture.AutoNSubstitute) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoNSubstitute)](https://www.nuget.org/packages/AutoFixture.AutoNSubstitute) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoNSubstitute) | +| FakeItEasy | [AutoFixture.AutoFakeItEasy](http://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoFakeItEasy)](https://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoFakeItEasy)](https://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoFakeItEasy) | +| Rhino Mocks | [AutoFixture.AutoRhinoMocks](http://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoRhinoMocks)](https://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoRhinoMocks)](https://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoRhinoMocks) | > **NOTE:** > Since AutoFixture tries maintain compatibility with a large number of package versions, the packages bundled with AutoFixture might not contain the latest features of your mocking library.
@@ -128,12 +128,14 @@ These integrations enable such features as configuring mocks, auto-injecting moc AutoFixture offers integrations with most major .NET testing frameworks.
These integrations enable auto-generation of test cases, combining auto-generated data with inline arguments, etc. -| Product | Package | Stable | Preview | Downloads | -|----------|---------|--------|---------|-----------| -| xUnit v2 | [AutoFixture.Xunit2](http://www.nuget.org/packages/AutoFixture.Xunit2) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Xunit2)](https://www.nuget.org/packages/AutoFixture.Xunit2) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Xunit2)](https://www.nuget.org/packages/AutoFixture.Xunit2) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.xUnit2) | -| NUnit v3 | [AutoFixture.NUnit3](http://www.nuget.org/packages/AutoFixture.NUnit3) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.NUnit3)](https://www.nuget.org/packages/AutoFixture.NUnit3) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.NUnit3)](https://www.nuget.org/packages/AutoFixture.NUnit3) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.NUnit3) | -| xUnit v1 | [AutoFixture.Xunit](http://www.nuget.org/packages/AutoFixture.Xunit) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Xunit)](https://www.nuget.org/packages/AutoFixture.Xunit) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Xunit)](https://www.nuget.org/packages/AutoFixture.Xunit) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.XUnit) | -| NUnit v2 | [AutoFixture.NUnit2](http://www.nuget.org/packages/AutoFixture.NUnit2) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.NUnit2)](https://www.nuget.org/packages/AutoFixture.NUnit2) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.NUnit2)](https://www.nuget.org/packages/AutoFixture.NUnit2) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.NUnit2) | +| Product | Package | Stable | Preview | Downloads | +| -------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | +| xUnit v3 | [AutoFixture.Xunit3](http://www.nuget.org/packages/AutoFixture.Xunit3) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Xunit3)](https://www.nuget.org/packages/AutoFixture.Xunit3) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Xunit3)](https://www.nuget.org/packages/AutoFixture.Xunit3) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.xUnit3) | +| xUnit v2 | [AutoFixture.Xunit2](http://www.nuget.org/packages/AutoFixture.Xunit2) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Xunit2)](https://www.nuget.org/packages/AutoFixture.Xunit2) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Xunit2)](https://www.nuget.org/packages/AutoFixture.Xunit2) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.xUnit2) | +| xUnit v1 | [AutoFixture.Xunit](http://www.nuget.org/packages/AutoFixture.Xunit) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.Xunit)](https://www.nuget.org/packages/AutoFixture.Xunit) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.Xunit)](https://www.nuget.org/packages/AutoFixture.Xunit) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.XUnit) | +| NUnit v4 | [AutoFixture.NUnit4](http://www.nuget.org/packages/AutoFixture.NUnit4) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.NUnit4)](https://www.nuget.org/packages/AutoFixture.NUnit4) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.NUnit4)](https://www.nuget.org/packages/AutoFixture.NUnit4) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.NUnit4) | +| NUnit v3 | [AutoFixture.NUnit3](http://www.nuget.org/packages/AutoFixture.NUnit3) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.NUnit3)](https://www.nuget.org/packages/AutoFixture.NUnit3) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.NUnit3)](https://www.nuget.org/packages/AutoFixture.NUnit3) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.NUnit3) | +| NUnit v2 | [AutoFixture.NUnit2](http://www.nuget.org/packages/AutoFixture.NUnit2) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.NUnit2)](https://www.nuget.org/packages/AutoFixture.NUnit2) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.NUnit2)](https://www.nuget.org/packages/AutoFixture.NUnit2) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.NUnit2) | | Foq | [AutoFixture.AutoFoq](http://www.nuget.org/packages/AutoFixture.AutoFoq) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoFoq)](https://www.nuget.org/packages/AutoFixture.AutoFoq) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoFoq)](https://www.nuget.org/packages/AutoFixture.AutoFoq) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoFoq) | You can check the compatibility with your target framework version on the [wiki](https://github.com/AutoFixture/AutoFixture/wiki#net-platforms-compatibility-table) or on the [NuGet](https://www.nuget.org/profiles/AutoFixture) website. From a3f59d4eeecc6e8d751d0573cf12001980d36bd9 Mon Sep 17 00:00:00 2001 From: Andrei Ivascu <7030530+aivascu@users.noreply.github.com> Date: Tue, 8 Apr 2025 23:11:47 +0300 Subject: [PATCH 30/30] Updated projects after migration --- .github/workflows/continuous.yml | 1 - .github/workflows/release.yml | 1 - AutoFixture.sln | 261 +----------------- Common.props | 4 +- README.md | 181 ++++++------ .../AutoFixture.NUnit2.UnitTest.csproj | 4 +- .../AutoFixture.NUnit2.csproj | 11 +- Src/AutoFixture.NUnit2/Readme.txt | 38 --- .../TestTypeFoundation.csproj | 2 +- build/_build.csproj | 2 +- 10 files changed, 96 insertions(+), 409 deletions(-) delete mode 100644 Src/AutoFixture.NUnit2/Readme.txt diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml index 85e5db60..29e74899 100644 --- a/.github/workflows/continuous.yml +++ b/.github/workflows/continuous.yml @@ -33,7 +33,6 @@ jobs: - uses: actions/setup-dotnet@v4 with: dotnet-version: | - 5.0.x 6.0.x - name: Cache .nuke/temp, ~/.nuget/packages uses: actions/cache@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a5e2408e..42b5db08 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,6 @@ jobs: - uses: actions/setup-dotnet@v4 with: dotnet-version: | - 5.0.x 6.0.x - name: Cache .nuke/temp, ~/.nuget/packages uses: actions/cache@v4 diff --git a/AutoFixture.sln b/AutoFixture.sln index 82755465..df254763 100644 --- a/AutoFixture.sln +++ b/AutoFixture.sln @@ -2,59 +2,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.4.33205.214 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture", "Src\AutoFixture\AutoFixture.csproj", "{400AC174-9A4A-4C7D-815B-F2A21130A0D1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixtureUnitTest", "Src\AutoFixtureUnitTest\AutoFixtureUnitTest.csproj", "{01C86B79-C79F-4EC4-B32E-DA5467DBBD31}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixtureDocumentationTest", "Src\AutoFixtureDocumentationTest\AutoFixtureDocumentationTest.csproj", "{53F3A7F8-B4CA-4500-B493-FBE59D2619A7}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestTypeFoundation", "Src\TestTypeFoundation\TestTypeFoundation.csproj", "{7FF65787-F462-4204-BB9D-60B0D1BB6CC1}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy", "Src\AutoFakeItEasy\AutoFakeItEasy.csproj", "{B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasyUnitTest", "Src\AutoFakeItEasyUnitTest\AutoFakeItEasyUnitTest.csproj", "{E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2", "Src\AutoFixture.NUnit2\AutoFixture.NUnit2.csproj", "{786AFDB3-B705-49DD-A565-34F44A4A2DAD}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit2.UnitTest", "Src\AutoFixture.NUnit2.UnitTest\AutoFixture.NUnit2.UnitTest.csproj", "{5CACC229-A5EF-4683-A846-D59230284D66}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit3", "Src\AutoFixture.NUnit3\AutoFixture.NUnit3.csproj", "{6539DC8B-7829-478E-A601-7625B0C814E1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit3.UnitTest", "Src\AutoFixture.NUnit3.UnitTest\AutoFixture.NUnit3.UnitTest.csproj", "{1E512431-ADC0-4218-873E-E4DF40C97268}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit", "Src\AutoFixture.xUnit\AutoFixture.xUnit.csproj", "{266B9F0E-28E5-47CA-9816-ACB6737E7E4D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit.UnitTest", "Src\AutoFixture.xUnit.UnitTest\AutoFixture.xUnit.UnitTest.csproj", "{14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit2", "Src\AutoFixture.xUnit2\AutoFixture.xUnit2.csproj", "{240605C0-84DC-4B01-A79E-1123D20BB25D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit2.UnitTest", "Src\AutoFixture.xUnit2.UnitTest\AutoFixture.xUnit2.UnitTest.csproj", "{67D81234-8589-4E11-85BC-C0C49399A289}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AutoFoq", "Src\AutoFoq\AutoFoq.fsproj", "{E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "AutoFoqUnitTest", "Src\AutoFoqUnitTest\AutoFoqUnitTest.fsproj", "{11544D61-62C6-4B24-BBD7-8685D7786AE9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMoq", "Src\AutoMoq\AutoMoq.csproj", "{5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMoqUnitTest", "Src\AutoMoqUnitTest\AutoMoqUnitTest.csproj", "{C50B2B1F-AF13-4DAB-8F56-788155017318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute", "Src\AutoNSubstitute\AutoNSubstitute.csproj", "{189C9474-B406-4356-A367-FBC882E9BA4B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstituteUnitTest", "Src\AutoNSubstituteUnitTest\AutoNSubstituteUnitTest.csproj", "{B953A044-440C-43C0-B2CC-2585504221A9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRhinoMock", "Src\AutoRhinoMock\AutoRhinoMock.csproj", "{35500763-A1C6-468A-A0F0-7AE737D5CEF0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRhinoMockUnitTest", "Src\AutoRhinoMockUnitTest\AutoRhinoMockUnitTest.csproj", "{481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Idioms", "Src\Idioms\Idioms.csproj", "{35DE0E35-4E3A-46D7-B175-80CA10276BE7}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheck", "Src\Idioms.FsCheck\Idioms.FsCheck.fsproj", "{DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Idioms.FsCheckUnitTest", "Src\Idioms.FsCheckUnitTest\Idioms.FsCheckUnitTest.fsproj", "{B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdiomsUnitTest", "Src\IdiomsUnitTest\IdiomsUnitTest.csproj", "{730E1D38-BA80-48C7-B05C-E2BD29F38851}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Src\Solution Items", "{F0A01F00-72C7-4CE4-8BA4-9EB178B72329}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F0A01F00-72C7-4CE4-8BA4-9EB178B72329}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .gitattributes = .gitattributes @@ -62,36 +16,15 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Src\Solut AutoFixture.globalconfig = AutoFixture.globalconfig AutoFixture.Tests.globalconfig = AutoFixture.Tests.globalconfig CODE_OF_CONDUCT.md = CODE_OF_CONDUCT.md - Common.FSharp.props = Common.FSharp.props Common.props = Common.props Common.Test.props = Common.Test.props - Common.Test.xUnit.props = Common.Test.xUnit.props - Common.Test.xUnit3.props = Common.Test.xUnit3.props CONTRIBUTING.md = CONTRIBUTING.md LICENCE.txt = LICENCE.txt README.md = README.md EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions", "Src\AutoFixture.SeedExtensions\AutoFixture.SeedExtensions.csproj", "{F1FE2173-62BD-4D3A-92C1-A3ECB2117252}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.SeedExtensions.UnitTest", "Src\AutoFixture.SeedExtensions.UnitTest\AutoFixture.SeedExtensions.UnitTest.csproj", "{0F3C467A-ED89-4348-9210-FC2D358E20C5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy7UnitTest", "Src\AutoFakeItEasy.FakeItEasy7UnitTest\AutoFakeItEasy.FakeItEasy7UnitTest.csproj", "{1B42519B-24C2-4141-83A3-AB68AB09EE28}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoNSubstitute.NSubstitute5UnitTest", "Src\AutoNSubstitute.NSubstitute5UnitTest\AutoNSubstitute.NSubstitute5UnitTest.csproj", "{DCFA3909-031E-40CB-8A1D-D3AED666C24B}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{16506C81-BE25-498B-AEE8-E14D0E6F0108}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFakeItEasy.FakeItEasy8UnitTest", "Src\AutoFakeItEasy.FakeItEasy8UnitTest\AutoFakeItEasy.FakeItEasy8UnitTest.csproj", "{1C952BA6-B44F-4C05-B856-7AE1CFCB3452}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4", "Src\AutoFixture.NUnit4\AutoFixture.NUnit4.csproj", "{81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.NUnit4.UnitTest", "Src\AutoFixture.NUnit4.UnitTest\AutoFixture.NUnit4.UnitTest.csproj", "{E783AAF8-6725-4FB0-B0DE-26C9433E4E35}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3", "Src\AutoFixture.xUnit3\AutoFixture.xUnit3.csproj", "{28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoFixture.xUnit3.UnitTest", "Src\AutoFixture.xUnit3.UnitTest\AutoFixture.xUnit3.UnitTest.csproj", "{4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -99,42 +32,12 @@ Global Verify|Any CPU = Verify|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400AC174-9A4A-4C7D-815B-F2A21130A0D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400AC174-9A4A-4C7D-815B-F2A21130A0D1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400AC174-9A4A-4C7D-815B-F2A21130A0D1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400AC174-9A4A-4C7D-815B-F2A21130A0D1}.Release|Any CPU.Build.0 = Release|Any CPU - {400AC174-9A4A-4C7D-815B-F2A21130A0D1}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {400AC174-9A4A-4C7D-815B-F2A21130A0D1}.Verify|Any CPU.Build.0 = Verify|Any CPU - {01C86B79-C79F-4EC4-B32E-DA5467DBBD31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {01C86B79-C79F-4EC4-B32E-DA5467DBBD31}.Debug|Any CPU.Build.0 = Debug|Any CPU - {01C86B79-C79F-4EC4-B32E-DA5467DBBD31}.Release|Any CPU.ActiveCfg = Release|Any CPU - {01C86B79-C79F-4EC4-B32E-DA5467DBBD31}.Release|Any CPU.Build.0 = Release|Any CPU - {01C86B79-C79F-4EC4-B32E-DA5467DBBD31}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {01C86B79-C79F-4EC4-B32E-DA5467DBBD31}.Verify|Any CPU.Build.0 = Verify|Any CPU - {53F3A7F8-B4CA-4500-B493-FBE59D2619A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {53F3A7F8-B4CA-4500-B493-FBE59D2619A7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {53F3A7F8-B4CA-4500-B493-FBE59D2619A7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {53F3A7F8-B4CA-4500-B493-FBE59D2619A7}.Release|Any CPU.Build.0 = Release|Any CPU - {53F3A7F8-B4CA-4500-B493-FBE59D2619A7}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {53F3A7F8-B4CA-4500-B493-FBE59D2619A7}.Verify|Any CPU.Build.0 = Verify|Any CPU {7FF65787-F462-4204-BB9D-60B0D1BB6CC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7FF65787-F462-4204-BB9D-60B0D1BB6CC1}.Debug|Any CPU.Build.0 = Debug|Any CPU {7FF65787-F462-4204-BB9D-60B0D1BB6CC1}.Release|Any CPU.ActiveCfg = Release|Any CPU {7FF65787-F462-4204-BB9D-60B0D1BB6CC1}.Release|Any CPU.Build.0 = Release|Any CPU {7FF65787-F462-4204-BB9D-60B0D1BB6CC1}.Verify|Any CPU.ActiveCfg = Verify|Any CPU {7FF65787-F462-4204-BB9D-60B0D1BB6CC1}.Verify|Any CPU.Build.0 = Verify|Any CPU - {B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Release|Any CPU.Build.0 = Release|Any CPU - {B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {B6B79E32-EE90-4AE1-BD32-F50B5A0C2B40}.Verify|Any CPU.Build.0 = Verify|Any CPU - {E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Release|Any CPU.Build.0 = Release|Any CPU - {E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {E5CAB3E1-10DD-4081-A5FF-ED8A11F3C2CB}.Verify|Any CPU.Build.0 = Verify|Any CPU {786AFDB3-B705-49DD-A565-34F44A4A2DAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {786AFDB3-B705-49DD-A565-34F44A4A2DAD}.Debug|Any CPU.Build.0 = Debug|Any CPU {786AFDB3-B705-49DD-A565-34F44A4A2DAD}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -147,171 +50,9 @@ Global {5CACC229-A5EF-4683-A846-D59230284D66}.Release|Any CPU.Build.0 = Release|Any CPU {5CACC229-A5EF-4683-A846-D59230284D66}.Verify|Any CPU.ActiveCfg = Verify|Any CPU {5CACC229-A5EF-4683-A846-D59230284D66}.Verify|Any CPU.Build.0 = Verify|Any CPU - {6539DC8B-7829-478E-A601-7625B0C814E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6539DC8B-7829-478E-A601-7625B0C814E1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6539DC8B-7829-478E-A601-7625B0C814E1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6539DC8B-7829-478E-A601-7625B0C814E1}.Release|Any CPU.Build.0 = Release|Any CPU - {6539DC8B-7829-478E-A601-7625B0C814E1}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {6539DC8B-7829-478E-A601-7625B0C814E1}.Verify|Any CPU.Build.0 = Verify|Any CPU - {1E512431-ADC0-4218-873E-E4DF40C97268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1E512431-ADC0-4218-873E-E4DF40C97268}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1E512431-ADC0-4218-873E-E4DF40C97268}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1E512431-ADC0-4218-873E-E4DF40C97268}.Release|Any CPU.Build.0 = Release|Any CPU - {1E512431-ADC0-4218-873E-E4DF40C97268}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {1E512431-ADC0-4218-873E-E4DF40C97268}.Verify|Any CPU.Build.0 = Verify|Any CPU - {266B9F0E-28E5-47CA-9816-ACB6737E7E4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {266B9F0E-28E5-47CA-9816-ACB6737E7E4D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {266B9F0E-28E5-47CA-9816-ACB6737E7E4D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {266B9F0E-28E5-47CA-9816-ACB6737E7E4D}.Release|Any CPU.Build.0 = Release|Any CPU - {266B9F0E-28E5-47CA-9816-ACB6737E7E4D}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {266B9F0E-28E5-47CA-9816-ACB6737E7E4D}.Verify|Any CPU.Build.0 = Verify|Any CPU - {14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}.Release|Any CPU.Build.0 = Release|Any CPU - {14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {14FADDF9-F0D2-4BD4-B285-FDDAB5762CC4}.Verify|Any CPU.Build.0 = Verify|Any CPU - {240605C0-84DC-4B01-A79E-1123D20BB25D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {240605C0-84DC-4B01-A79E-1123D20BB25D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {240605C0-84DC-4B01-A79E-1123D20BB25D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {240605C0-84DC-4B01-A79E-1123D20BB25D}.Release|Any CPU.Build.0 = Release|Any CPU - {240605C0-84DC-4B01-A79E-1123D20BB25D}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {240605C0-84DC-4B01-A79E-1123D20BB25D}.Verify|Any CPU.Build.0 = Verify|Any CPU - {67D81234-8589-4E11-85BC-C0C49399A289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {67D81234-8589-4E11-85BC-C0C49399A289}.Debug|Any CPU.Build.0 = Debug|Any CPU - {67D81234-8589-4E11-85BC-C0C49399A289}.Release|Any CPU.ActiveCfg = Release|Any CPU - {67D81234-8589-4E11-85BC-C0C49399A289}.Release|Any CPU.Build.0 = Release|Any CPU - {67D81234-8589-4E11-85BC-C0C49399A289}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {67D81234-8589-4E11-85BC-C0C49399A289}.Verify|Any CPU.Build.0 = Verify|Any CPU - {E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}.Release|Any CPU.Build.0 = Release|Any CPU - {E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {E2D94FAA-A782-4D17-89A0-0F4B5D3BB021}.Verify|Any CPU.Build.0 = Verify|Any CPU - {11544D61-62C6-4B24-BBD7-8685D7786AE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {11544D61-62C6-4B24-BBD7-8685D7786AE9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11544D61-62C6-4B24-BBD7-8685D7786AE9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {11544D61-62C6-4B24-BBD7-8685D7786AE9}.Release|Any CPU.Build.0 = Release|Any CPU - {11544D61-62C6-4B24-BBD7-8685D7786AE9}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {11544D61-62C6-4B24-BBD7-8685D7786AE9}.Verify|Any CPU.Build.0 = Verify|Any CPU - {5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}.Release|Any CPU.Build.0 = Release|Any CPU - {5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {5DCEC2BD-40A3-458A-BEBC-C2FC0D4D451B}.Verify|Any CPU.Build.0 = Verify|Any CPU - {C50B2B1F-AF13-4DAB-8F56-788155017318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C50B2B1F-AF13-4DAB-8F56-788155017318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C50B2B1F-AF13-4DAB-8F56-788155017318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C50B2B1F-AF13-4DAB-8F56-788155017318}.Release|Any CPU.Build.0 = Release|Any CPU - {C50B2B1F-AF13-4DAB-8F56-788155017318}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {C50B2B1F-AF13-4DAB-8F56-788155017318}.Verify|Any CPU.Build.0 = Verify|Any CPU - {189C9474-B406-4356-A367-FBC882E9BA4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {189C9474-B406-4356-A367-FBC882E9BA4B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {189C9474-B406-4356-A367-FBC882E9BA4B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {189C9474-B406-4356-A367-FBC882E9BA4B}.Release|Any CPU.Build.0 = Release|Any CPU - {189C9474-B406-4356-A367-FBC882E9BA4B}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {189C9474-B406-4356-A367-FBC882E9BA4B}.Verify|Any CPU.Build.0 = Verify|Any CPU - {B953A044-440C-43C0-B2CC-2585504221A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B953A044-440C-43C0-B2CC-2585504221A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B953A044-440C-43C0-B2CC-2585504221A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B953A044-440C-43C0-B2CC-2585504221A9}.Release|Any CPU.Build.0 = Release|Any CPU - {B953A044-440C-43C0-B2CC-2585504221A9}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {B953A044-440C-43C0-B2CC-2585504221A9}.Verify|Any CPU.Build.0 = Verify|Any CPU - {35500763-A1C6-468A-A0F0-7AE737D5CEF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35500763-A1C6-468A-A0F0-7AE737D5CEF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35500763-A1C6-468A-A0F0-7AE737D5CEF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35500763-A1C6-468A-A0F0-7AE737D5CEF0}.Release|Any CPU.Build.0 = Release|Any CPU - {35500763-A1C6-468A-A0F0-7AE737D5CEF0}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {35500763-A1C6-468A-A0F0-7AE737D5CEF0}.Verify|Any CPU.Build.0 = Verify|Any CPU - {481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}.Debug|Any CPU.Build.0 = Debug|Any CPU - {481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}.Release|Any CPU.ActiveCfg = Release|Any CPU - {481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}.Release|Any CPU.Build.0 = Release|Any CPU - {481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {481F0C9E-DA19-4DBD-9D25-EBA1030AAA03}.Verify|Any CPU.Build.0 = Verify|Any CPU - {35DE0E35-4E3A-46D7-B175-80CA10276BE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35DE0E35-4E3A-46D7-B175-80CA10276BE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35DE0E35-4E3A-46D7-B175-80CA10276BE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35DE0E35-4E3A-46D7-B175-80CA10276BE7}.Release|Any CPU.Build.0 = Release|Any CPU - {35DE0E35-4E3A-46D7-B175-80CA10276BE7}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {35DE0E35-4E3A-46D7-B175-80CA10276BE7}.Verify|Any CPU.Build.0 = Verify|Any CPU - {DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}.Release|Any CPU.Build.0 = Release|Any CPU - {DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {DCAAF1DB-BEA0-4A6F-8F67-A35A9891A7A9}.Verify|Any CPU.Build.0 = Verify|Any CPU - {B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}.Release|Any CPU.Build.0 = Release|Any CPU - {B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {B3CE0FC0-BB92-47F3-B43E-92B87F7956B8}.Verify|Any CPU.Build.0 = Verify|Any CPU - {730E1D38-BA80-48C7-B05C-E2BD29F38851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {730E1D38-BA80-48C7-B05C-E2BD29F38851}.Debug|Any CPU.Build.0 = Debug|Any CPU - {730E1D38-BA80-48C7-B05C-E2BD29F38851}.Release|Any CPU.ActiveCfg = Release|Any CPU - {730E1D38-BA80-48C7-B05C-E2BD29F38851}.Release|Any CPU.Build.0 = Release|Any CPU - {730E1D38-BA80-48C7-B05C-E2BD29F38851}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {730E1D38-BA80-48C7-B05C-E2BD29F38851}.Verify|Any CPU.Build.0 = Verify|Any CPU - {F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Release|Any CPU.Build.0 = Release|Any CPU - {F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {F1FE2173-62BD-4D3A-92C1-A3ECB2117252}.Verify|Any CPU.Build.0 = Verify|Any CPU - {0F3C467A-ED89-4348-9210-FC2D358E20C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F3C467A-ED89-4348-9210-FC2D358E20C5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F3C467A-ED89-4348-9210-FC2D358E20C5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F3C467A-ED89-4348-9210-FC2D358E20C5}.Release|Any CPU.Build.0 = Release|Any CPU - {0F3C467A-ED89-4348-9210-FC2D358E20C5}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {0F3C467A-ED89-4348-9210-FC2D358E20C5}.Verify|Any CPU.Build.0 = Verify|Any CPU - {1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B42519B-24C2-4141-83A3-AB68AB09EE28}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B42519B-24C2-4141-83A3-AB68AB09EE28}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B42519B-24C2-4141-83A3-AB68AB09EE28}.Release|Any CPU.Build.0 = Release|Any CPU - {1B42519B-24C2-4141-83A3-AB68AB09EE28}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {1B42519B-24C2-4141-83A3-AB68AB09EE28}.Verify|Any CPU.Build.0 = Verify|Any CPU - {DCFA3909-031E-40CB-8A1D-D3AED666C24B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DCFA3909-031E-40CB-8A1D-D3AED666C24B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DCFA3909-031E-40CB-8A1D-D3AED666C24B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DCFA3909-031E-40CB-8A1D-D3AED666C24B}.Release|Any CPU.Build.0 = Release|Any CPU - {DCFA3909-031E-40CB-8A1D-D3AED666C24B}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {DCFA3909-031E-40CB-8A1D-D3AED666C24B}.Verify|Any CPU.Build.0 = Verify|Any CPU {16506C81-BE25-498B-AEE8-E14D0E6F0108}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {16506C81-BE25-498B-AEE8-E14D0E6F0108}.Release|Any CPU.ActiveCfg = Release|Any CPU {16506C81-BE25-498B-AEE8-E14D0E6F0108}.Verify|Any CPU.ActiveCfg = Debug|Any CPU - {1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Release|Any CPU.Build.0 = Release|Any CPU - {1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {1C952BA6-B44F-4C05-B856-7AE1CFCB3452}.Verify|Any CPU.Build.0 = Verify|Any CPU - {81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Release|Any CPU.Build.0 = Release|Any CPU - {81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {81A67B0F-DD4F-4A6A-8E88-C842051DD7C9}.Verify|Any CPU.Build.0 = Verify|Any CPU - {E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Release|Any CPU.Build.0 = Release|Any CPU - {E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {E783AAF8-6725-4FB0-B0DE-26C9433E4E35}.Verify|Any CPU.Build.0 = Verify|Any CPU - {28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Release|Any CPU.Build.0 = Release|Any CPU - {28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {28B9B9C3-1B0E-4FB5-8FEF-34B13003BC29}.Verify|Any CPU.Build.0 = Verify|Any CPU - {4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Release|Any CPU.Build.0 = Release|Any CPU - {4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Verify|Any CPU.ActiveCfg = Verify|Any CPU - {4ECEA54E-DBB7-4221-A388-AD6BDA8A2101}.Verify|Any CPU.Build.0 = Verify|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Common.props b/Common.props index e0277d1d..503c6366 100644 --- a/Common.props +++ b/Common.props @@ -26,11 +26,12 @@ AutoFixture Contributors - https://github.com/AutoFixture/AutoFixture + https://github.com/AutoFixture/AutoFixture.NUnit2 true MIT https://raw.githubusercontent.com/AutoFixture/AutoFixture/79c882c3f4af3cf52ad43e5c95851f25d217ac17/AutoFixtureLogo200x200.png icon.png + README.md $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb true
@@ -40,6 +41,7 @@
+ diff --git a/README.md b/README.md index a0899293..35e3d426 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,123 @@ -# AutoFixture +# AutoFixture.NUnit2 -[![License](https://img.shields.io/badge/license-MIT-green)](https://raw.githubusercontent.com/AutoFixture/AutoFixture/master/LICENCE.txt) -[![release](https://github.com/AutoFixture/AutoFixture/actions/workflows/release.yml/badge.svg)](https://github.com/AutoFixture/AutoFixture/actions/workflows/release.yml) -[![NuGet version](https://img.shields.io/nuget/v/AutoFixture?logo=nuget)](https://www.nuget.org/packages/AutoFixture) -[![NuGet preview version](https://img.shields.io/nuget/vpre/AutoFixture?logo=nuget)](https://www.nuget.org/packages/AutoFixture) -[![NuGet downloads](https://img.shields.io/nuget/dt/AutoFixture)](https://www.nuget.org/packages/AutoFixture) - - AutoFixture - +[![License](https://img.shields.io/badge/license-MIT-green)](https://raw.githubusercontent.com/AutoFixture/AutoFixture.NUnit2/master/LICENCE.txt) +[![NuGet version](https://img.shields.io/nuget/v/AutoFixture.NUnit2?logo=nuget)](https://www.nuget.org/packages/AutoFixture.NUnit2) +[![NuGet preview version](https://img.shields.io/nuget/vpre/AutoFixture.NUnit2?logo=nuget)](https://www.nuget.org/packages/AutoFixture.NUnit2) +[![NuGet downloads](https://img.shields.io/nuget/dt/AutoFixture.NUnit2)](https://www.nuget.org/packages/AutoFixture.NUnit2) -Write maintainable unit tests, faster. +[AutoFixture.NUnit2](https://github.com/AutoFixture/AutoFixture.NUnit2) is a .NET library that integrates [AutoFixture](https://github.com/AutoFixture/AutoFixture) with NUnit 2.x, allowing you to effortlessly generate test data for your unit tests. +By automatically populating your test parameters, it helps you write cleaner, more maintainable tests without having to manually construct test objects. -AutoFixture makes it easier for developers to do Test-Driven Development by automating non-relevant Test Fixture Setup, allowing the Test Developer to focus on the essentials of each test case. - -Check the [testimonials](https://github.com/AutoFixture/AutoFixture/wiki/Who-uses-AutoFixture) to see what other people have to say about AutoFixture. +> [!WARNING] +> While this package is still being developed, the NUnit 2 package is deprecated.
+> This package is intended for legacy projects that are still using NUnit 2.x.
+> Use at your own risk. ## Table of Contents -- [Overview](#overview) -- [Downloads](#downloads) -- [Documentation](#documentation) -- [Feedback & Questions](#feedback--questions) +- [Installation](#installation) +- [Getting Started](#getting-started) +- [Integrations](#integrations) - [License](#license) -## Overview - -(Jump straight to the [CheatSheet](https://github.com/AutoFixture/AutoFixture/wiki/Cheat-Sheet) if you just want to see some code samples right away.) - -AutoFixture is designed to make Test-Driven Development more productive and unit tests more refactoring-safe. It does so by removing the need for hand-coding anonymous variables as part of a test's Fixture Setup phase. Among other features, it offers a generic implementation of the [Test Data Builder](http://www.natpryce.com/articles/000714.html) pattern. +## Installation -When writing unit tests, you typically need to create some objects that represent the initial state of the test. Often, an API will force you to specify much more data than you really care about, so you frequently end up creating objects that has no influence on the test, simply to make the code compile. +AutoFixture packages are distributed via NuGet.
+To install the packages you can use the integrated package manager of your IDE, the .NET CLI, or reference the package directly in your project file. -AutoFixture can help by creating such [Anonymous Variables](https://docs.microsoft.com/en-us/archive/blogs/ploeh/anonymous-variables) for you. Here's a simple example: +```cmd +dotnet add package AutoFixture.NUnit2 --version x.x.x +``` -```c# -[Fact] -public void IntroductoryTest() -{ - // Arrange - Fixture fixture = new Fixture(); - - int expectedNumber = fixture.Create(); - MyClass sut = fixture.Create(); - // Act - int result = sut.Echo(expectedNumber); - // Assert - Assert.Equal(expectedNumber, result); -} +```xml + ``` -This example illustrates the basic principle of AutoFixture: It can create values of virtually any type without the need for you to explicitly define which values should be used. The number *expectedNumber* is created by a call to `Create` - this will create a 'nice', regular integer value, saving you the effort of explicitly coming up with one. +## Getting Started -The example also illustrates how AutoFixture can be used as a [SUT Factory](http://blog.ploeh.dk/2009/02/13/SUTFactory.aspx) that creates the actual System Under Test (the MyClass instance). +### Basic Usage -Given the right combination of unit testing framework and extensions for AutoFixture, we can further reduce the above test to be even more declarative: +`AutoFixture.NUnit2` provides an `[AutoData]` attribute that automatically populates test method parameters with generated data. -### [xUnit](http://blog.ploeh.dk/2010/10/08/AutoDataTheoriesWithAutoFixture.aspx) +For example, imagine you have a simple calculator class: ```c# -[Theory, AutoData] -public void IntroductoryTest(int expectedNumber, MyClass sut) +public class Calculator { - int result = sut.Echo(expectedNumber); - Assert.Equal(expectedNumber, result); + public int Add(int a, int b) => a + b; } ``` -### [NUnit](http://gertjvr.wordpress.com/2013/09/25/howto-autofixture-nunit2) +You can write a test using AutoFixture to provide the input values: ```c# -[Test, AutoData] -public void IntroductoryTest(int expectedNumber, MyClass sut) +using NUnit.Framework; +using AutoFixture.NUnit2; + +[TestFixture] +public class CalculatorTests { - int result = sut.Echo(expectedNumber); - Assert.Equal(expectedNumber, result); + [Test, AutoData] + public void Add_SimpleValues_ReturnsCorrectResult( + Calculator calculator, int a, int b) + { + // Act + int result = calculator.Add(a, b); + + // Assert + Assert.AreEqual(a + b, result); + } } ``` -Notice how we can reduce unit tests to state only the relevant parts of the test. The rest (variables, Fixture object) is relegated to attributes and parameter values that are supplied automatically by AutoFixture. The test is now only two lines of code. +### Freezing Dependencies -Using AutoFixture is as easy as referencing the library and creating a new instance of the Fixture class! +AutoFixture's `[Frozen]` attribute can be used to ensure that the same instance of a dependency is injected into multiple parameters. -## Downloads +For example, if you have a consumer class that depends on a shared dependency: -AutoFixture packages are distributed via NuGet.
-To install the packages you can use the integrated package manager of your IDE, the .NET CLI, or reference the package directly in your project file. +```c# +public class Dependency { } -```cmd -dotnet add package AutoFixture --version 4.18.0 +public class Consumer +{ + public Dependency Dependency { get; } + + public Consumer(Dependency dependency) + { + Dependency = dependency; + } +} ``` -```xml - +You can freeze the Dependency so that all requests for it within the test will return the same instance: + +```c# +using NUnit.Framework; +using AutoFixture.NUnit2; +using AutoFixture; + +[TestFixture] +public class ConsumerTests +{ + [Test, AutoData] + public void Consumer_UsesSameDependency( + [Frozen] Dependency dependency, Consumer consumer) + { + // Assert + Assert.AreSame(dependency, consumer.Dependency); + } +} ``` +## Integrations + AutoFixture offers a variety of utility packages and integrations with most of the major mocking libraries and testing frameworks. +> [!NOTE] +> Since AutoFixture tries maintain compatibility with a large number of package versions, the packages bundled with AutoFixture might not contain the latest features of your (e.g. mocking) library.
+> Make sure to install the latest version of the integrated library package, alongside the AutoFixture packages. + ### Core packages The core packages offer the full set of AutoFixture's features without requring any testing framework or third party integration. @@ -118,10 +140,6 @@ These integrations enable such features as configuring mocks, auto-injecting moc | FakeItEasy | [AutoFixture.AutoFakeItEasy](http://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoFakeItEasy)](https://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoFakeItEasy)](https://www.nuget.org/packages/AutoFixture.AutoFakeItEasy) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoFakeItEasy) | | Rhino Mocks | [AutoFixture.AutoRhinoMocks](http://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | [![NuGet](https://img.shields.io/nuget/v/AutoFixture.AutoRhinoMocks)](https://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | [![NuGet](https://img.shields.io/nuget/vpre/AutoFixture.AutoRhinoMocks)](https://www.nuget.org/packages/AutoFixture.AutoRhinoMocks) | ![NuGet](https://img.shields.io/nuget/dt/autofixture.AutoRhinoMocks) | -> **NOTE:** -> Since AutoFixture tries maintain compatibility with a large number of package versions, the packages bundled with AutoFixture might not contain the latest features of your mocking library.
-> Make sure to install the latest version of the mocking library package, alongside the AutoFixture package. - ### Testing frameworks AutoFixture offers integrations with most major .NET testing frameworks.
@@ -139,41 +157,14 @@ These integrations enable auto-generation of test cases, combining auto-generate You can check the compatibility with your target framework version on the [wiki](https://github.com/AutoFixture/AutoFixture/wiki#net-platforms-compatibility-table) or on the [NuGet](https://www.nuget.org/profiles/AutoFixture) website. -### vNext feed - -The artifacts of the next major version are published to [nuget.org](https://www.nuget.org), and are marked with the `preview` suffix (e.g. `5.0.0-preview00007`).
-You can use these packages to early access and test the next major version of the AutoFixture.
-Make sure to enable the preview packages in your IDE in order to see the latest version. - -> __NOTE:__ This preview versions exists for the _preview purpose_ only, so use them with caution: -> ->* New versions of packages might contain breaking changes and API could change drastically from package to package. By other words, we don't follow the SemVer policy for the packages in this feed; ->* Preview packages might be unlisted over time, in order to not clutter the version suggestion dialog in IDEs, but will generally remain available - -## Documentation - -* [CheatSheet](https://github.com/AutoFixture/AutoFixture/wiki/Cheat-Sheet) -* [FAQ](https://github.com/AutoFixture/AutoFixture/wiki/FAQ) - -### Additional resources - -* [Pluralsight course](https://www.pluralsight.com/courses/unit-testing-autofixture-dot-net) -* [ploeh blog](http://blog.ploeh.dk/tags/#AutoFixture-ref) -* [Nikos Baxevanis' blog](http://blog.nikosbaxevanis.com) -* [Enrico Campidoglio's blog](http://megakemp.com/tag/autofixture) -* [Gert Jansen van Rensburg's blog](http://gertjvr.wordpress.com/category/autofixture) -* [Questions on Stack Overflow](http://stackoverflow.com/questions/tagged/autofixture) - -## Feedback & Questions - -If you have questions, feel free to ask. The best places to ask are: +## Contributing -* [Stack Overflow - use the *autofixture* tag](http://stackoverflow.com/questions/tagged/autofixture) -* [GitHub Q&A Discussions](https://github.com/AutoFixture/AutoFixture/discussions/categories/q-a) +Contributions to `AutoFixture.NUnit2` are welcome! +If you would like to contribute, please review our [contributing guidelines](https://github.com/AutoFixture/AutoFixture.NUnit2/blob/master/CONTRIBUTING.md) and open an issue or pull request. ## License -AutoFixture is Open Source software and is released under the [MIT license](https://raw.githubusercontent.com/AutoFixture/AutoFixture/master/LICENCE.txt).
+AutoFixture is Open Source software and is released under the [MIT license](https://raw.githubusercontent.com/AutoFixture/AutoFixture.NUnit2/master/LICENCE.txt).
The licenses allows the use of AutoFixture libraries in free and commercial applications and libraries without restrictions. ### .NET Foundation diff --git a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj index e199fb8b..ea30bdb0 100644 --- a/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj +++ b/Src/AutoFixture.NUnit2.UnitTest/AutoFixture.NUnit2.UnitTest.csproj @@ -3,13 +3,14 @@ - net462 + net452;net462 AutoFixture.NUnit2.UnitTest AutoFixture.NUnit2.UnitTest AutoFixture.NUnit2.UnitTest + @@ -17,7 +18,6 @@ - diff --git a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj index 8c4cdece..c89d081e 100644 --- a/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj +++ b/Src/AutoFixture.NUnit2/AutoFixture.NUnit2.csproj @@ -2,7 +2,7 @@ - net462 + net452;net462 AutoFixture.NUnit2 AutoFixture.NUnit2 AutoFixture.NUnit2 @@ -14,10 +14,7 @@ - - - - + @@ -26,10 +23,6 @@ - - true - readme.txt - true diff --git a/Src/AutoFixture.NUnit2/Readme.txt b/Src/AutoFixture.NUnit2/Readme.txt deleted file mode 100644 index 298a613f..00000000 --- a/Src/AutoFixture.NUnit2/Readme.txt +++ /dev/null @@ -1,38 +0,0 @@ -AutoFixture.NUnit2 -====================== - -Mark Seemann explains how to use AutoDataAttribute here: -(http://blog.ploeh.dk/2010/10/08/AutoDataTheorieswithAutoFixture/) - -Nunit example: - -[Test, AutoData] -public void IntroductoryTest(int expectedNumber, MyClass sut) -{ - int result = sut.Echo(expectedNumber); - Assert.Equal(expectedNumber, result); -} - - -NUnit 2.6.4 support -====================== -Recent versions of ReSharper and "NUnit Test Adapter 2" use NUnit 2.6.4 under the hood. -To support NUnit 2.6.4 you need to add the binding redirects to your [web|app].config file: - - - - - - - - - - - - - - - - - -See more details here: https://github.com/AutoFixture/AutoFixture/issues/488 diff --git a/Src/TestTypeFoundation/TestTypeFoundation.csproj b/Src/TestTypeFoundation/TestTypeFoundation.csproj index 94b9aa53..fae2fee6 100644 --- a/Src/TestTypeFoundation/TestTypeFoundation.csproj +++ b/Src/TestTypeFoundation/TestTypeFoundation.csproj @@ -3,7 +3,7 @@ - net462;netstandard2.0;net5.0;net6.0 + net452;net462;netstandard2.0 TestTypeFoundation TestTypeFoundation diff --git a/build/_build.csproj b/build/_build.csproj index d7906d66..4736bf3e 100644 --- a/build/_build.csproj +++ b/build/_build.csproj @@ -2,7 +2,7 @@ Exe - net5.0 + net6.0 CS0649;CS0169 ..