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.
#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.170 402 5/18/2025
2023.2.169 1,160 5/16/2025
2023.2.168 177 5/8/2025
2023.2.167 193 4/28/2025
2023.2.166 216 4/23/2025
2023.2.165 171 4/13/2025
2023.2.164 289 4/12/2025
2023.2.163 160 4/12/2025
2023.2.162 407 3/28/2025
2023.2.161 146 3/28/2025
2023.2.160 667 3/14/2025
2023.2.159 568 3/1/2025
2023.2.158 141 2/27/2025
2023.2.157 853 2/10/2025
2023.2.156 471 2/5/2025
2023.2.155 114 2/3/2025
2023.2.154 161 1/10/2025
2023.2.153 190 1/10/2025
2023.2.152 1,020 12/12/2024
2023.2.151 141 11/22/2024
2023.2.150 344 11/22/2024
2023.2.149 130 11/21/2024
2023.2.148 131 11/20/2024
2023.2.147 568 11/19/2024
2023.2.146 134 11/15/2024
2023.2.145 135 11/12/2024
2023.2.144 145 11/12/2024
2023.2.143 140 11/11/2024
2023.2.142 450 11/7/2024
2023.2.141 305 11/7/2024
2023.2.140 2,274 11/6/2024
2023.2.139 293 11/6/2024
2023.2.138 134 11/5/2024
2023.2.137 418 10/24/2024
2023.2.136 3,072 10/14/2024
2023.2.135 944 10/4/2024
2023.2.134 189 9/29/2024
2023.2.133 137 9/25/2024
2023.2.132 237 9/24/2024
2023.2.131 133 9/24/2024
2023.2.130 299 9/11/2024
2023.2.129 2,381 9/11/2024
2023.2.128 146 9/11/2024
2023.2.127 150 9/10/2024
2023.2.126 303 9/9/2024
2023.2.125 158 9/9/2024
2023.2.124 413 9/6/2024
2023.2.123 183 8/29/2024
2023.2.122 1,117 8/28/2024
2023.2.121 141 8/27/2024
2023.2.120 152 8/27/2024
2023.2.119 435 8/27/2024
2023.2.118 143 8/27/2024
2023.2.117 182 8/27/2024
2023.2.116 503 8/9/2024
2023.2.115 329 8/5/2024
2023.2.114 109 8/5/2024
2023.2.113 319 7/25/2024
2023.2.112 300 7/12/2024
2023.2.111 2,277 7/12/2024
2023.2.110 465 7/10/2024
2023.2.109 1,897 6/10/2024
2023.2.108 357 5/30/2024
2023.2.107 184 5/28/2024
2023.2.106 441 5/27/2024
2023.2.105 147 5/24/2024
2023.2.104 160 5/23/2024
2023.2.103 153 5/23/2024
2023.2.102 210 5/23/2024
2023.2.101 137 5/23/2024
2023.2.100 162 5/22/2024
2023.2.99 148 5/22/2024
2023.2.98 372 5/22/2024
2023.2.97 147 5/22/2024
2023.2.96 158 5/22/2024
2023.2.95 142 5/21/2024
2023.2.94 140 5/21/2024
2023.2.93 315 5/19/2024
2023.2.92 141 5/19/2024
2023.2.91 168 5/18/2024
2023.2.90 412 5/15/2024
2023.2.89 206 5/15/2024
2023.2.88 138 5/15/2024
2023.2.87 131 5/13/2024
2023.2.86 887 4/29/2024
2023.2.85 461 4/23/2024
2023.2.84 750 4/2/2024
2023.2.83 4,238 3/28/2024
2023.2.82 155 3/26/2024
2023.2.81 142 3/23/2024
2023.2.80 410 3/22/2024
2023.2.79 155 3/13/2024
2023.2.78 552 2/12/2024
2023.2.77 193 1/10/2024
2023.2.76 928 1/8/2024
2023.2.75 339 1/8/2024
2023.2.74 164 1/5/2024
2023.2.73 153 1/5/2024
2023.2.72 161 1/5/2024
2023.2.71 482 1/3/2024
2023.2.70 3,408 1/2/2024
2023.2.69 166 12/22/2023
2023.2.68 524 12/21/2023
2023.2.67 168 12/19/2023
2023.2.66 152 12/18/2023
2023.2.65 160 12/18/2023
2023.2.64 863 12/12/2023
2023.2.63 278 12/1/2023
2023.2.62 526 12/1/2023
2023.2.61 236 11/30/2023
2023.2.60 181 11/30/2023
2023.2.59 145 11/30/2023
2023.2.58 402 11/13/2023
2023.2.57 504 10/25/2023
2023.2.56 1,265 10/23/2023
2023.2.55 164 10/20/2023
2023.2.54 195 10/20/2023
2023.2.53 441 10/19/2023
2023.2.52 269 10/18/2023
2023.2.51 167 10/18/2023
2023.2.50 215 10/17/2023
2023.2.49 1,231 10/12/2023
2023.2.48 357 10/12/2023
2023.2.47 353 10/11/2023
2023.2.46 159 10/11/2023
2023.2.45 349 10/11/2023
2023.2.44 192 10/11/2023
2023.2.43 294 9/25/2023
2023.2.42 182 9/20/2023
2023.2.41 2,137 9/11/2023
2023.2.40 443 8/30/2023
2023.2.39 377 8/25/2023
2023.2.38 418 8/22/2023
2023.2.37 304 8/21/2023
2023.2.36 2,311 8/18/2023
2023.2.35 202 8/18/2023
2023.2.34 216 8/9/2023
2023.2.33 247 7/29/2023
2023.2.32 1,138 7/26/2023
2023.2.31 206 7/25/2023
2023.2.30 242 7/25/2023
2023.2.29 280 7/23/2023
2023.2.28 230 7/23/2023
2023.2.27 257 7/21/2023
2023.2.26 460 7/19/2023
2023.2.25 225 7/19/2023
2023.2.24 1,359 6/27/2023
2023.2.23 358 6/26/2023
2023.2.22 481 6/25/2023
2023.2.21 223 6/24/2023
2023.2.20 206 6/23/2023
2023.2.19 215 6/23/2023
2023.2.18 225 6/23/2023
2023.2.17 249 6/22/2023
2023.2.16 319 6/22/2023
2023.2.15 220 6/22/2023
2023.2.14 247 6/21/2023
2023.2.13 247 6/16/2023
2023.2.12 220 6/15/2023
2023.2.11 651 6/13/2023
2023.2.10 227 6/12/2023
2023.2.9 248 6/12/2023
2023.2.8 241 6/12/2023
2023.2.7 323 6/10/2023
2023.2.6-preview 207 6/10/2023
2023.2.5-preview 167 6/9/2023
2023.2.4-preview 261 6/9/2023
2023.2.3-preview 194 6/7/2023
2023.2.2-preview 235 6/2/2023
2023.2.1-preview 209 6/2/2023
2023.1.28-preview 132 9/5/2024
2023.1.27-preview 102 9/5/2024
2023.1.26-preview 154 9/4/2024
2023.1.25-preview 120 9/4/2024
2023.1.24-preview 104 9/4/2024
2023.1.23-preview 119 9/4/2024
2023.1.22-preview 128 9/3/2024
2023.1.21-preview 130 9/3/2024
2023.1.20-preview 134 9/3/2024
2023.1.19-preview 126 9/2/2024
2023.1.18-preview 123 9/2/2024
2023.1.17-preview 112 9/2/2024
2023.1.16-preview 123 8/30/2024
2023.1.15-preview 132 8/29/2024
2023.1.14-preview 223 5/24/2023
2023.1.13-preview 910 5/24/2023
2023.1.12-preview 221 5/23/2023
2023.1.11-preview 191 5/23/2023
2023.1.10-preview 168 5/17/2023
2023.1.9-preview 199 5/17/2023
2023.1.8-preview 162 5/15/2023
2023.1.7-preview 457 5/10/2023
2023.1.6-preview 268 4/27/2023
2023.1.5-preview 236 4/26/2023
2023.1.4-preview 173 4/26/2023
2023.1.3-preview 284 4/21/2023
2023.1.2-preview 182 4/21/2023
2023.1.1-preview 190 4/21/2023
2023.1.0-preview 186 4/21/2023
2023.0.150 237 5/29/2023
2023.0.149 527 5/24/2023
2023.0.148 246 5/23/2023
2023.0.147 282 5/17/2023
2023.0.146 312 5/17/2023
2023.0.145 225 5/9/2023
2023.0.144 470 5/2/2023
2023.0.143 379 5/2/2023
1.0.142-preview 209 4/24/2023
1.0.141-preview 274 4/5/2023
1.0.140-preview 282 4/4/2023
1.0.139-preview 284 3/30/2023
1.0.138-preview 260 3/30/2023
1.0.137-preview 172 3/30/2023
1.0.136-preview 183 3/30/2023
1.0.135-preview 797 3/30/2023
1.0.134-preview 339 3/1/2023
1.0.133-preview 191 3/1/2023
1.0.132-preview 595 2/27/2023
1.0.131-preview 451 2/24/2023
1.0.130-preview 899 2/22/2023
1.0.129-preview 188 2/22/2023
1.0.128-preview 248 2/21/2023
1.0.127-preview 187 2/17/2023
1.0.126-preview 660 2/16/2023
1.0.125-preview 228 2/16/2023
1.0.124-preview 198 2/15/2023
1.0.123-preview 174 2/15/2023
1.0.122-preview 214 2/10/2023
1.0.121-preview 169 2/10/2023
1.0.120-preview 172 2/10/2023
1.0.119-preview 226 2/9/2023
1.0.118-preview 221 2/8/2023
1.0.117-preview 229 1/30/2023
1.0.116-preview 184 1/26/2023
1.0.115-preview 184 1/26/2023
1.0.114-preview 827 1/16/2023
1.0.113-preview 256 1/13/2023
1.0.112-preview 396 1/8/2023
1.0.111-preview 512 1/5/2023
1.0.110-preview 717 12/18/2022
1.0.109-preview 235 12/15/2022
1.0.108-preview 227 12/13/2022
1.0.107-preview 244 12/9/2022
1.0.107-alpha.2 159 12/9/2022
1.0.107-alpha.1 151 12/9/2022
1.0.106-preview 246 12/8/2022
1.0.105-preview 197 12/8/2022
1.0.105-alpha.2 152 12/8/2022
1.0.105-alpha.1 150 12/6/2022
1.0.104-preview 262 12/5/2022
1.0.103-preview 320 12/2/2022
1.0.102-preview 493 11/18/2022
1.0.101-preview 1,209 11/3/2022
1.0.101-alpha.3 174 11/3/2022
1.0.101-alpha.2 186 11/2/2022
1.0.101-alpha.1 146 11/2/2022
1.0.100-preview 1,054 10/28/2022
1.0.99-preview 449 10/27/2022
1.0.99-alpha.3 156 10/27/2022
1.0.99-alpha.2 176 10/26/2022
1.0.99-alpha.1 151 10/26/2022
1.0.98-preview 295 10/25/2022
1.0.97-preview 500 10/20/2022
1.0.97-alpha.2 208 10/19/2022
1.0.97-alpha.1 198 10/19/2022
1.0.96-preview 454 10/7/2022
1.0.95-preview 213 10/4/2022
1.0.94-preview 605 9/29/2022
1.0.93-preview 214 9/29/2022
1.0.92-preview 247 9/27/2022
1.0.91-preview 307 9/27/2022
1.0.90-preview 257 9/27/2022
1.0.90-alpha.1 177 9/26/2022
1.0.89-preview 478 9/11/2022
1.0.87-preview 698 9/6/2022
1.0.86-preview 447 9/5/2022
1.0.86-alpha.1 158 9/2/2022
1.0.85-preview 380 8/2/2022
1.0.84-preview 399 7/29/2022
1.0.83-preview 472 7/28/2022
1.0.83-alpha.3 176 7/28/2022
1.0.83-alpha.2 176 7/28/2022
1.0.83-alpha.1 176 7/28/2022
1.0.82-preview 669 7/27/2022
1.0.82-beta.3 221 7/27/2022
1.0.82-beta.2 219 7/26/2022
1.0.82-beta 228 7/26/2022
1.0.82-alpha.1 166 7/25/2022
1.0.81-preview 294 7/22/2022
1.0.80-preview 250 7/20/2022
1.0.80-alpha.3 178 7/20/2022
1.0.80-alpha.2 177 7/20/2022
1.0.80-alpha 235 7/20/2022
1.0.79-preview 352 7/19/2022
1.0.79-beta 212 7/15/2022
1.0.79-alpha.1 291 7/2/2022
1.0.78-preview 351 7/12/2022
1.0.78-alpha.1 186 7/2/2022
1.0.77-preview 293 6/24/2022
1.0.76-preview 266 6/22/2022
1.0.75-preview 302 6/21/2022
1.0.74-preview 256 6/18/2022
1.0.73-preview 203 6/16/2022
1.0.72-preview 247 6/15/2022
1.0.71-preview 246 6/10/2022
1.0.70-preview 895 6/6/2022
1.0.70-beta 257 6/3/2022
1.0.69-preview 272 5/24/2022
1.0.68-preview 361 5/23/2022
1.0.68-beta-4 216 5/23/2022
1.0.68-beta-3 239 5/16/2022
1.0.68-beta-2 229 5/16/2022
1.0.68-beta 229 5/12/2022
1.0.67-preview 308 5/11/2022
1.0.67-beta-4 228 5/11/2022
1.0.67-beta-3 249 5/10/2022
1.0.67-beta-2 226 5/10/2022
1.0.67-beta 223 5/10/2022
1.0.66-preview 246 5/9/2022
1.0.65-preview 238 5/4/2022
1.0.65-beta 231 4/29/2022
1.0.64-preview 257 4/26/2022
1.0.63-preview 252 4/22/2022
1.0.63-beta-6 252 4/21/2022
1.0.63-beta-5 230 4/21/2022
1.0.63-beta-4 238 4/21/2022
1.0.63-beta-3 244 4/20/2022
1.0.63-beta-2 247 4/20/2022
1.0.63-beta 249 4/19/2022
1.0.62-preview 250 4/15/2022
1.0.62-beta-6 233 4/14/2022
1.0.62-beta-5 238 4/14/2022
1.0.62-beta-4 238 4/14/2022
1.0.62-beta-3 247 4/13/2022
1.0.62-beta-2 241 4/11/2022
1.0.62-beta 255 4/11/2022
1.0.61-preview 277 4/7/2022
1.0.61-beta 256 4/7/2022
1.0.60-preview 251 4/6/2022
1.0.59-preview 239 4/6/2022
1.0.59-beta 254 4/6/2022
1.0.58-beta-6 236 4/6/2022
1.0.58-beta-5 237 4/5/2022
1.0.58-beta-4 251 4/5/2022
1.0.58-beta-3 218 4/5/2022
1.0.58-beta-2 256 4/5/2022
1.0.58-beta 255 4/5/2022
1.0.56-preview 261 4/1/2022
1.0.56-beta-9 250 3/28/2022
1.0.56-beta-8 244 3/28/2022
1.0.56-beta-7 236 3/28/2022
1.0.56-beta-6 260 3/28/2022
1.0.56-beta-5 230 3/25/2022
1.0.56-beta-4 233 3/24/2022
1.0.56-beta-3 251 3/22/2022
1.0.56-beta-2 237 3/22/2022
1.0.56-beta-14 249 3/29/2022
1.0.56-beta-13 262 3/28/2022
1.0.56-beta-12 234 3/28/2022
1.0.56-beta-11 245 3/28/2022
1.0.56-beta-10 240 3/28/2022
1.0.56-beta 228 3/22/2022
1.0.55-preview 277 3/22/2022
1.0.54-preview 242 3/16/2022
1.0.53-preview 239 3/16/2022
1.0.52-preview 252 3/16/2022
1.0.51-preview 245 3/15/2022
1.0.50-preview 237 3/9/2022
1.0.49-preview 248 3/3/2022
1.0.48-preview 240 2/23/2022
1.0.47-preview 259 2/21/2022
1.0.46-preview 367 2/21/2022
1.0.45-preview 228 2/18/2022
1.0.43-preview 258 2/16/2022
1.0.42-preview 265 2/10/2022
1.0.41-preview 235 2/10/2022
1.0.40-preview 250 2/10/2022
1.0.39-preview 269 2/7/2022
1.0.38-preview 280 2/4/2022
1.0.37-preview 248 2/4/2022
1.0.36-preview 273 1/25/2022
1.0.35-preview 264 1/25/2022
1.0.34-preview 242 1/25/2022
1.0.33-preview 252 1/13/2022
1.0.32-preview 293 1/13/2022
1.0.31-preview 264 1/13/2022
1.0.30-preview 256 1/13/2022
1.0.29-preview 258 1/13/2022
1.0.28-preview 255 1/12/2022
1.0.27-preview 242 1/12/2022
1.0.26-preview 262 1/12/2022
1.0.25-preview 271 1/10/2022
1.0.24-preview 270 1/6/2022
1.0.23-preview 272 1/4/2022
1.0.22-preview 253 12/15/2021
1.0.21-preview 346 12/14/2021
1.0.20-preview 347 12/14/2021
1.0.19-preview 270 12/10/2021
1.0.18-preview 289 12/9/2021
1.0.17-preview 497 12/9/2021
1.0.16-preview 258 12/9/2021
1.0.15-preview 287 12/9/2021
1.0.14-preview 290 12/9/2021
1.0.13-preview 288 12/9/2021
1.0.12-preview 278 12/9/2021
1.0.10-preview 285 12/8/2021
1.0.9-preview 301 12/7/2021
1.0.8-preview 255 12/7/2021
1.0.7-preview 282 12/7/2021
1.0.6-preview 288 12/7/2021
1.0.4-preview 249 12/3/2021
1.0.3-preview 259 12/3/2021
1.0.2-preview 266 12/3/2021
1.0.1-preview 269 12/2/2021
1.0.0-preview 277 12/2/2021