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.277 4 12/6/2025
2023.2.276 612 12/2/2025
2023.2.275 633 11/5/2025
2023.2.274 202 11/3/2025
2023.2.273 195 10/31/2025
2023.2.272 202 10/30/2025
2023.2.271 414 10/29/2025
2023.2.270 432 10/14/2025
2023.2.269 230 10/14/2025
2023.2.268 303 10/13/2025
2023.2.267 161 10/11/2025
2023.2.266 193 10/8/2025
2023.2.265 185 10/8/2025
2023.2.264 196 10/7/2025
2023.2.263 202 10/7/2025
2023.2.262 199 10/7/2025
2023.2.261 184 10/7/2025
2023.2.260 189 10/6/2025
2023.2.259 191 10/3/2025
2023.2.258 149 10/3/2025
2023.2.257 203 10/3/2025
2023.2.256 204 10/3/2025
2023.2.255 162 10/3/2025
2023.2.254 222 10/2/2025
2023.2.253 190 10/2/2025
2023.2.252 205 10/1/2025
2023.2.251 626 10/1/2025
2023.2.250 241 10/1/2025
2023.2.249 277 9/30/2025
2023.2.248 203 9/30/2025
2023.2.247 197 9/30/2025
2023.2.246 240 9/30/2025
2023.2.245 204 9/30/2025
2023.2.244 191 9/30/2025
2023.2.243 205 9/30/2025
2023.2.242 223 9/30/2025
2023.2.241 200 9/29/2025
2023.2.240 200 9/29/2025
2023.2.239 210 9/29/2025
2023.2.238 222 9/29/2025
2023.2.237 583 9/29/2025
2023.2.236 833 9/29/2025
2023.2.235 238 9/28/2025
2023.2.234 252 9/28/2025
2023.2.233 172 9/28/2025
2023.2.232 164 9/28/2025
2023.2.231 176 9/28/2025
2023.2.230 176 9/28/2025
2023.2.229 170 9/28/2025
2023.2.228 184 9/28/2025
2023.2.227 125 9/27/2025
2023.2.226 136 9/27/2025
2023.2.225 153 9/27/2025
2023.2.224 138 9/27/2025
2023.2.223 133 9/27/2025
2023.2.222 139 9/27/2025
2023.2.221 138 9/27/2025
2023.2.220 123 9/27/2025
2023.2.219 156 9/26/2025
2023.2.218 162 9/26/2025
2023.2.217 146 9/26/2025
2023.2.216 182 9/26/2025
2023.2.215 173 9/26/2025
2023.2.214 165 9/26/2025
2023.2.213 206 9/25/2025
2023.2.212 206 9/25/2025
2023.2.211 206 9/24/2025
2023.2.210 202 9/24/2025
2023.2.209 201 9/24/2025
2023.2.208 207 9/24/2025
2023.2.207 212 9/23/2025
2023.2.206 206 9/23/2025
2023.2.205 241 9/22/2025
2023.2.204 210 9/22/2025
2023.2.203 228 9/22/2025
2023.2.202 235 9/22/2025
2023.2.201 254 9/21/2025
2023.2.200 233 9/21/2025
2023.2.199 188 9/21/2025
2023.2.198 234 9/20/2025
2023.2.197 201 9/20/2025
2023.2.196 220 9/20/2025
2023.2.195 252 9/19/2025
2023.2.194 271 9/19/2025
2023.2.193 261 9/19/2025
2023.2.192 276 9/19/2025
2023.2.191 336 9/18/2025
2023.2.190 325 9/18/2025
2023.2.189 322 9/17/2025
2023.2.188 309 9/17/2025
2023.2.187 332 9/17/2025
2023.2.186 310 9/16/2025
2023.2.185 319 9/16/2025
2023.2.184 313 9/15/2025
2023.2.183 314 9/15/2025
2023.2.182 267 9/15/2025
2023.2.181 276 9/15/2025
2023.2.180 254 9/15/2025
2023.2.179 186 9/10/2025
2023.2.178 467 9/2/2025
2023.2.177 179 9/2/2025
2023.2.176 225 9/2/2025
2023.2.175 193 9/2/2025
2023.2.174 185 9/2/2025
2023.2.173 213 9/1/2025
2023.2.172 191 9/1/2025
2023.2.171 136 7/19/2025
2023.2.170 491 5/18/2025
2023.2.169 1,316 5/16/2025
2023.2.168 290 5/8/2025
2023.2.167 269 4/28/2025
2023.2.166 323 4/23/2025
2023.2.165 215 4/13/2025
2023.2.164 356 4/12/2025
2023.2.163 221 4/12/2025
2023.2.162 496 3/28/2025
2023.2.161 203 3/28/2025
2023.2.160 837 3/14/2025
2023.2.159 680 3/1/2025
2023.2.158 198 2/27/2025
2023.2.157 1,083 2/10/2025
2023.2.156 525 2/5/2025
2023.2.155 174 2/3/2025
2023.2.154 210 1/10/2025
2023.2.153 249 1/10/2025
2023.2.152 1,125 12/12/2024
2023.2.151 181 11/22/2024
2023.2.150 390 11/22/2024
2023.2.149 195 11/21/2024
2023.2.148 205 11/20/2024
2023.2.147 632 11/19/2024
2023.2.146 203 11/15/2024
2023.2.145 199 11/12/2024
2023.2.144 223 11/12/2024
2023.2.143 198 11/11/2024
2023.2.142 527 11/7/2024
2023.2.141 380 11/7/2024
2023.2.140 2,319 11/6/2024
2023.2.139 374 11/6/2024
2023.2.138 197 11/5/2024
2023.2.137 496 10/24/2024
2023.2.136 3,143 10/14/2024
2023.2.135 1,000 10/4/2024
2023.2.134 244 9/29/2024
2023.2.133 201 9/25/2024
2023.2.132 285 9/24/2024
2023.2.131 177 9/24/2024
2023.2.130 380 9/11/2024
2023.2.129 2,463 9/11/2024
2023.2.128 220 9/11/2024
2023.2.127 195 9/10/2024
2023.2.126 359 9/9/2024
2023.2.125 214 9/9/2024
2023.2.124 469 9/6/2024
2023.2.123 251 8/29/2024
2023.2.122 1,181 8/28/2024
2023.2.121 185 8/27/2024
2023.2.120 194 8/27/2024
2023.2.119 491 8/27/2024
2023.2.118 200 8/27/2024
2023.2.117 239 8/27/2024
2023.2.116 557 8/9/2024
2023.2.115 374 8/5/2024
2023.2.114 200 8/5/2024
2023.2.113 405 7/25/2024
2023.2.112 340 7/12/2024
2023.2.111 2,327 7/12/2024
2023.2.110 533 7/10/2024
2023.2.109 1,964 6/10/2024
2023.2.108 399 5/30/2024
2023.2.107 234 5/28/2024
2023.2.106 513 5/27/2024
2023.2.105 188 5/24/2024
2023.2.104 228 5/23/2024
2023.2.103 203 5/23/2024
2023.2.102 279 5/23/2024
2023.2.101 191 5/23/2024
2023.2.100 221 5/22/2024
2023.2.99 208 5/22/2024
2023.2.98 412 5/22/2024
2023.2.97 186 5/22/2024
2023.2.96 242 5/22/2024
2023.2.95 224 5/21/2024
2023.2.94 189 5/21/2024
2023.2.93 351 5/19/2024
2023.2.92 215 5/19/2024
2023.2.91 251 5/18/2024
2023.2.90 476 5/15/2024
2023.2.89 270 5/15/2024
2023.2.88 213 5/15/2024
2023.2.87 201 5/13/2024
2023.2.86 1,066 4/29/2024
2023.2.85 516 4/23/2024
2023.2.84 806 4/2/2024
2023.2.83 4,311 3/28/2024
2023.2.82 215 3/26/2024
2023.2.81 190 3/23/2024
2023.2.80 473 3/22/2024
2023.2.79 218 3/13/2024
2023.2.78 603 2/12/2024
2023.2.77 261 1/10/2024
2023.2.76 977 1/8/2024
2023.2.75 379 1/8/2024
2023.2.74 232 1/5/2024
2023.2.73 211 1/5/2024
2023.2.72 208 1/5/2024
2023.2.71 542 1/3/2024
2023.2.70 3,453 1/2/2024
2023.2.69 196 12/22/2023
2023.2.68 571 12/21/2023
2023.2.67 213 12/19/2023
2023.2.66 215 12/18/2023
2023.2.65 216 12/18/2023
2023.2.64 918 12/12/2023
2023.2.63 304 12/1/2023
2023.2.62 550 12/1/2023
2023.2.61 271 11/30/2023
2023.2.60 222 11/30/2023
2023.2.59 202 11/30/2023
2023.2.58 452 11/13/2023
2023.2.57 548 10/25/2023
2023.2.56 1,318 10/23/2023
2023.2.55 231 10/20/2023
2023.2.54 232 10/20/2023
2023.2.53 495 10/19/2023
2023.2.52 338 10/18/2023
2023.2.51 199 10/18/2023
2023.2.50 275 10/17/2023
2023.2.49 1,291 10/12/2023
2023.2.48 402 10/12/2023
2023.2.47 393 10/11/2023
2023.2.46 220 10/11/2023
2023.2.45 391 10/11/2023
2023.2.44 246 10/11/2023
2023.2.43 368 9/25/2023
2023.2.42 256 9/20/2023
2023.2.41 2,204 9/11/2023
2023.2.40 496 8/30/2023
2023.2.39 459 8/25/2023
2023.2.38 463 8/22/2023
2023.2.37 359 8/21/2023
2023.2.36 2,383 8/18/2023
2023.2.35 279 8/18/2023
2023.2.34 279 8/9/2023
2023.2.33 308 7/29/2023
2023.2.32 1,182 7/26/2023
2023.2.31 263 7/25/2023
2023.2.30 308 7/25/2023
2023.2.29 349 7/23/2023
2023.2.28 286 7/23/2023
2023.2.27 306 7/21/2023
2023.2.26 517 7/19/2023
2023.2.25 313 7/19/2023
2023.2.24 1,444 6/27/2023
2023.2.23 418 6/26/2023
2023.2.22 535 6/25/2023
2023.2.21 277 6/24/2023
2023.2.20 299 6/23/2023
2023.2.19 290 6/23/2023
2023.2.18 301 6/23/2023
2023.2.17 300 6/22/2023
2023.2.16 388 6/22/2023
2023.2.15 310 6/22/2023
2023.2.14 318 6/21/2023
2023.2.13 314 6/16/2023
2023.2.12 304 6/15/2023
2023.2.11 734 6/13/2023
2023.2.10 291 6/12/2023
2023.2.9 307 6/12/2023
2023.2.8 302 6/12/2023
2023.2.7 400 6/10/2023
2023.2.6-preview 276 6/10/2023
2023.2.5-preview 224 6/9/2023
2023.2.4-preview 332 6/9/2023
2023.2.3-preview 279 6/7/2023
2023.2.2-preview 302 6/2/2023
2023.2.1-preview 287 6/2/2023
2023.1.28-preview 175 9/5/2024
2023.1.27-preview 161 9/5/2024
2023.1.26-preview 213 9/4/2024
2023.1.25-preview 167 9/4/2024
2023.1.24-preview 152 9/4/2024
2023.1.23-preview 187 9/4/2024
2023.1.22-preview 165 9/3/2024
2023.1.21-preview 177 9/3/2024
2023.1.20-preview 194 9/3/2024
2023.1.19-preview 177 9/2/2024
2023.1.18-preview 193 9/2/2024
2023.1.17-preview 165 9/2/2024
2023.1.16-preview 168 8/30/2024
2023.1.15-preview 194 8/29/2024
2023.1.14-preview 313 5/24/2023
2023.1.13-preview 985 5/24/2023
2023.1.12-preview 288 5/23/2023
2023.1.11-preview 261 5/23/2023
2023.1.10-preview 245 5/17/2023
2023.1.9-preview 294 5/17/2023
2023.1.8-preview 230 5/15/2023
2023.1.7-preview 525 5/10/2023
2023.1.6-preview 336 4/27/2023
2023.1.5-preview 312 4/26/2023
2023.1.4-preview 249 4/26/2023
2023.1.3-preview 347 4/21/2023
2023.1.2-preview 275 4/21/2023
2023.1.1-preview 262 4/21/2023
2023.1.0-preview 249 4/21/2023
2023.0.150 303 5/29/2023
2023.0.149 597 5/24/2023
2023.0.148 333 5/23/2023
2023.0.147 351 5/17/2023
2023.0.146 384 5/17/2023
2023.0.145 297 5/9/2023
2023.0.144 540 5/2/2023
2023.0.143 536 5/2/2023
1.0.142-preview 279 4/24/2023
1.0.141-preview 348 4/5/2023
1.0.140-preview 370 4/4/2023
1.0.139-preview 358 3/30/2023
1.0.138-preview 331 3/30/2023
1.0.137-preview 247 3/30/2023
1.0.136-preview 267 3/30/2023
1.0.135-preview 855 3/30/2023
1.0.134-preview 425 3/1/2023
1.0.133-preview 288 3/1/2023
1.0.132-preview 687 2/27/2023
1.0.131-preview 521 2/24/2023
1.0.130-preview 981 2/22/2023
1.0.129-preview 271 2/22/2023
1.0.128-preview 319 2/21/2023
1.0.127-preview 261 2/17/2023
1.0.126-preview 759 2/16/2023
1.0.125-preview 300 2/16/2023
1.0.124-preview 274 2/15/2023
1.0.123-preview 279 2/15/2023
1.0.122-preview 275 2/10/2023
1.0.121-preview 240 2/10/2023
1.0.120-preview 250 2/10/2023
1.0.119-preview 317 2/9/2023
1.0.118-preview 284 2/8/2023
1.0.117-preview 307 1/30/2023
1.0.116-preview 277 1/26/2023
1.0.115-preview 277 1/26/2023
1.0.114-preview 938 1/16/2023
1.0.113-preview 329 1/13/2023
1.0.112-preview 474 1/8/2023
1.0.111-preview 582 1/5/2023
1.0.110-preview 789 12/18/2022
1.0.109-preview 307 12/15/2022
1.0.108-preview 299 12/13/2022
1.0.107-preview 330 12/9/2022
1.0.107-alpha.2 211 12/9/2022
1.0.107-alpha.1 199 12/9/2022
1.0.106-preview 322 12/8/2022
1.0.105-preview 283 12/8/2022
1.0.105-alpha.2 235 12/8/2022
1.0.105-alpha.1 208 12/6/2022
1.0.104-preview 337 12/5/2022
1.0.103-preview 412 12/2/2022
1.0.102-preview 571 11/18/2022
1.0.101-preview 1,306 11/3/2022
1.0.101-alpha.3 226 11/3/2022
1.0.101-alpha.2 256 11/2/2022
1.0.101-alpha.1 201 11/2/2022
1.0.100-preview 1,146 10/28/2022
1.0.99-preview 541 10/27/2022
1.0.99-alpha.3 226 10/27/2022
1.0.99-alpha.2 229 10/26/2022
1.0.99-alpha.1 207 10/26/2022
1.0.98-preview 371 10/25/2022
1.0.97-preview 582 10/20/2022
1.0.97-alpha.2 258 10/19/2022
1.0.97-alpha.1 255 10/19/2022
1.0.96-preview 532 10/7/2022
1.0.95-preview 288 10/4/2022
1.0.94-preview 702 9/29/2022
1.0.93-preview 315 9/29/2022
1.0.92-preview 311 9/27/2022
1.0.91-preview 388 9/27/2022
1.0.90-preview 335 9/27/2022
1.0.90-alpha.1 237 9/26/2022
1.0.89-preview 547 9/11/2022
1.0.87-preview 773 9/6/2022
1.0.86-preview 510 9/5/2022
1.0.86-alpha.1 213 9/2/2022
1.0.85-preview 465 8/2/2022
1.0.84-preview 479 7/29/2022
1.0.83-preview 551 7/28/2022
1.0.83-alpha.3 252 7/28/2022
1.0.83-alpha.2 239 7/28/2022
1.0.83-alpha.1 252 7/28/2022
1.0.82-preview 771 7/27/2022
1.0.82-beta.3 279 7/27/2022
1.0.82-beta.2 279 7/26/2022
1.0.82-beta 326 7/26/2022
1.0.82-alpha.1 227 7/25/2022
1.0.81-preview 374 7/22/2022
1.0.80-preview 353 7/20/2022
1.0.80-alpha.3 263 7/20/2022
1.0.80-alpha.2 236 7/20/2022
1.0.80-alpha 327 7/20/2022
1.0.79-preview 444 7/19/2022
1.0.79-beta 307 7/15/2022
1.0.79-alpha.1 352 7/2/2022
1.0.78-preview 421 7/12/2022
1.0.78-alpha.1 272 7/2/2022
1.0.77-preview 391 6/24/2022
1.0.76-preview 359 6/22/2022
1.0.75-preview 406 6/21/2022
1.0.74-preview 327 6/18/2022
1.0.73-preview 274 6/16/2022
1.0.72-preview 317 6/15/2022
1.0.71-preview 342 6/10/2022
1.0.70-preview 978 6/6/2022
1.0.70-beta 350 6/3/2022
1.0.69-preview 351 5/24/2022
1.0.68-preview 455 5/23/2022
1.0.68-beta-4 295 5/23/2022
1.0.68-beta-3 343 5/16/2022
1.0.68-beta-2 316 5/16/2022
1.0.68-beta 324 5/12/2022
1.0.67-preview 414 5/11/2022
1.0.67-beta-4 308 5/11/2022
1.0.67-beta-3 326 5/10/2022
1.0.67-beta-2 297 5/10/2022
1.0.67-beta 315 5/10/2022
1.0.66-preview 317 5/9/2022
1.0.65-preview 319 5/4/2022
1.0.65-beta 315 4/29/2022
1.0.64-preview 326 4/26/2022
1.0.63-preview 332 4/22/2022
1.0.63-beta-6 350 4/21/2022
1.0.63-beta-5 308 4/21/2022
1.0.63-beta-4 338 4/21/2022
1.0.63-beta-3 344 4/20/2022
1.0.63-beta-2 325 4/20/2022
1.0.63-beta 317 4/19/2022
1.0.62-preview 354 4/15/2022
1.0.62-beta-6 303 4/14/2022
1.0.62-beta-5 317 4/14/2022
1.0.62-beta-4 325 4/14/2022
1.0.62-beta-3 343 4/13/2022
1.0.62-beta-2 328 4/11/2022
1.0.62-beta 328 4/11/2022
1.0.61-preview 373 4/7/2022
1.0.61-beta 337 4/7/2022
1.0.60-preview 357 4/6/2022
1.0.59-preview 345 4/6/2022
1.0.59-beta 359 4/6/2022
1.0.58-beta-6 316 4/6/2022
1.0.58-beta-5 340 4/5/2022
1.0.58-beta-4 331 4/5/2022
1.0.58-beta-3 299 4/5/2022
1.0.58-beta-2 335 4/5/2022
1.0.58-beta 334 4/5/2022
1.0.56-preview 345 4/1/2022
1.0.56-beta-9 336 3/28/2022
1.0.56-beta-8 332 3/28/2022
1.0.56-beta-7 318 3/28/2022
1.0.56-beta-6 358 3/28/2022
1.0.56-beta-5 304 3/25/2022
1.0.56-beta-4 322 3/24/2022
1.0.56-beta-3 335 3/22/2022
1.0.56-beta-2 328 3/22/2022
1.0.56-beta-14 318 3/29/2022
1.0.56-beta-13 352 3/28/2022
1.0.56-beta-12 312 3/28/2022
1.0.56-beta-11 341 3/28/2022
1.0.56-beta-10 333 3/28/2022
1.0.56-beta 330 3/22/2022
1.0.55-preview 356 3/22/2022
1.0.54-preview 350 3/16/2022
1.0.53-preview 329 3/16/2022
1.0.52-preview 356 3/16/2022
1.0.51-preview 328 3/15/2022
1.0.50-preview 347 3/9/2022
1.0.49-preview 329 3/3/2022
1.0.48-preview 324 2/23/2022
1.0.47-preview 359 2/21/2022
1.0.46-preview 455 2/21/2022
1.0.45-preview 308 2/18/2022
1.0.43-preview 347 2/16/2022
1.0.42-preview 384 2/10/2022
1.0.41-preview 339 2/10/2022
1.0.40-preview 330 2/10/2022
1.0.39-preview 352 2/7/2022
1.0.38-preview 354 2/4/2022
1.0.37-preview 336 2/4/2022
1.0.36-preview 376 1/25/2022
1.0.35-preview 349 1/25/2022
1.0.34-preview 325 1/25/2022
1.0.33-preview 342 1/13/2022
1.0.32-preview 392 1/13/2022
1.0.31-preview 349 1/13/2022
1.0.30-preview 347 1/13/2022
1.0.29-preview 339 1/13/2022
1.0.28-preview 341 1/12/2022
1.0.27-preview 326 1/12/2022
1.0.26-preview 358 1/12/2022
1.0.25-preview 373 1/10/2022
1.0.24-preview 349 1/6/2022
1.0.23-preview 375 1/4/2022
1.0.22-preview 314 12/15/2021
1.0.21-preview 427 12/14/2021
1.0.20-preview 429 12/14/2021
1.0.19-preview 373 12/10/2021
1.0.18-preview 396 12/9/2021
1.0.17-preview 595 12/9/2021
1.0.16-preview 341 12/9/2021
1.0.15-preview 377 12/9/2021
1.0.14-preview 400 12/9/2021
1.0.13-preview 376 12/9/2021
1.0.12-preview 362 12/9/2021
1.0.10-preview 357 12/8/2021
1.0.9-preview 389 12/7/2021
1.0.8-preview 338 12/7/2021
1.0.7-preview 366 12/7/2021
1.0.6-preview 373 12/7/2021
1.0.4-preview 347 12/3/2021
1.0.3-preview 332 12/3/2021
1.0.2-preview 350 12/3/2021
1.0.1-preview 377 12/2/2021
1.0.0-preview 380 12/2/2021