PostSharp.Engineering.BuildTools 1.0.97-alpha.1

Prefix Reserved
This is a prerelease version of PostSharp.Engineering.BuildTools.
There is a newer version of this package available.
See the version list below for details.
dotnet add package PostSharp.Engineering.BuildTools --version 1.0.97-alpha.1
                    
NuGet\Install-Package PostSharp.Engineering.BuildTools -Version 1.0.97-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PostSharp.Engineering.BuildTools" Version="1.0.97-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PostSharp.Engineering.BuildTools" Version="1.0.97-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="PostSharp.Engineering.BuildTools" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PostSharp.Engineering.BuildTools --version 1.0.97-alpha.1
                    
#r "nuget: PostSharp.Engineering.BuildTools, 1.0.97-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PostSharp.Engineering.BuildTools@1.0.97-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PostSharp.Engineering.BuildTools&version=1.0.97-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=PostSharp.Engineering.BuildTools&version=1.0.97-alpha.1&prerelease
                    
Install as a Cake Tool

PostSharp Engineering

Table of contents

Content

This repository contains common development, build and publishing scripts. It produces two NuGet packages:

  • PostSharp.Engineering.BuildTools is meant to be added as a package reference from the facade C# build program.

  • PostSharp.Engineering.Sdk is meant to be used as an SDK project.

    • AssemblyMetadata.targets: Adds package versions to assembly metadata.
    • BuildOptions.props: Sets the compiler options like language version, nullability and other build options like output path.
    • TeamCity.targets: Enables build and tests reporting to TeamCity.
    • SourceLink.props: Enables SourceLink support.
    • Coverage.props: Enabled code coverage. This script should be imported in test projects only (not in projects being tested). This script adds a package to coverlet so there is no need to have in in test projects (and these references should be removed).
    • MetalamaBranding.props and PostSharpBranding.props: Configure the proper icon for the nuget package.
    • PackagesConfig.targets: Makes the Restore and Pack targets work for projects referencing NuGet using packages.config.
    • WebPublish.targets: Configures the release build of web projects to be published as a zipped artifact.
    • TestsPublish.targets: Configures the release build of test projects to be published as a zipped artifact.

Both packages must be used at the same time.

Concepts

Terminology

A product is almost synonym for repository. There is a single product per repository, and the product name must be the same as the repository name. A product can contain several C# solutions.

Build and testing locally

For details, do Build.ps1 in PowerShell and read the help.

Versioning

Objectives

A major goal of this SDK is to allow to build and test repositories that have references to other repositories without having to publish the nuget package. That is, it is possible and quite easy, with this SDK, to perform builds that reference local clones of repositories. All solutions or projects in the same product share have the same version.

Configuring the version of the current product

The product package version and package version suffix configuration is centralized in the eng\MainVersion.props script via the MainVersion and PackageVersionSuffix properties, respectively. For RTM products, leave the PackageVersionSuffix property value empty.

Configuring the version of dependent products or packages.

Package dependencies versions configuration is centralized in the eng\Versions.props script. Each dependency version is configured in a property named <[DependencyName]Version>, eg. <SystemCollectionsImmutableVersion>.

This property value is then available in all MSBuild project files in the repository and can be used in the PackageReference items. For example:

<ItemGroup>
    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" />
</ItemGroup>

Using a local build of a referenced product

Dependencies must be checked out under the same root directory (typically c:\src) under their canonic name.

Then, use Build.ps1 dependencies set local <DEPENDENCY> to specify which dependencies should be run locally.

This will generate eng/Versions.g.props, which you should have imported in eng/Versions.props.

Installation

The easiest way to get started is from this repo template: https://github.com/postsharp/PostSharp.Engineering.ProductTemplate.

Step 1. Edit global.json

Add or update the reference to PostSharp.Engineering.Sdk in global.json.

{
  "sdk": {
    "version": "5.0.206",
    "rollForward": "disable"
  },
  "msbuild-sdks": {
    "PostSharp.Engineering.Sdk": "1.0.0"
  }
}

Step 2. Packaging.props

Create eng\Packaging.props file. The content should look like this:

