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.295 25 12/31/2025
2023.2.294 30 12/31/2025
2023.2.293 31 12/31/2025
2023.2.292 185 12/23/2025
2023.2.291 160 12/23/2025
2023.2.290 195 12/19/2025
2023.2.289 197 12/19/2025
2023.2.288 251 12/18/2025
2023.2.287 245 12/18/2025
2023.2.286 246 12/18/2025
2023.2.285 258 12/17/2025
2023.2.284 254 12/16/2025
2023.2.283 225 12/15/2025
2023.2.282 219 12/15/2025
2023.2.281 201 12/14/2025
2023.2.280 182 12/14/2025
2023.2.279 148 12/12/2025
2023.2.278 431 12/11/2025
2023.2.277 156 12/6/2025
2023.2.276 892 12/2/2025
2023.2.275 700 11/5/2025
2023.2.274 217 11/3/2025
2023.2.273 213 10/31/2025
2023.2.272 219 10/30/2025
2023.2.271 473 10/29/2025
2023.2.270 451 10/14/2025
2023.2.269 253 10/14/2025
2023.2.268 315 10/13/2025
2023.2.267 176 10/11/2025
2023.2.266 208 10/8/2025
2023.2.265 200 10/8/2025
2023.2.264 209 10/7/2025
2023.2.263 212 10/7/2025
2023.2.262 212 10/7/2025
2023.2.261 198 10/7/2025
2023.2.260 202 10/6/2025
2023.2.259 206 10/3/2025
2023.2.258 161 10/3/2025
2023.2.257 215 10/3/2025
2023.2.256 216 10/3/2025
2023.2.255 173 10/3/2025
2023.2.254 236 10/2/2025
2023.2.253 203 10/2/2025
2023.2.252 219 10/1/2025
2023.2.251 646 10/1/2025
2023.2.250 252 10/1/2025
2023.2.249 287 9/30/2025
2023.2.248 214 9/30/2025
2023.2.247 213 9/30/2025
2023.2.246 251 9/30/2025
2023.2.245 215 9/30/2025
2023.2.244 203 9/30/2025
2023.2.243 216 9/30/2025
2023.2.242 236 9/30/2025
2023.2.241 212 9/29/2025
2023.2.240 216 9/29/2025
2023.2.239 220 9/29/2025
2023.2.238 237 9/29/2025
2023.2.237 594 9/29/2025
2023.2.236 842 9/29/2025
2023.2.235 252 9/28/2025
2023.2.234 263 9/28/2025
2023.2.233 185 9/28/2025
2023.2.232 180 9/28/2025
2023.2.231 187 9/28/2025
2023.2.230 187 9/28/2025
2023.2.229 182 9/28/2025
2023.2.228 197 9/28/2025
2023.2.227 139 9/27/2025
2023.2.226 147 9/27/2025
2023.2.225 171 9/27/2025
2023.2.224 148 9/27/2025
2023.2.223 143 9/27/2025
2023.2.222 155 9/27/2025
2023.2.221 152 9/27/2025
2023.2.220 133 9/27/2025
2023.2.219 169 9/26/2025
2023.2.218 173 9/26/2025
2023.2.217 158 9/26/2025
2023.2.216 195 9/26/2025
2023.2.215 188 9/26/2025
2023.2.214 180 9/26/2025
2023.2.213 217 9/25/2025
2023.2.212 221 9/25/2025
2023.2.211 220 9/24/2025
2023.2.210 213 9/24/2025
2023.2.209 217 9/24/2025
2023.2.208 219 9/24/2025
2023.2.207 228 9/23/2025
2023.2.206 216 9/23/2025
2023.2.205 257 9/22/2025
2023.2.204 225 9/22/2025
2023.2.203 237 9/22/2025
2023.2.202 250 9/22/2025
2023.2.201 269 9/21/2025
2023.2.200 243 9/21/2025
2023.2.199 201 9/21/2025
2023.2.198 244 9/20/2025
2023.2.197 213 9/20/2025
2023.2.196 233 9/20/2025
2023.2.195 266 9/19/2025
2023.2.194 284 9/19/2025
2023.2.193 272 9/19/2025
2023.2.192 287 9/19/2025
2023.2.191 348 9/18/2025
2023.2.190 338 9/18/2025
2023.2.189 333 9/17/2025
2023.2.188 321 9/17/2025
2023.2.187 343 9/17/2025
2023.2.186 321 9/16/2025
2023.2.185 331 9/16/2025
2023.2.184 328 9/15/2025
2023.2.183 325 9/15/2025
2023.2.182 277 9/15/2025
2023.2.181 288 9/15/2025
2023.2.180 267 9/15/2025
2023.2.179 202 9/10/2025
2023.2.178 479 9/2/2025
2023.2.177 190 9/2/2025
2023.2.176 239 9/2/2025
2023.2.175 209 9/2/2025
2023.2.174 194 9/2/2025
2023.2.173 231 9/1/2025
2023.2.172 203 9/1/2025
2023.2.171 150 7/19/2025
2023.2.170 502 5/18/2025
2023.2.169 1,330 5/16/2025
2023.2.168 302 5/8/2025
2023.2.167 279 4/28/2025
2023.2.166 338 4/23/2025
2023.2.165 230 4/13/2025
2023.2.164 367 4/12/2025
2023.2.163 235 4/12/2025
2023.2.162 508 3/28/2025
2023.2.161 215 3/28/2025
2023.2.160 849 3/14/2025
2023.2.159 692 3/1/2025
2023.2.158 212 2/27/2025
2023.2.157 1,119 2/10/2025
2023.2.156 537 2/5/2025
2023.2.155 183 2/3/2025
2023.2.154 221 1/10/2025
2023.2.153 259 1/10/2025
2023.2.152 1,137 12/12/2024
2023.2.151 195 11/22/2024
2023.2.150 401 11/22/2024
2023.2.149 202 11/21/2024
2023.2.148 213 11/20/2024
2023.2.147 644 11/19/2024
2023.2.146 212 11/15/2024
2023.2.145 214 11/12/2024
2023.2.144 234 11/12/2024
2023.2.143 208 11/11/2024
2023.2.142 537 11/7/2024
2023.2.141 391 11/7/2024
2023.2.140 2,331 11/6/2024
2023.2.139 388 11/6/2024
2023.2.138 207 11/5/2024
2023.2.137 507 10/24/2024
2023.2.136 3,155 10/14/2024
2023.2.135 1,010 10/4/2024
2023.2.134 255 9/29/2024
2023.2.133 207 9/25/2024
2023.2.132 297 9/24/2024
2023.2.131 193 9/24/2024
2023.2.130 392 9/11/2024
2023.2.129 2,474 9/11/2024
2023.2.128 230 9/11/2024
2023.2.127 208 9/10/2024
2023.2.126 368 9/9/2024
2023.2.125 224 9/9/2024
2023.2.124 481 9/6/2024
2023.2.123 262 8/29/2024
2023.2.122 1,194 8/28/2024
2023.2.121 194 8/27/2024
2023.2.120 207 8/27/2024
2023.2.119 504 8/27/2024
2023.2.118 209 8/27/2024
2023.2.117 249 8/27/2024
2023.2.116 567 8/9/2024
2023.2.115 385 8/5/2024
2023.2.114 219 8/5/2024
2023.2.113 420 7/25/2024
2023.2.112 353 7/12/2024
2023.2.111 2,339 7/12/2024
2023.2.110 550 7/10/2024
2023.2.109 1,975 6/10/2024
2023.2.108 409 5/30/2024
2023.2.107 244 5/28/2024
2023.2.106 524 5/27/2024
2023.2.105 201 5/24/2024
2023.2.104 241 5/23/2024
2023.2.103 213 5/23/2024
2023.2.102 286 5/23/2024
2023.2.101 201 5/23/2024
2023.2.100 235 5/22/2024
2023.2.99 215 5/22/2024
2023.2.98 422 5/22/2024
2023.2.97 195 5/22/2024
2023.2.96 253 5/22/2024
2023.2.95 235 5/21/2024
2023.2.94 198 5/21/2024
2023.2.93 359 5/19/2024
2023.2.92 226 5/19/2024
2023.2.91 262 5/18/2024
2023.2.90 487 5/15/2024
2023.2.89 280 5/15/2024
2023.2.88 225 5/15/2024
2023.2.87 212 5/13/2024
2023.2.86 1,079 4/29/2024
2023.2.85 528 4/23/2024
2023.2.84 818 4/2/2024
2023.2.83 4,321 3/28/2024
2023.2.82 227 3/26/2024
2023.2.81 200 3/23/2024
2023.2.80 483 3/22/2024
2023.2.79 232 3/13/2024
2023.2.78 619 2/12/2024
2023.2.77 271 1/10/2024
2023.2.76 989 1/8/2024
2023.2.75 390 1/8/2024
2023.2.74 243 1/5/2024
2023.2.73 220 1/5/2024
2023.2.72 223 1/5/2024
2023.2.71 553 1/3/2024
2023.2.70 3,466 1/2/2024
2023.2.69 207 12/22/2023
2023.2.68 580 12/21/2023
2023.2.67 226 12/19/2023
2023.2.66 229 12/18/2023
2023.2.65 232 12/18/2023
2023.2.64 928 12/12/2023
2023.2.63 313 12/1/2023
2023.2.62 553 12/1/2023
2023.2.61 278 11/30/2023
2023.2.60 232 11/30/2023
2023.2.59 205 11/30/2023
2023.2.58 460 11/13/2023
2023.2.57 555 10/25/2023
2023.2.56 1,324 10/23/2023
2023.2.55 236 10/20/2023
2023.2.54 237 10/20/2023
2023.2.53 500 10/19/2023
2023.2.52 344 10/18/2023
2023.2.51 207 10/18/2023
2023.2.50 281 10/17/2023
2023.2.49 1,296 10/12/2023
2023.2.48 409 10/12/2023
2023.2.47 397 10/11/2023
2023.2.46 226 10/11/2023
2023.2.45 397 10/11/2023
2023.2.44 250 10/11/2023
2023.2.43 378 9/25/2023
2023.2.42 265 9/20/2023
2023.2.41 2,206 9/11/2023
2023.2.40 501 8/30/2023
2023.2.39 465 8/25/2023
2023.2.38 470 8/22/2023
2023.2.37 367 8/21/2023
2023.2.36 2,391 8/18/2023
2023.2.35 285 8/18/2023
2023.2.34 290 8/9/2023
2023.2.33 313 7/29/2023
2023.2.32 1,190 7/26/2023
2023.2.31 273 7/25/2023
2023.2.30 316 7/25/2023
2023.2.29 360 7/23/2023
2023.2.28 295 7/23/2023
2023.2.27 315 7/21/2023
2023.2.26 526 7/19/2023
2023.2.25 320 7/19/2023
2023.2.24 1,452 6/27/2023
2023.2.23 422 6/26/2023
2023.2.22 539 6/25/2023
2023.2.21 286 6/24/2023
2023.2.20 305 6/23/2023
2023.2.19 300 6/23/2023
2023.2.18 310 6/23/2023
2023.2.17 302 6/22/2023
2023.2.16 396 6/22/2023
2023.2.15 317 6/22/2023
2023.2.14 322 6/21/2023
2023.2.13 322 6/16/2023
2023.2.12 311 6/15/2023
2023.2.11 740 6/13/2023
2023.2.10 297 6/12/2023
2023.2.9 315 6/12/2023
2023.2.8 308 6/12/2023
2023.2.7 409 6/10/2023
2023.2.6-preview 283 6/10/2023
2023.2.5-preview 232 6/9/2023
2023.2.4-preview 341 6/9/2023
2023.2.3-preview 287 6/7/2023
2023.2.2-preview 313 6/2/2023
2023.2.1-preview 298 6/2/2023
2023.1.28-preview 183 9/5/2024
2023.1.27-preview 164 9/5/2024
2023.1.26-preview 218 9/4/2024
2023.1.25-preview 176 9/4/2024
2023.1.24-preview 157 9/4/2024
2023.1.23-preview 191 9/4/2024
2023.1.22-preview 172 9/3/2024
2023.1.21-preview 183 9/3/2024
2023.1.20-preview 203 9/3/2024
2023.1.19-preview 181 9/2/2024
2023.1.18-preview 197 9/2/2024
2023.1.17-preview 171 9/2/2024
2023.1.16-preview 174 8/30/2024
2023.1.15-preview 199 8/29/2024
2023.1.14-preview 324 5/24/2023
2023.1.13-preview 994 5/24/2023
2023.1.12-preview 296 5/23/2023
2023.1.11-preview 272 5/23/2023
2023.1.10-preview 254 5/17/2023
2023.1.9-preview 303 5/17/2023
2023.1.8-preview 242 5/15/2023
2023.1.7-preview 533 5/10/2023
2023.1.6-preview 347 4/27/2023
2023.1.5-preview 323 4/26/2023
2023.1.4-preview 258 4/26/2023
2023.1.3-preview 357 4/21/2023
2023.1.2-preview 284 4/21/2023
2023.1.1-preview 271 4/21/2023
2023.1.0-preview 258 4/21/2023
2023.0.150 314 5/29/2023
2023.0.149 610 5/24/2023
2023.0.148 344 5/23/2023
2023.0.147 363 5/17/2023
2023.0.146 395 5/17/2023
2023.0.145 306 5/9/2023
2023.0.144 552 5/2/2023
2023.0.143 555 5/2/2023
1.0.142-preview 288 4/24/2023
1.0.141-preview 358 4/5/2023
1.0.140-preview 384 4/4/2023
1.0.139-preview 367 3/30/2023
1.0.138-preview 342 3/30/2023
1.0.137-preview 262 3/30/2023
1.0.136-preview 274 3/30/2023
1.0.135-preview 862 3/30/2023
1.0.134-preview 432 3/1/2023
1.0.133-preview 297 3/1/2023
1.0.132-preview 699 2/27/2023
1.0.131-preview 531 2/24/2023
1.0.130-preview 992 2/22/2023
1.0.129-preview 282 2/22/2023
1.0.128-preview 327 2/21/2023
1.0.127-preview 270 2/17/2023
1.0.126-preview 766 2/16/2023
1.0.125-preview 309 2/16/2023
1.0.124-preview 283 2/15/2023
1.0.123-preview 288 2/15/2023
1.0.122-preview 283 2/10/2023
1.0.121-preview 249 2/10/2023
1.0.120-preview 257 2/10/2023
1.0.119-preview 328 2/9/2023
1.0.118-preview 292 2/8/2023
1.0.117-preview 316 1/30/2023
1.0.116-preview 289 1/26/2023
1.0.115-preview 288 1/26/2023
1.0.114-preview 952 1/16/2023
1.0.113-preview 340 1/13/2023
1.0.112-preview 482 1/8/2023
1.0.111-preview 589 1/5/2023
1.0.110-preview 799 12/18/2022
1.0.109-preview 313 12/15/2022
1.0.108-preview 312 12/13/2022
1.0.107-preview 338 12/9/2022
1.0.107-alpha.2 222 12/9/2022
1.0.107-alpha.1 210 12/9/2022
1.0.106-preview 333 12/8/2022
1.0.105-preview 293 12/8/2022
1.0.105-alpha.2 246 12/8/2022
1.0.105-alpha.1 219 12/6/2022
1.0.104-preview 352 12/5/2022
1.0.103-preview 422 12/2/2022
1.0.102-preview 584 11/18/2022
1.0.101-preview 1,318 11/3/2022
1.0.101-alpha.3 238 11/3/2022
1.0.101-alpha.2 265 11/2/2022
1.0.101-alpha.1 212 11/2/2022
1.0.100-preview 1,152 10/28/2022
1.0.99-preview 552 10/27/2022
1.0.99-alpha.3 236 10/27/2022
1.0.99-alpha.2 240 10/26/2022
1.0.99-alpha.1 217 10/26/2022
1.0.98-preview 381 10/25/2022
1.0.97-preview 595 10/20/2022
1.0.97-alpha.2 266 10/19/2022
1.0.97-alpha.1 268 10/19/2022
1.0.96-preview 539 10/7/2022
1.0.95-preview 299 10/4/2022
1.0.94-preview 712 9/29/2022
1.0.93-preview 329 9/29/2022
1.0.92-preview 326 9/27/2022
1.0.91-preview 397 9/27/2022
1.0.90-preview 350 9/27/2022
1.0.90-alpha.1 245 9/26/2022
1.0.89-preview 556 9/11/2022
1.0.87-preview 780 9/6/2022
1.0.86-preview 520 9/5/2022
1.0.86-alpha.1 226 9/2/2022
1.0.85-preview 480 8/2/2022
1.0.84-preview 487 7/29/2022
1.0.83-preview 567 7/28/2022
1.0.83-alpha.3 262 7/28/2022
1.0.83-alpha.2 252 7/28/2022
1.0.83-alpha.1 264 7/28/2022
1.0.82-preview 783 7/27/2022
1.0.82-beta.3 291 7/27/2022
1.0.82-beta.2 291 7/26/2022
1.0.82-beta 339 7/26/2022
1.0.82-alpha.1 240 7/25/2022
1.0.81-preview 385 7/22/2022
1.0.80-preview 364 7/20/2022
1.0.80-alpha.3 278 7/20/2022
1.0.80-alpha.2 244 7/20/2022
1.0.80-alpha 339 7/20/2022
1.0.79-preview 457 7/19/2022
1.0.79-beta 319 7/15/2022
1.0.79-alpha.1 360 7/2/2022
1.0.78-preview 434 7/12/2022
1.0.78-alpha.1 287 7/2/2022
1.0.77-preview 402 6/24/2022
1.0.76-preview 367 6/22/2022
1.0.75-preview 416 6/21/2022
1.0.74-preview 337 6/18/2022
1.0.73-preview 286 6/16/2022
1.0.72-preview 329 6/15/2022
1.0.71-preview 353 6/10/2022
1.0.70-preview 988 6/6/2022
1.0.70-beta 360 6/3/2022
1.0.69-preview 366 5/24/2022
1.0.68-preview 466 5/23/2022
1.0.68-beta-4 307 5/23/2022
1.0.68-beta-3 351 5/16/2022
1.0.68-beta-2 326 5/16/2022
1.0.68-beta 337 5/12/2022
1.0.67-preview 425 5/11/2022
1.0.67-beta-4 323 5/11/2022
1.0.67-beta-3 334 5/10/2022
1.0.67-beta-2 308 5/10/2022
1.0.67-beta 326 5/10/2022
1.0.66-preview 326 5/9/2022
1.0.65-preview 329 5/4/2022
1.0.65-beta 326 4/29/2022
1.0.64-preview 340 4/26/2022
1.0.63-preview 345 4/22/2022
1.0.63-beta-6 361 4/21/2022
1.0.63-beta-5 321 4/21/2022
1.0.63-beta-4 347 4/21/2022
1.0.63-beta-3 357 4/20/2022
1.0.63-beta-2 334 4/20/2022
1.0.63-beta 330 4/19/2022
1.0.62-preview 367 4/15/2022
1.0.62-beta-6 317 4/14/2022
1.0.62-beta-5 327 4/14/2022
1.0.62-beta-4 336 4/14/2022
1.0.62-beta-3 355 4/13/2022
1.0.62-beta-2 339 4/11/2022
1.0.62-beta 339 4/11/2022
1.0.61-preview 385 4/7/2022
1.0.61-beta 346 4/7/2022
1.0.60-preview 369 4/6/2022
1.0.59-preview 353 4/6/2022
1.0.59-beta 369 4/6/2022
1.0.58-beta-6 330 4/6/2022
1.0.58-beta-5 354 4/5/2022
1.0.58-beta-4 344 4/5/2022
1.0.58-beta-3 310 4/5/2022
1.0.58-beta-2 346 4/5/2022
1.0.58-beta 347 4/5/2022
1.0.56-preview 355 4/1/2022
1.0.56-beta-9 347 3/28/2022
1.0.56-beta-8 348 3/28/2022
1.0.56-beta-7 328 3/28/2022
1.0.56-beta-6 366 3/28/2022
1.0.56-beta-5 317 3/25/2022
1.0.56-beta-4 332 3/24/2022
1.0.56-beta-3 346 3/22/2022
1.0.56-beta-2 338 3/22/2022
1.0.56-beta-14 329 3/29/2022
1.0.56-beta-13 365 3/28/2022
1.0.56-beta-12 324 3/28/2022
1.0.56-beta-11 352 3/28/2022
1.0.56-beta-10 349 3/28/2022
1.0.56-beta 342 3/22/2022
1.0.55-preview 365 3/22/2022
1.0.54-preview 358 3/16/2022
1.0.53-preview 336 3/16/2022
1.0.52-preview 368 3/16/2022
1.0.51-preview 339 3/15/2022
1.0.50-preview 357 3/9/2022
1.0.49-preview 339 3/3/2022
1.0.48-preview 331 2/23/2022
1.0.47-preview 372 2/21/2022
1.0.46-preview 468 2/21/2022
1.0.45-preview 318 2/18/2022
1.0.43-preview 358 2/16/2022
1.0.42-preview 397 2/10/2022
1.0.41-preview 350 2/10/2022
1.0.40-preview 345 2/10/2022
1.0.39-preview 361 2/7/2022
1.0.38-preview 368 2/4/2022
1.0.37-preview 346 2/4/2022
1.0.36-preview 390 1/25/2022
1.0.35-preview 359 1/25/2022
1.0.34-preview 336 1/25/2022
1.0.33-preview 356 1/13/2022
1.0.32-preview 403 1/13/2022
1.0.31-preview 362 1/13/2022
1.0.30-preview 356 1/13/2022
1.0.29-preview 346 1/13/2022
1.0.28-preview 353 1/12/2022
1.0.27-preview 340 1/12/2022
1.0.26-preview 371 1/12/2022
1.0.25-preview 386 1/10/2022
1.0.24-preview 360 1/6/2022
1.0.23-preview 384 1/4/2022
1.0.22-preview 326 12/15/2021
1.0.21-preview 439 12/14/2021
1.0.20-preview 443 12/14/2021
1.0.19-preview 383 12/10/2021
1.0.18-preview 407 12/9/2021
1.0.17-preview 606 12/9/2021
1.0.16-preview 353 12/9/2021
1.0.15-preview 385 12/9/2021
1.0.14-preview 409 12/9/2021
1.0.13-preview 391 12/9/2021
1.0.12-preview 372 12/9/2021
1.0.10-preview 364 12/8/2021
1.0.9-preview 405 12/7/2021
1.0.8-preview 352 12/7/2021
1.0.7-preview 376 12/7/2021
1.0.6-preview 384 12/7/2021
1.0.4-preview 357 12/3/2021
1.0.3-preview 342 12/3/2021
1.0.2-preview 359 12/3/2021
1.0.1-preview 388 12/2/2021
1.0.0-preview 392 12/2/2021