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.298 28 1/3/2026
2023.2.297 32 1/3/2026
2023.2.296 49 1/2/2026
2023.2.295 69 12/31/2025
2023.2.294 54 12/31/2025
2023.2.293 50 12/31/2025
2023.2.292 187 12/23/2025
2023.2.291 164 12/23/2025
2023.2.290 200 12/19/2025
2023.2.289 201 12/19/2025
2023.2.288 256 12/18/2025
2023.2.287 250 12/18/2025
2023.2.286 251 12/18/2025
2023.2.285 263 12/17/2025
2023.2.284 257 12/16/2025
2023.2.283 228 12/15/2025
2023.2.282 223 12/15/2025
2023.2.281 202 12/14/2025
2023.2.280 185 12/14/2025
2023.2.279 152 12/12/2025
2023.2.278 435 12/11/2025
2023.2.277 159 12/6/2025
2023.2.276 895 12/2/2025
2023.2.275 703 11/5/2025
2023.2.274 220 11/3/2025
2023.2.273 216 10/31/2025
2023.2.272 222 10/30/2025
2023.2.271 482 10/29/2025
2023.2.270 453 10/14/2025
2023.2.269 256 10/14/2025
2023.2.268 318 10/13/2025
2023.2.267 179 10/11/2025
2023.2.266 210 10/8/2025
2023.2.265 203 10/8/2025
2023.2.264 211 10/7/2025
2023.2.263 213 10/7/2025
2023.2.262 216 10/7/2025
2023.2.261 202 10/7/2025
2023.2.260 202 10/6/2025
2023.2.259 207 10/3/2025
2023.2.258 164 10/3/2025
2023.2.257 219 10/3/2025
2023.2.256 218 10/3/2025
2023.2.255 176 10/3/2025
2023.2.254 238 10/2/2025
2023.2.253 206 10/2/2025
2023.2.252 220 10/1/2025
2023.2.251 650 10/1/2025
2023.2.250 253 10/1/2025
2023.2.249 290 9/30/2025
2023.2.248 217 9/30/2025
2023.2.247 214 9/30/2025
2023.2.246 253 9/30/2025
2023.2.245 219 9/30/2025
2023.2.244 207 9/30/2025
2023.2.243 219 9/30/2025
2023.2.242 239 9/30/2025
2023.2.241 212 9/29/2025
2023.2.240 219 9/29/2025
2023.2.239 223 9/29/2025
2023.2.238 241 9/29/2025
2023.2.237 597 9/29/2025
2023.2.236 846 9/29/2025
2023.2.235 257 9/28/2025
2023.2.234 265 9/28/2025
2023.2.233 189 9/28/2025
2023.2.232 183 9/28/2025
2023.2.231 190 9/28/2025
2023.2.230 191 9/28/2025
2023.2.229 184 9/28/2025
2023.2.228 200 9/28/2025
2023.2.227 143 9/27/2025
2023.2.226 149 9/27/2025
2023.2.225 175 9/27/2025
2023.2.224 151 9/27/2025
2023.2.223 146 9/27/2025
2023.2.222 158 9/27/2025
2023.2.221 156 9/27/2025
2023.2.220 136 9/27/2025
2023.2.219 175 9/26/2025
2023.2.218 176 9/26/2025
2023.2.217 161 9/26/2025
2023.2.216 200 9/26/2025
2023.2.215 191 9/26/2025
2023.2.214 183 9/26/2025
2023.2.213 219 9/25/2025
2023.2.212 224 9/25/2025
2023.2.211 225 9/24/2025
2023.2.210 215 9/24/2025
2023.2.209 220 9/24/2025
2023.2.208 222 9/24/2025
2023.2.207 229 9/23/2025
2023.2.206 219 9/23/2025
2023.2.205 261 9/22/2025
2023.2.204 228 9/22/2025
2023.2.203 240 9/22/2025
2023.2.202 255 9/22/2025
2023.2.201 271 9/21/2025
2023.2.200 245 9/21/2025
2023.2.199 204 9/21/2025
2023.2.198 249 9/20/2025
2023.2.197 215 9/20/2025
2023.2.196 237 9/20/2025
2023.2.195 270 9/19/2025
2023.2.194 287 9/19/2025
2023.2.193 275 9/19/2025
2023.2.192 292 9/19/2025
2023.2.191 353 9/18/2025
2023.2.190 340 9/18/2025
2023.2.189 336 9/17/2025
2023.2.188 324 9/17/2025
2023.2.187 345 9/17/2025
2023.2.186 324 9/16/2025
2023.2.185 332 9/16/2025
2023.2.184 331 9/15/2025
2023.2.183 329 9/15/2025
2023.2.182 279 9/15/2025
2023.2.181 293 9/15/2025
2023.2.180 271 9/15/2025
2023.2.179 204 9/10/2025
2023.2.178 484 9/2/2025
2023.2.177 192 9/2/2025
2023.2.176 242 9/2/2025
2023.2.175 210 9/2/2025
2023.2.174 197 9/2/2025
2023.2.173 235 9/1/2025
2023.2.172 206 9/1/2025
2023.2.171 153 7/19/2025
2023.2.170 506 5/18/2025
2023.2.169 1,333 5/16/2025
2023.2.168 305 5/8/2025
2023.2.167 282 4/28/2025
2023.2.166 340 4/23/2025
2023.2.165 232 4/13/2025
2023.2.164 369 4/12/2025
2023.2.163 237 4/12/2025
2023.2.162 511 3/28/2025
2023.2.161 219 3/28/2025
2023.2.160 852 3/14/2025
2023.2.159 694 3/1/2025
2023.2.158 215 2/27/2025
2023.2.157 1,127 2/10/2025
2023.2.156 538 2/5/2025
2023.2.155 186 2/3/2025
2023.2.154 223 1/10/2025
2023.2.153 262 1/10/2025
2023.2.152 1,139 12/12/2024
2023.2.151 199 11/22/2024
2023.2.150 403 11/22/2024
2023.2.149 206 11/21/2024
2023.2.148 217 11/20/2024
2023.2.147 646 11/19/2024
2023.2.146 215 11/15/2024
2023.2.145 216 11/12/2024
2023.2.144 236 11/12/2024
2023.2.143 209 11/11/2024
2023.2.142 539 11/7/2024
2023.2.141 393 11/7/2024
2023.2.140 2,334 11/6/2024
2023.2.139 389 11/6/2024
2023.2.138 211 11/5/2024
2023.2.137 510 10/24/2024
2023.2.136 3,159 10/14/2024
2023.2.135 1,013 10/4/2024
2023.2.134 257 9/29/2024
2023.2.133 211 9/25/2024
2023.2.132 299 9/24/2024
2023.2.131 195 9/24/2024
2023.2.130 398 9/11/2024
2023.2.129 2,477 9/11/2024
2023.2.128 231 9/11/2024
2023.2.127 210 9/10/2024
2023.2.126 369 9/9/2024
2023.2.125 226 9/9/2024
2023.2.124 483 9/6/2024
2023.2.123 266 8/29/2024
2023.2.122 1,197 8/28/2024
2023.2.121 197 8/27/2024
2023.2.120 208 8/27/2024
2023.2.119 506 8/27/2024
2023.2.118 212 8/27/2024
2023.2.117 251 8/27/2024
2023.2.116 569 8/9/2024
2023.2.115 387 8/5/2024
2023.2.114 221 8/5/2024
2023.2.113 423 7/25/2024
2023.2.112 356 7/12/2024
2023.2.111 2,341 7/12/2024
2023.2.110 553 7/10/2024
2023.2.109 1,978 6/10/2024
2023.2.108 410 5/30/2024
2023.2.107 244 5/28/2024
2023.2.106 526 5/27/2024
2023.2.105 205 5/24/2024
2023.2.104 243 5/23/2024
2023.2.103 216 5/23/2024
2023.2.102 290 5/23/2024
2023.2.101 204 5/23/2024
2023.2.100 240 5/22/2024
2023.2.99 217 5/22/2024
2023.2.98 424 5/22/2024
2023.2.97 198 5/22/2024
2023.2.96 256 5/22/2024
2023.2.95 238 5/21/2024
2023.2.94 202 5/21/2024
2023.2.93 361 5/19/2024
2023.2.92 229 5/19/2024
2023.2.91 264 5/18/2024
2023.2.90 489 5/15/2024
2023.2.89 282 5/15/2024
2023.2.88 228 5/15/2024
2023.2.87 214 5/13/2024
2023.2.86 1,083 4/29/2024
2023.2.85 533 4/23/2024
2023.2.84 822 4/2/2024
2023.2.83 4,324 3/28/2024
2023.2.82 231 3/26/2024
2023.2.81 203 3/23/2024
2023.2.80 487 3/22/2024
2023.2.79 235 3/13/2024
2023.2.78 621 2/12/2024
2023.2.77 273 1/10/2024
2023.2.76 993 1/8/2024
2023.2.75 393 1/8/2024
2023.2.74 247 1/5/2024
2023.2.73 222 1/5/2024
2023.2.72 226 1/5/2024
2023.2.71 555 1/3/2024
2023.2.70 3,469 1/2/2024
2023.2.69 210 12/22/2023
2023.2.68 583 12/21/2023
2023.2.67 228 12/19/2023
2023.2.66 232 12/18/2023
2023.2.65 234 12/18/2023
2023.2.64 932 12/12/2023
2023.2.63 318 12/1/2023
2023.2.62 556 12/1/2023
2023.2.61 281 11/30/2023
2023.2.60 235 11/30/2023
2023.2.59 208 11/30/2023
2023.2.58 462 11/13/2023
2023.2.57 557 10/25/2023
2023.2.56 1,328 10/23/2023
2023.2.55 238 10/20/2023
2023.2.54 238 10/20/2023
2023.2.53 505 10/19/2023
2023.2.52 346 10/18/2023
2023.2.51 210 10/18/2023
2023.2.50 284 10/17/2023
2023.2.49 1,298 10/12/2023
2023.2.48 411 10/12/2023
2023.2.47 399 10/11/2023
2023.2.46 229 10/11/2023
2023.2.45 399 10/11/2023
2023.2.44 253 10/11/2023
2023.2.43 380 9/25/2023
2023.2.42 267 9/20/2023
2023.2.41 2,210 9/11/2023
2023.2.40 504 8/30/2023
2023.2.39 468 8/25/2023
2023.2.38 473 8/22/2023
2023.2.37 369 8/21/2023
2023.2.36 2,392 8/18/2023
2023.2.35 287 8/18/2023
2023.2.34 291 8/9/2023
2023.2.33 317 7/29/2023
2023.2.32 1,194 7/26/2023
2023.2.31 276 7/25/2023
2023.2.30 318 7/25/2023
2023.2.29 363 7/23/2023
2023.2.28 298 7/23/2023
2023.2.27 317 7/21/2023
2023.2.26 528 7/19/2023
2023.2.25 322 7/19/2023
2023.2.24 1,455 6/27/2023
2023.2.23 424 6/26/2023
2023.2.22 542 6/25/2023
2023.2.21 288 6/24/2023
2023.2.20 307 6/23/2023
2023.2.19 303 6/23/2023
2023.2.18 312 6/23/2023
2023.2.17 306 6/22/2023
2023.2.16 398 6/22/2023
2023.2.15 319 6/22/2023
2023.2.14 325 6/21/2023
2023.2.13 325 6/16/2023
2023.2.12 315 6/15/2023
2023.2.11 742 6/13/2023
2023.2.10 299 6/12/2023
2023.2.9 317 6/12/2023
2023.2.8 311 6/12/2023
2023.2.7 411 6/10/2023
2023.2.6-preview 285 6/10/2023
2023.2.5-preview 235 6/9/2023
2023.2.4-preview 344 6/9/2023
2023.2.3-preview 290 6/7/2023
2023.2.2-preview 319 6/2/2023
2023.2.1-preview 301 6/2/2023
2023.1.28-preview 186 9/5/2024
2023.1.27-preview 166 9/5/2024
2023.1.26-preview 221 9/4/2024
2023.1.25-preview 180 9/4/2024
2023.1.24-preview 161 9/4/2024
2023.1.23-preview 191 9/4/2024
2023.1.22-preview 174 9/3/2024
2023.1.21-preview 187 9/3/2024
2023.1.20-preview 207 9/3/2024
2023.1.19-preview 184 9/2/2024
2023.1.18-preview 200 9/2/2024
2023.1.17-preview 175 9/2/2024
2023.1.16-preview 176 8/30/2024
2023.1.15-preview 202 8/29/2024
2023.1.14-preview 327 5/24/2023
2023.1.13-preview 996 5/24/2023
2023.1.12-preview 298 5/23/2023
2023.1.11-preview 274 5/23/2023
2023.1.10-preview 256 5/17/2023
2023.1.9-preview 305 5/17/2023
2023.1.8-preview 244 5/15/2023
2023.1.7-preview 536 5/10/2023
2023.1.6-preview 349 4/27/2023
2023.1.5-preview 326 4/26/2023
2023.1.4-preview 259 4/26/2023
2023.1.3-preview 360 4/21/2023
2023.1.2-preview 285 4/21/2023
2023.1.1-preview 273 4/21/2023
2023.1.0-preview 262 4/21/2023
2023.0.150 318 5/29/2023
2023.0.149 612 5/24/2023
2023.0.148 346 5/23/2023
2023.0.147 365 5/17/2023
2023.0.146 399 5/17/2023
2023.0.145 308 5/9/2023
2023.0.144 555 5/2/2023
2023.0.143 559 5/2/2023
1.0.142-preview 289 4/24/2023
1.0.141-preview 361 4/5/2023
1.0.140-preview 386 4/4/2023
1.0.139-preview 370 3/30/2023
1.0.138-preview 345 3/30/2023
1.0.137-preview 265 3/30/2023
1.0.136-preview 275 3/30/2023
1.0.135-preview 864 3/30/2023
1.0.134-preview 436 3/1/2023
1.0.133-preview 301 3/1/2023
1.0.132-preview 704 2/27/2023
1.0.131-preview 534 2/24/2023
1.0.130-preview 996 2/22/2023
1.0.129-preview 286 2/22/2023
1.0.128-preview 329 2/21/2023
1.0.127-preview 272 2/17/2023
1.0.126-preview 769 2/16/2023
1.0.125-preview 311 2/16/2023
1.0.124-preview 288 2/15/2023
1.0.123-preview 290 2/15/2023
1.0.122-preview 286 2/10/2023
1.0.121-preview 250 2/10/2023
1.0.120-preview 258 2/10/2023
1.0.119-preview 331 2/9/2023
1.0.118-preview 294 2/8/2023
1.0.117-preview 318 1/30/2023
1.0.116-preview 291 1/26/2023
1.0.115-preview 291 1/26/2023
1.0.114-preview 956 1/16/2023
1.0.113-preview 343 1/13/2023
1.0.112-preview 485 1/8/2023
1.0.111-preview 591 1/5/2023
1.0.110-preview 802 12/18/2022
1.0.109-preview 317 12/15/2022
1.0.108-preview 314 12/13/2022
1.0.107-preview 341 12/9/2022
1.0.107-alpha.2 224 12/9/2022
1.0.107-alpha.1 212 12/9/2022
1.0.106-preview 336 12/8/2022
1.0.105-preview 295 12/8/2022
1.0.105-alpha.2 249 12/8/2022
1.0.105-alpha.1 221 12/6/2022
1.0.104-preview 354 12/5/2022
1.0.103-preview 425 12/2/2022
1.0.102-preview 586 11/18/2022
1.0.101-preview 1,322 11/3/2022
1.0.101-alpha.3 240 11/3/2022
1.0.101-alpha.2 267 11/2/2022
1.0.101-alpha.1 215 11/2/2022
1.0.100-preview 1,153 10/28/2022
1.0.99-preview 556 10/27/2022
1.0.99-alpha.3 240 10/27/2022
1.0.99-alpha.2 242 10/26/2022
1.0.99-alpha.1 220 10/26/2022
1.0.98-preview 384 10/25/2022
1.0.97-preview 597 10/20/2022
1.0.97-alpha.2 269 10/19/2022
1.0.97-alpha.1 270 10/19/2022
1.0.96-preview 541 10/7/2022
1.0.95-preview 302 10/4/2022
1.0.94-preview 715 9/29/2022
1.0.93-preview 331 9/29/2022
1.0.92-preview 331 9/27/2022
1.0.91-preview 399 9/27/2022
1.0.90-preview 352 9/27/2022
1.0.90-alpha.1 248 9/26/2022
1.0.89-preview 558 9/11/2022
1.0.87-preview 783 9/6/2022
1.0.86-preview 522 9/5/2022
1.0.86-alpha.1 228 9/2/2022
1.0.85-preview 484 8/2/2022
1.0.84-preview 491 7/29/2022
1.0.83-preview 567 7/28/2022
1.0.83-alpha.3 268 7/28/2022
1.0.83-alpha.2 255 7/28/2022
1.0.83-alpha.1 269 7/28/2022
1.0.82-preview 786 7/27/2022
1.0.82-beta.3 293 7/27/2022
1.0.82-beta.2 293 7/26/2022
1.0.82-beta 343 7/26/2022
1.0.82-alpha.1 243 7/25/2022
1.0.81-preview 387 7/22/2022
1.0.80-preview 365 7/20/2022
1.0.80-alpha.3 280 7/20/2022
1.0.80-alpha.2 247 7/20/2022
1.0.80-alpha 340 7/20/2022
1.0.79-preview 461 7/19/2022
1.0.79-beta 321 7/15/2022
1.0.79-alpha.1 362 7/2/2022
1.0.78-preview 437 7/12/2022
1.0.78-alpha.1 289 7/2/2022
1.0.77-preview 405 6/24/2022
1.0.76-preview 369 6/22/2022
1.0.75-preview 419 6/21/2022
1.0.74-preview 340 6/18/2022
1.0.73-preview 288 6/16/2022
1.0.72-preview 331 6/15/2022
1.0.71-preview 356 6/10/2022
1.0.70-preview 990 6/6/2022
1.0.70-beta 362 6/3/2022
1.0.69-preview 368 5/24/2022
1.0.68-preview 469 5/23/2022
1.0.68-beta-4 309 5/23/2022
1.0.68-beta-3 353 5/16/2022
1.0.68-beta-2 328 5/16/2022
1.0.68-beta 337 5/12/2022
1.0.67-preview 427 5/11/2022
1.0.67-beta-4 325 5/11/2022
1.0.67-beta-3 337 5/10/2022
1.0.67-beta-2 311 5/10/2022
1.0.67-beta 328 5/10/2022
1.0.66-preview 330 5/9/2022
1.0.65-preview 332 5/4/2022
1.0.65-beta 329 4/29/2022
1.0.64-preview 342 4/26/2022
1.0.63-preview 347 4/22/2022
1.0.63-beta-6 364 4/21/2022
1.0.63-beta-5 323 4/21/2022
1.0.63-beta-4 349 4/21/2022
1.0.63-beta-3 359 4/20/2022
1.0.63-beta-2 337 4/20/2022
1.0.63-beta 334 4/19/2022
1.0.62-preview 369 4/15/2022
1.0.62-beta-6 319 4/14/2022
1.0.62-beta-5 330 4/14/2022
1.0.62-beta-4 337 4/14/2022
1.0.62-beta-3 357 4/13/2022
1.0.62-beta-2 341 4/11/2022
1.0.62-beta 342 4/11/2022
1.0.61-preview 387 4/7/2022
1.0.61-beta 348 4/7/2022
1.0.60-preview 372 4/6/2022
1.0.59-preview 357 4/6/2022
1.0.59-beta 371 4/6/2022
1.0.58-beta-6 332 4/6/2022
1.0.58-beta-5 356 4/5/2022
1.0.58-beta-4 344 4/5/2022
1.0.58-beta-3 313 4/5/2022
1.0.58-beta-2 349 4/5/2022
1.0.58-beta 350 4/5/2022
1.0.56-preview 356 4/1/2022
1.0.56-beta-9 350 3/28/2022
1.0.56-beta-8 350 3/28/2022
1.0.56-beta-7 334 3/28/2022
1.0.56-beta-6 368 3/28/2022
1.0.56-beta-5 320 3/25/2022
1.0.56-beta-4 335 3/24/2022
1.0.56-beta-3 350 3/22/2022
1.0.56-beta-2 341 3/22/2022
1.0.56-beta-14 331 3/29/2022
1.0.56-beta-13 367 3/28/2022
1.0.56-beta-12 328 3/28/2022
1.0.56-beta-11 355 3/28/2022
1.0.56-beta-10 351 3/28/2022
1.0.56-beta 345 3/22/2022
1.0.55-preview 366 3/22/2022
1.0.54-preview 361 3/16/2022
1.0.53-preview 339 3/16/2022
1.0.52-preview 370 3/16/2022
1.0.51-preview 340 3/15/2022
1.0.50-preview 360 3/9/2022
1.0.49-preview 340 3/3/2022
1.0.48-preview 335 2/23/2022
1.0.47-preview 374 2/21/2022
1.0.46-preview 470 2/21/2022
1.0.45-preview 321 2/18/2022
1.0.43-preview 360 2/16/2022
1.0.42-preview 400 2/10/2022
1.0.41-preview 355 2/10/2022
1.0.40-preview 348 2/10/2022
1.0.39-preview 364 2/7/2022
1.0.38-preview 372 2/4/2022
1.0.37-preview 348 2/4/2022
1.0.36-preview 392 1/25/2022
1.0.35-preview 362 1/25/2022
1.0.34-preview 338 1/25/2022
1.0.33-preview 358 1/13/2022
1.0.32-preview 406 1/13/2022
1.0.31-preview 364 1/13/2022
1.0.30-preview 358 1/13/2022
1.0.29-preview 349 1/13/2022
1.0.28-preview 355 1/12/2022
1.0.27-preview 342 1/12/2022
1.0.26-preview 374 1/12/2022
1.0.25-preview 389 1/10/2022
1.0.24-preview 362 1/6/2022
1.0.23-preview 387 1/4/2022
1.0.22-preview 329 12/15/2021
1.0.21-preview 441 12/14/2021
1.0.20-preview 444 12/14/2021
1.0.19-preview 385 12/10/2021
1.0.18-preview 409 12/9/2021
1.0.17-preview 609 12/9/2021
1.0.16-preview 356 12/9/2021
1.0.15-preview 386 12/9/2021
1.0.14-preview 410 12/9/2021
1.0.13-preview 394 12/9/2021
1.0.12-preview 375 12/9/2021
1.0.10-preview 366 12/8/2021
1.0.9-preview 407 12/7/2021
1.0.8-preview 354 12/7/2021
1.0.7-preview 380 12/7/2021
1.0.6-preview 386 12/7/2021
1.0.4-preview 360 12/3/2021
1.0.3-preview 344 12/3/2021
1.0.2-preview 361 12/3/2021
1.0.1-preview 390 12/2/2021
1.0.0-preview 394 12/2/2021