<Project>

    
    <PropertyGroup>
        <Authors>PostSharp Technologies</Authors>
        <PackageProjectUrl>https://github.com/postsharp/Caravela</PackageProjectUrl>
        <PackageTags>PostSharp Caravela AOP</PackageTags>
        <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
        <PackageIcon>PostSharpIcon.png</PackageIcon>
        <PackageLicenseFile>LICENSE.md</PackageLicenseFile>
    </PropertyGroup>

    
    <ItemGroup>
        <None Include="$(MSBuildThisFileDirectory)..\PostSharpIcon.png" Visible="false" Pack="true" PackagePath="" />
        <None Include="$(MSBuildThisFileDirectory)..\LICENSE.md" Visible="false" Pack="true" PackagePath="" />
        <None Include="$(MSBuildThisFileDirectory)..\THIRD-PARTY-NOTICES.TXT" Visible="false" Pack="true" PackagePath="" />
    </ItemGroup>

</Project>

Make sure that all the files referenced in the previous step exist, or modify the file.

Step 3. MainVersion.props

Create eng\MainVersion.props file. The content should look like:

<Project>
    <PropertyGroup>
        <MainVersion>0.3.6</MainVersion>
        <PackageVersionSuffix>-preview</PackageVersionSuffix>
    </PropertyGroup>
</Project>

Additionally, there may be a property named PatchVersion, which may contain a version number with 4 components. The PatchVersion property value MUST start with the value of the MainVersion property. The use case for this property is when a repo A has a version dependency on another repo B but we want to release a patch of repo B without releasing a new build of repo A.

Step 4. Versions.props

Create eng\Versions.props file. The content should look like this (replace My by the name of the repo without dot):

<Project>

    
    <Import Project="MainVersion.props" Condition="!Exists('MyVersion.props')" />
    
    <PropertyGroup>
        <MyVersion>$(MainVersion)$(PackageVersionSuffix)</MyVersion>
        <MyAssemblyVersion>$(MainVersion)</MyAssemblyVersion>
    </PropertyGroup>

    
    <PropertyGroup>
        <RoslynVersion>3.8.0</RoslynVersion>
        <CaravelaCompilerVersion>3.8.12-preview</CaravelaCompilerVersion>
        <MicrosoftCSharpVersion>4.7.0</MicrosoftCSharpVersion>
    </PropertyGroup>

    
    <Import Project="../artifacts/publish/private/MyVersion.props" Condition="Exists('../artifacts/publish/private/MyVersion.props')" />
    <Import Project="Dependencies.props" Condition="Exists('Dependencies.props')" />

    
    <PropertyGroup>
        <AssemblyVersion>$(MyAssemblyVersion)</AssemblyVersion>
        <Version>$(MyVersion)</Version>
    </PropertyGroup>
    

</Project>

Step 5. Directory.Build.props

Add the following content to Directory.Build.props:

<Project>

  <PropertyGroup>
    <RepoDirectory>$(MSBuildThisFileDirectory)</RepoDirectory>
    <RepoKind>AzureRepos</RepoKind>
  </PropertyGroup>

  <Import Project="eng\Versions.props" />
  <Import Project="eng\Packaging.props" />

  <Import Sdk="PostSharp.Engineering.Sdk" Project="BuildOptions.props" />
  <Import Sdk="PostSharp.Engineering.Sdk" Project="CodeQuality.props" />
  <Import Sdk="PostSharp.Engineering.Sdk" Project="SourceLink.props" />

</Project>

Step 6. Directory.Build.targets

Add the following content to Directory.Build.targets:

<Project>

  <Import Sdk="PostSharp.Engineering.Sdk"  Project="AssemblyMetadata.targets" />
  <Import Sdk="PostSharp.Engineering.Sdk"  Project="TeamCity.targets" />

</Project>

Step 7. Create the front-end build project

Create a file eng\src\Build.csproj with the following content:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <AssemblyName>Build</AssemblyName>
        <GenerateDocumentationFile>false</GenerateDocumentationFile>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
        <NoWarn>SA0001;CS8002</NoWarn>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="PostSharp.Engineering.BuildTools.csproj" Version="$(PostSharpEngineeringVersion)" />
    </ItemGroup>

</Project>

Create also a file eng\src\Program.cs with content that varies according to your repo. You can use all the power of C# and PowerShell to customize the build. Note that in the PublicArtifacts, the strings $(Configuration) and $(PackageVersion), and only those strings, are replaced by their value.

using PostSharp.Engineering.BuildTools;
using PostSharp.Engineering.BuildTools.Commands.Build;
using Spectre.Console.Cli;
using System.Collections.Immutable;

namespace BuildCaravela
{
    internal class Program
    {
        private static int Main( string[] args )
        {
            var product = new Product
            {
                ProductName = "Caravela",
                Solutions = ImmutableArray.Create<Solution>(
                    new DotNetSolution( "Caravela.sln" )
                    {
                        SupportsTestCoverage = true
                    },
                    new DotNetSolution( "Tests\\Caravela.Framework.TestApp\\Caravela.Framework.TestApp.sln" )
                    {
                        IsTestOnly = true
                    } ),
                PublicArtifacts = ImmutableArray.Create(
                    "bin\\$(Configuration)\\Caravela.Framework.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.TestFramework.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.Redist.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.Sdk.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.Impl.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.DesignTime.Contracts.$(PackageVersion).nupkg" ),
                 Dependencies = ImmutableArray.Create(
                    new ProductDependency("Caravela.Compiler"), 
                    new ProductDependency("PostSharp.Engineering.BuildTools") )    
            };
            var commandApp = new CommandApp();
            commandApp.AddProductCommands( product );

            return commandApp.Run( args );
        }
    }
}

Step 8. Create Build.ps1, the front-end build script

Create Build.ps1 file in the repo root directory. The content should look like:

if ( $env:VisualStudioVersion -eq $null ) {
    Import-Module "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
    Enter-VsDevShell -VsInstallPath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\" -StartInPath $(Get-Location)
}

& dotnet run --project "$PSScriptRoot\eng\src\Build.csproj" -- $args
exit $LASTEXITCODE

Step 9. Editing .gitignore

Exclude this:

artifacts
eng/tools
*.Import.props

Build Concepts

The code in Program.cs uses the concepts described here.

classDiagram

  class Product {

  }

  class Solution {

  }



  Program o-- "1" Product 
  Product o-- "*" Solution
  Product  o-- "*" DependencyDefinition
  Product  o-- "3" BuildConfigurationInfo
  BuildConfigurationInfo  o-- "*" IBuildTrigger
  BuildConfigurationInfo o-- "*" Publisher
  BuildConfigurationInfo o-- "*" Swapper
  Swapper o-- "*" Tester
  Solution <|-- DotNetSolution
  Solution <|-- MSBuildSolution
  Tester <|-- VSTestTester
  IBuildTrigger <|-- NightlyBuildTrigger
  IBuildTrigger <|-- SourceBuildTrigger
  Publisher <|-- MSDeployPublisher
  Publisher <|-- NuGetPublisher
  Publisher <|-- VsixPublisher
  

  • Program is your program, i.e. BuildMyProduct.
  • Product is a unique instance configured by Program, the root object that defines the build for the whole repo.
  • Solution represents a solution, project, or other build script in your repo. A solution is something that can be restored, built, packed, tested. Two standard implementations are DotNetSolution and MSBuildSolution.
  • BuildConfigurationInfo represents properties that are specific to a build configuration (i.e. Debug, Release or Public) for the product.
  • DependencyDefinition are dependencies to other repositories.
  • Publisher is something that publishes, or deploys, an already-built artefact to a feed, marketplace, deployment slot, or anything. There are standard implementations for NuGet, VSIX, web sites.
  • Swapper is something that swaps a staging deployment slot into the production deployment slot.
  • Tester is a test suite, typically running against a staging deployment, that must execute successfully before the staging deployment is swapped into the production deployment.

Continuous integration

We use TeamCity as our CI/CD pipeline, and we use Kotlin scripts stored in the Git repo. For an example, see the .teamcity directory the current repo.

Artifacts

All TeamCity artifacts are published under artifacts/publish. All build configurations should export and import these artifacts.

Commands

All TeamCity build configurations use the front-end Build.ps1:

  • Debug Build and Test: Build.ps1 test --numbered %build.number%
  • Release Build and Test: Build.ps1 test --public --sign
  • Publish to internal package sources: Build.ps1 publish
  • Publish to internal and public package source: Build.ps1 publish --public

Required environment variables

  • SIGNSERVER_SECRET
  • INTERNAL_NUGET_PUSH_URL
  • INTERNAL_NUGET_API_KEY
  • NUGET_ORG_API_KEY
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on PostSharp.Engineering.BuildTools:

Package Downloads
PostSharp.Engineering.BuildTools.AWS

Package Description

PostSharp.Engineering.DocFx

A multi-repo build orchestrator used by PostSharp Technologies for its products and for Metalama.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on PostSharp.Engineering.BuildTools:

Repository Stars
metalama/Metalama
A meta-programming framework for code generation, aspect-oriented programming, and architecture verification of large C# codebases.
Version Downloads Last Updated
2023.2.275 141 11/5/2025
2023.2.274 185 11/3/2025
2023.2.273 176 10/31/2025
2023.2.272 185 10/30/2025
2023.2.271 244 10/29/2025
2023.2.270 410 10/14/2025
2023.2.269 212 10/14/2025
2023.2.268 293 10/13/2025
2023.2.267 150 10/11/2025
2023.2.266 183 10/8/2025
2023.2.265 174 10/8/2025
2023.2.264 185 10/7/2025
2023.2.263 193 10/7/2025
2023.2.262 185 10/7/2025
2023.2.261 175 10/7/2025
2023.2.260 177 10/6/2025
2023.2.259 155 10/3/2025
2023.2.258 139 10/3/2025
2023.2.257 192 10/3/2025
2023.2.256 194 10/3/2025
2023.2.255 150 10/3/2025
2023.2.254 213 10/2/2025
2023.2.253 178 10/2/2025
2023.2.252 192 10/1/2025
2023.2.251 611 10/1/2025
2023.2.250 227 10/1/2025
2023.2.249 267 9/30/2025
2023.2.248 190 9/30/2025
2023.2.247 185 9/30/2025
2023.2.246 224 9/30/2025
2023.2.245 195 9/30/2025
2023.2.244 179 9/30/2025
2023.2.243 195 9/30/2025
2023.2.242 212 9/30/2025
2023.2.241 193 9/29/2025
2023.2.240 188 9/29/2025
2023.2.239 197 9/29/2025
2023.2.238 214 9/29/2025
2023.2.237 573 9/29/2025
2023.2.236 823 9/29/2025
2023.2.235 225 9/28/2025
2023.2.234 239 9/28/2025
2023.2.233 160 9/28/2025
2023.2.232 151 9/28/2025
2023.2.231 164 9/28/2025
2023.2.230 167 9/28/2025
2023.2.229 160 9/28/2025
2023.2.228 173 9/28/2025
2023.2.227 114 9/27/2025
2023.2.226 125 9/27/2025
2023.2.225 140 9/27/2025
2023.2.224 128 9/27/2025
2023.2.223 122 9/27/2025
2023.2.222 130 9/27/2025
2023.2.221 125 9/27/2025
2023.2.220 114 9/27/2025
2023.2.219 145 9/26/2025
2023.2.218 149 9/26/2025
2023.2.217 136 9/26/2025
2023.2.216 172 9/26/2025
2023.2.215 162 9/26/2025
2023.2.214 155 9/26/2025
2023.2.213 196 9/25/2025
2023.2.212 198 9/25/2025
2023.2.211 193 9/24/2025
2023.2.210 191 9/24/2025
2023.2.209 193 9/24/2025
2023.2.208 199 9/24/2025
2023.2.207 200 9/23/2025
2023.2.206 197 9/23/2025
2023.2.205 226 9/22/2025
2023.2.204 204 9/22/2025
2023.2.203 216 9/22/2025
2023.2.202 225 9/22/2025
2023.2.201 243 9/21/2025
2023.2.200 219 9/21/2025
2023.2.199 179 9/21/2025
2023.2.198 223 9/20/2025
2023.2.197 193 9/20/2025
2023.2.196 210 9/20/2025
2023.2.195 243 9/19/2025
2023.2.194 261 9/19/2025
2023.2.193 252 9/19/2025
2023.2.192 263 9/19/2025
2023.2.191 328 9/18/2025
2023.2.190 315 9/18/2025
2023.2.189 313 9/17/2025
2023.2.188 300 9/17/2025
2023.2.187 324 9/17/2025
2023.2.186 303 9/16/2025
2023.2.185 310 9/16/2025
2023.2.184 306 9/15/2025
2023.2.183 305 9/15/2025
2023.2.182 256 9/15/2025
2023.2.181 266 9/15/2025
2023.2.180 248 9/15/2025
2023.2.179 177 9/10/2025
2023.2.178 460 9/2/2025
2023.2.177 171 9/2/2025
2023.2.176 217 9/2/2025
2023.2.175 185 9/2/2025
2023.2.174 175 9/2/2025
2023.2.173 202 9/1/2025
2023.2.172 182 9/1/2025
2023.2.171 128 7/19/2025
2023.2.170 485 5/18/2025
2023.2.169 1,305 5/16/2025
2023.2.168 280 5/8/2025
2023.2.167 262 4/28/2025
2023.2.166 315 4/23/2025
2023.2.165 208 4/13/2025
2023.2.164 348 4/12/2025
2023.2.163 216 4/12/2025
2023.2.162 486 3/28/2025
2023.2.161 198 3/28/2025
2023.2.160 830 3/14/2025
2023.2.159 673 3/1/2025
2023.2.158 192 2/27/2025
2023.2.157 1,055 2/10/2025
2023.2.156 519 2/5/2025
2023.2.155 166 2/3/2025
2023.2.154 206 1/10/2025
2023.2.153 242 1/10/2025
2023.2.152 1,120 12/12/2024
2023.2.151 176 11/22/2024
2023.2.150 384 11/22/2024
2023.2.149 191 11/21/2024
2023.2.148 196 11/20/2024
2023.2.147 624 11/19/2024
2023.2.146 198 11/15/2024
2023.2.145 191 11/12/2024
2023.2.144 214 11/12/2024
2023.2.143 193 11/11/2024
2023.2.142 520 11/7/2024
2023.2.141 374 11/7/2024
2023.2.140 2,314 11/6/2024
2023.2.139 367 11/6/2024
2023.2.138 192 11/5/2024
2023.2.137 489 10/24/2024
2023.2.136 3,136 10/14/2024
2023.2.135 994 10/4/2024
2023.2.134 239 9/29/2024
2023.2.133 192 9/25/2024
2023.2.132 280 9/24/2024
2023.2.131 171 9/24/2024
2023.2.130 371 9/11/2024
2023.2.129 2,455 9/11/2024
2023.2.128 211 9/11/2024
2023.2.127 189 9/10/2024
2023.2.126 352 9/9/2024
2023.2.125 207 9/9/2024
2023.2.124 462 9/6/2024
2023.2.123 245 8/29/2024
2023.2.122 1,175 8/28/2024
2023.2.121 178 8/27/2024
2023.2.120 185 8/27/2024
2023.2.119 484 8/27/2024
2023.2.118 192 8/27/2024
2023.2.117 232 8/27/2024
2023.2.116 548 8/9/2024
2023.2.115 367 8/5/2024
2023.2.114 189 8/5/2024
2023.2.113 396 7/25/2024
2023.2.112 332 7/12/2024
2023.2.111 2,320 7/12/2024
2023.2.110 522 7/10/2024
2023.2.109 1,956 6/10/2024
2023.2.108 393 5/30/2024
2023.2.107 227 5/28/2024
2023.2.106 507 5/27/2024
2023.2.105 182 5/24/2024
2023.2.104 219 5/23/2024
2023.2.103 198 5/23/2024
2023.2.102 271 5/23/2024
2023.2.101 183 5/23/2024
2023.2.100 215 5/22/2024
2023.2.99 201 5/22/2024
2023.2.98 402 5/22/2024
2023.2.97 180 5/22/2024
2023.2.96 231 5/22/2024
2023.2.95 214 5/21/2024
2023.2.94 184 5/21/2024
2023.2.93 346 5/19/2024
2023.2.92 208 5/19/2024
2023.2.91 243 5/18/2024
2023.2.90 470 5/15/2024
2023.2.89 264 5/15/2024
2023.2.88 207 5/15/2024
2023.2.87 191 5/13/2024
2023.2.86 1,057 4/29/2024
2023.2.85 507 4/23/2024
2023.2.84 801 4/2/2024
2023.2.83 4,302 3/28/2024
2023.2.82 207 3/26/2024
2023.2.81 181 3/23/2024
2023.2.80 466 3/22/2024
2023.2.79 210 3/13/2024
2023.2.78 596 2/12/2024
2023.2.77 254 1/10/2024
2023.2.76 971 1/8/2024
2023.2.75 372 1/8/2024
2023.2.74 225 1/5/2024
2023.2.73 205 1/5/2024
2023.2.72 200 1/5/2024
2023.2.71 537 1/3/2024
2023.2.70 3,447 1/2/2024
2023.2.69 190 12/22/2023
2023.2.68 566 12/21/2023
2023.2.67 206 12/19/2023
2023.2.66 208 12/18/2023
2023.2.65 207 12/18/2023
2023.2.64 910 12/12/2023
2023.2.63 299 12/1/2023
2023.2.62 547 12/1/2023
2023.2.61 266 11/30/2023
2023.2.60 217 11/30/2023
2023.2.59 196 11/30/2023
2023.2.58 444 11/13/2023
2023.2.57 543 10/25/2023
2023.2.56 1,312 10/23/2023
2023.2.55 224 10/20/2023
2023.2.54 228 10/20/2023
2023.2.53 489 10/19/2023
2023.2.52 333 10/18/2023
2023.2.51 193 10/18/2023
2023.2.50 270 10/17/2023
2023.2.49 1,285 10/12/2023
2023.2.48 397 10/12/2023
2023.2.47 389 10/11/2023
2023.2.46 213 10/11/2023
2023.2.45 385 10/11/2023
2023.2.44 241 10/11/2023
2023.2.43 360 9/25/2023
2023.2.42 248 9/20/2023
2023.2.41 2,199 9/11/2023
2023.2.40 491 8/30/2023
2023.2.39 450 8/25/2023
2023.2.38 458 8/22/2023
2023.2.37 353 8/21/2023
2023.2.36 2,381 8/18/2023
2023.2.35 273 8/18/2023
2023.2.34 275 8/9/2023
2023.2.33 305 7/29/2023
2023.2.32 1,179 7/26/2023
2023.2.31 259 7/25/2023
2023.2.30 306 7/25/2023
2023.2.29 346 7/23/2023
2023.2.28 283 7/23/2023
2023.2.27 302 7/21/2023
2023.2.26 513 7/19/2023
2023.2.25 308 7/19/2023
2023.2.24 1,437 6/27/2023
2023.2.23 414 6/26/2023
2023.2.22 530 6/25/2023
2023.2.21 272 6/24/2023
2023.2.20 292 6/23/2023
2023.2.19 279 6/23/2023
2023.2.18 294 6/23/2023
2023.2.17 294 6/22/2023
2023.2.16 379 6/22/2023
2023.2.15 302 6/22/2023
2023.2.14 314 6/21/2023
2023.2.13 308 6/16/2023
2023.2.12 297 6/15/2023
2023.2.11 728 6/13/2023
2023.2.10 286 6/12/2023
2023.2.9 301 6/12/2023
2023.2.8 293 6/12/2023
2023.2.7 393 6/10/2023
2023.2.6-preview 269 6/10/2023
2023.2.5-preview 218 6/9/2023
2023.2.4-preview 322 6/9/2023
2023.2.3-preview 268 6/7/2023
2023.2.2-preview 292 6/2/2023
2023.2.1-preview 282 6/2/2023
2023.1.28-preview 172 9/5/2024
2023.1.27-preview 157 9/5/2024
2023.1.26-preview 206 9/4/2024
2023.1.25-preview 163 9/4/2024
2023.1.24-preview 148 9/4/2024
2023.1.23-preview 182 9/4/2024
2023.1.22-preview 160 9/3/2024
2023.1.21-preview 171 9/3/2024
2023.1.20-preview 187 9/3/2024
2023.1.19-preview 174 9/2/2024
2023.1.18-preview 187 9/2/2024
2023.1.17-preview 161 9/2/2024
2023.1.16-preview 165 8/30/2024
2023.1.15-preview 187 8/29/2024
2023.1.14-preview 308 5/24/2023
2023.1.13-preview 981 5/24/2023
2023.1.12-preview 283 5/23/2023
2023.1.11-preview 257 5/23/2023
2023.1.10-preview 239 5/17/2023
2023.1.9-preview 285 5/17/2023
2023.1.8-preview 225 5/15/2023
2023.1.7-preview 519 5/10/2023
2023.1.6-preview 331 4/27/2023
2023.1.5-preview 302 4/26/2023
2023.1.4-preview 242 4/26/2023
2023.1.3-preview 340 4/21/2023
2023.1.2-preview 269 4/21/2023
2023.1.1-preview 252 4/21/2023
2023.1.0-preview 243 4/21/2023
2023.0.150 298 5/29/2023
2023.0.149 590 5/24/2023
2023.0.148 326 5/23/2023
2023.0.147 345 5/17/2023
2023.0.146 376 5/17/2023
2023.0.145 288 5/9/2023
2023.0.144 536 5/2/2023
2023.0.143 516 5/2/2023
1.0.142-preview 273 4/24/2023
1.0.141-preview 340 4/5/2023
1.0.140-preview 363 4/4/2023
1.0.139-preview 350 3/30/2023
1.0.138-preview 323 3/30/2023
1.0.137-preview 239 3/30/2023
1.0.136-preview 260 3/30/2023
1.0.135-preview 849 3/30/2023
1.0.134-preview 416 3/1/2023
1.0.133-preview 278 3/1/2023
1.0.132-preview 676 2/27/2023
1.0.131-preview 513 2/24/2023
1.0.130-preview 974 2/22/2023
1.0.129-preview 261 2/22/2023
1.0.128-preview 313 2/21/2023
1.0.127-preview 254 2/17/2023
1.0.126-preview 749 2/16/2023
1.0.125-preview 292 2/16/2023
1.0.124-preview 264 2/15/2023
1.0.123-preview 269 2/15/2023
1.0.122-preview 268 2/10/2023
1.0.121-preview 229 2/10/2023
1.0.120-preview 238 2/10/2023
1.0.119-preview 309 2/9/2023
1.0.118-preview 276 2/8/2023
1.0.117-preview 300 1/30/2023
1.0.116-preview 270 1/26/2023
1.0.115-preview 267 1/26/2023
1.0.114-preview 924 1/16/2023
1.0.113-preview 321 1/13/2023
1.0.112-preview 464 1/8/2023
1.0.111-preview 573 1/5/2023
1.0.110-preview 780 12/18/2022
1.0.109-preview 298 12/15/2022
1.0.108-preview 288 12/13/2022
1.0.107-preview 322 12/9/2022
1.0.107-alpha.2 202 12/9/2022
1.0.107-alpha.1 191 12/9/2022
1.0.106-preview 313 12/8/2022
1.0.105-preview 274 12/8/2022
1.0.105-alpha.2 224 12/8/2022
1.0.105-alpha.1 199 12/6/2022
1.0.104-preview 325 12/5/2022
1.0.103-preview 401 12/2/2022
1.0.102-preview 560 11/18/2022
1.0.101-preview 1,297 11/3/2022
1.0.101-alpha.3 217 11/3/2022
1.0.101-alpha.2 245 11/2/2022
1.0.101-alpha.1 191 11/2/2022
1.0.100-preview 1,139 10/28/2022
1.0.99-preview 530 10/27/2022
1.0.99-alpha.3 217 10/27/2022
1.0.99-alpha.2 221 10/26/2022
1.0.99-alpha.1 197 10/26/2022
1.0.98-preview 362 10/25/2022
1.0.97-preview 572 10/20/2022
1.0.97-alpha.2 251 10/19/2022
1.0.97-alpha.1 246 10/19/2022
1.0.96-preview 523 10/7/2022
1.0.95-preview 279 10/4/2022
1.0.94-preview 691 9/29/2022
1.0.93-preview 301 9/29/2022
1.0.92-preview 302 9/27/2022
1.0.91-preview 375 9/27/2022
1.0.90-preview 324 9/27/2022
1.0.90-alpha.1 228 9/26/2022
1.0.89-preview 537 9/11/2022
1.0.87-preview 763 9/6/2022
1.0.86-preview 502 9/5/2022
1.0.86-alpha.1 205 9/2/2022
1.0.85-preview 453 8/2/2022
1.0.84-preview 469 7/29/2022
1.0.83-preview 542 7/28/2022
1.0.83-alpha.3 240 7/28/2022
1.0.83-alpha.2 226 7/28/2022
1.0.83-alpha.1 242 7/28/2022
1.0.82-preview 759 7/27/2022
1.0.82-beta.3 267 7/27/2022
1.0.82-beta.2 270 7/26/2022
1.0.82-beta 314 7/26/2022
1.0.82-alpha.1 215 7/25/2022
1.0.81-preview 362 7/22/2022
1.0.80-preview 342 7/20/2022
1.0.80-alpha.3 251 7/20/2022
1.0.80-alpha.2 226 7/20/2022
1.0.80-alpha 314 7/20/2022
1.0.79-preview 435 7/19/2022
1.0.79-beta 295 7/15/2022
1.0.79-alpha.1 341 7/2/2022
1.0.78-preview 411 7/12/2022
1.0.78-alpha.1 260 7/2/2022
1.0.77-preview 379 6/24/2022
1.0.76-preview 345 6/22/2022
1.0.75-preview 391 6/21/2022
1.0.74-preview 313 6/18/2022
1.0.73-preview 262 6/16/2022
1.0.72-preview 307 6/15/2022
1.0.71-preview 327 6/10/2022
1.0.70-preview 963 6/6/2022
1.0.70-beta 339 6/3/2022
1.0.69-preview 340 5/24/2022
1.0.68-preview 444 5/23/2022
1.0.68-beta-4 285 5/23/2022
1.0.68-beta-3 331 5/16/2022
1.0.68-beta-2 304 5/16/2022
1.0.68-beta 315 5/12/2022
1.0.67-preview 401 5/11/2022
1.0.67-beta-4 300 5/11/2022
1.0.67-beta-3 319 5/10/2022
1.0.67-beta-2 287 5/10/2022
1.0.67-beta 305 5/10/2022
1.0.66-preview 307 5/9/2022
1.0.65-preview 310 5/4/2022
1.0.65-beta 303 4/29/2022
1.0.64-preview 317 4/26/2022
1.0.63-preview 322 4/22/2022
1.0.63-beta-6 341 4/21/2022
1.0.63-beta-5 298 4/21/2022
1.0.63-beta-4 328 4/21/2022
1.0.63-beta-3 333 4/20/2022
1.0.63-beta-2 318 4/20/2022
1.0.63-beta 306 4/19/2022
1.0.62-preview 341 4/15/2022
1.0.62-beta-6 293 4/14/2022
1.0.62-beta-5 305 4/14/2022
1.0.62-beta-4 315 4/14/2022
1.0.62-beta-3 335 4/13/2022
1.0.62-beta-2 319 4/11/2022
1.0.62-beta 320 4/11/2022
1.0.61-preview 365 4/7/2022
1.0.61-beta 328 4/7/2022
1.0.60-preview 345 4/6/2022
1.0.59-preview 333 4/6/2022
1.0.59-beta 349 4/6/2022
1.0.58-beta-6 306 4/6/2022
1.0.58-beta-5 328 4/5/2022
1.0.58-beta-4 321 4/5/2022
1.0.58-beta-3 290 4/5/2022
1.0.58-beta-2 327 4/5/2022
1.0.58-beta 326 4/5/2022
1.0.56-preview 337 4/1/2022
1.0.56-beta-9 328 3/28/2022
1.0.56-beta-8 319 3/28/2022
1.0.56-beta-7 309 3/28/2022
1.0.56-beta-6 348 3/28/2022
1.0.56-beta-5 296 3/25/2022
1.0.56-beta-4 311 3/24/2022
1.0.56-beta-3 320 3/22/2022
1.0.56-beta-2 319 3/22/2022
1.0.56-beta-14 310 3/29/2022
1.0.56-beta-13 338 3/28/2022
1.0.56-beta-12 303 3/28/2022
1.0.56-beta-11 332 3/28/2022
1.0.56-beta-10 323 3/28/2022
1.0.56-beta 318 3/22/2022
1.0.55-preview 346 3/22/2022
1.0.54-preview 339 3/16/2022
1.0.53-preview 319 3/16/2022
1.0.52-preview 344 3/16/2022
1.0.51-preview 317 3/15/2022
1.0.50-preview 333 3/9/2022
1.0.49-preview 316 3/3/2022
1.0.48-preview 311 2/23/2022
1.0.47-preview 349 2/21/2022
1.0.46-preview 443 2/21/2022
1.0.45-preview 297 2/18/2022
1.0.43-preview 335 2/16/2022
1.0.42-preview 369 2/10/2022
1.0.41-preview 328 2/10/2022
1.0.40-preview 318 2/10/2022
1.0.39-preview 341 2/7/2022
1.0.38-preview 342 2/4/2022
1.0.37-preview 320 2/4/2022
1.0.36-preview 357 1/25/2022
1.0.35-preview 335 1/25/2022
1.0.34-preview 313 1/25/2022
1.0.33-preview 329 1/13/2022
1.0.32-preview 378 1/13/2022
1.0.31-preview 336 1/13/2022
1.0.30-preview 335 1/13/2022
1.0.29-preview 327 1/13/2022
1.0.28-preview 329 1/12/2022
1.0.27-preview 315 1/12/2022
1.0.26-preview 344 1/12/2022
1.0.25-preview 361 1/10/2022
1.0.24-preview 337 1/6/2022
1.0.23-preview 362 1/4/2022
1.0.22-preview 302 12/15/2021
1.0.21-preview 414 12/14/2021
1.0.20-preview 416 12/14/2021
1.0.19-preview 358 12/10/2021
1.0.18-preview 383 12/9/2021
1.0.17-preview 579 12/9/2021
1.0.16-preview 327 12/9/2021
1.0.15-preview 361 12/9/2021
1.0.14-preview 383 12/9/2021
1.0.13-preview 360 12/9/2021
1.0.12-preview 348 12/9/2021
1.0.10-preview 345 12/8/2021
1.0.9-preview 373 12/7/2021
1.0.8-preview 325 12/7/2021
1.0.7-preview 355 12/7/2021
1.0.6-preview 357 12/7/2021
1.0.4-preview 331 12/3/2021
1.0.3-preview 319 12/3/2021
1.0.2-preview 339 12/3/2021
1.0.1-preview 361 12/2/2021
1.0.0-preview 363 12/2/2021