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.DocFx

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

PostSharp.Engineering.BuildTools.AWS

Package Description

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.347 61 2/10/2026
2023.2.346 39 2/10/2026
2023.2.345 94 2/8/2026
2023.2.344 67 2/8/2026
2023.2.343 80 2/7/2026
2023.2.342 108 2/6/2026
2023.2.341 67 2/6/2026
2023.2.340 45 2/6/2026
2023.2.339 71 2/6/2026
2023.2.338 47 2/6/2026
2023.2.337 104 2/6/2026
2023.2.336 87 2/5/2026
2023.2.335 73 2/4/2026
2023.2.334 67 2/4/2026
2023.2.333 130 2/1/2026
2023.2.332 86 2/1/2026
2023.2.331 78 2/1/2026
2023.2.330 86 2/1/2026
2023.2.329 85 1/31/2026
2023.2.328 80 1/31/2026
2023.2.327 86 1/31/2026
2023.2.326 78 1/31/2026
2023.2.325 80 1/31/2026
2023.2.324 70 1/31/2026
2023.2.323 72 1/31/2026
2023.2.322 77 1/31/2026
2023.2.321 77 1/31/2026
2023.2.320 86 1/31/2026
2023.2.319 211 1/31/2026
2023.2.318 76 1/31/2026
2023.2.317 80 1/30/2026
2023.2.316 85 1/29/2026
2023.2.315 84 1/28/2026
2023.2.314 81 1/28/2026
2023.2.313 86 1/26/2026
2023.2.312 104 1/24/2026
2023.2.311 95 1/23/2026
2023.2.310 87 1/23/2026
2023.2.309 72 1/23/2026
2023.2.308 83 1/19/2026
2023.2.307 124 1/12/2026
2023.2.306 133 1/9/2026
2023.2.305 79 1/7/2026
2023.2.304 81 1/6/2026
2023.2.303 83 1/5/2026
2023.2.302 84 1/5/2026
2023.2.301 69 1/5/2026
2023.2.300 75 1/5/2026
2023.2.299 99 1/5/2026
2023.2.298 82 1/3/2026
2023.2.297 75 1/3/2026
2023.2.296 93 1/2/2026
2023.2.295 109 12/31/2025
2023.2.294 86 12/31/2025
2023.2.293 84 12/31/2025
2023.2.292 213 12/23/2025
2023.2.291 176 12/23/2025
2023.2.290 220 12/19/2025
2023.2.289 209 12/19/2025
2023.2.288 266 12/18/2025
2023.2.287 263 12/18/2025
2023.2.286 273 12/18/2025
2023.2.285 271 12/17/2025
2023.2.284 265 12/16/2025
2023.2.283 235 12/15/2025
2023.2.282 232 12/15/2025
2023.2.281 216 12/14/2025
2023.2.280 201 12/14/2025
2023.2.279 174 12/12/2025
2023.2.278 453 12/11/2025
2023.2.277 177 12/6/2025
2023.2.276 1,238 12/2/2025
2023.2.275 724 11/5/2025
2023.2.274 236 11/3/2025
2023.2.273 235 10/31/2025
2023.2.272 239 10/30/2025
2023.2.271 593 10/29/2025
2023.2.270 486 10/14/2025
2023.2.269 281 10/14/2025
2023.2.268 330 10/13/2025
2023.2.267 192 10/11/2025
2023.2.266 226 10/8/2025
2023.2.265 214 10/8/2025
2023.2.264 225 10/7/2025
2023.2.263 226 10/7/2025
2023.2.262 228 10/7/2025
2023.2.261 216 10/7/2025
2023.2.260 217 10/6/2025
2023.2.259 223 10/3/2025
2023.2.258 174 10/3/2025
2023.2.257 237 10/3/2025
2023.2.256 235 10/3/2025
2023.2.255 192 10/3/2025
2023.2.254 251 10/2/2025
2023.2.253 216 10/2/2025
2023.2.252 235 10/1/2025
2023.2.251 666 10/1/2025
2023.2.250 269 10/1/2025
2023.2.249 308 9/30/2025
2023.2.248 232 9/30/2025
2023.2.247 224 9/30/2025
2023.2.246 267 9/30/2025
2023.2.245 236 9/30/2025
2023.2.244 221 9/30/2025
2023.2.243 235 9/30/2025
2023.2.242 251 9/30/2025
2023.2.241 227 9/29/2025
2023.2.240 239 9/29/2025
2023.2.239 233 9/29/2025
2023.2.238 263 9/29/2025
2023.2.237 609 9/29/2025
2023.2.236 861 9/29/2025
2023.2.235 266 9/28/2025
2023.2.234 277 9/28/2025
2023.2.233 203 9/28/2025
2023.2.232 195 9/28/2025
2023.2.231 207 9/28/2025
2023.2.230 203 9/28/2025
2023.2.229 193 9/28/2025
2023.2.228 212 9/28/2025
2023.2.227 153 9/27/2025
2023.2.226 157 9/27/2025
2023.2.225 195 9/27/2025
2023.2.224 164 9/27/2025
2023.2.223 158 9/27/2025
2023.2.222 176 9/27/2025
2023.2.221 170 9/27/2025
2023.2.220 148 9/27/2025
2023.2.219 186 9/26/2025
2023.2.218 190 9/26/2025
2023.2.217 175 9/26/2025
2023.2.216 223 9/26/2025
2023.2.215 202 9/26/2025
2023.2.214 196 9/26/2025
2023.2.213 232 9/25/2025
2023.2.212 241 9/25/2025
2023.2.211 240 9/24/2025
2023.2.210 229 9/24/2025
2023.2.209 236 9/24/2025
2023.2.208 240 9/24/2025
2023.2.207 239 9/23/2025
2023.2.206 233 9/23/2025
2023.2.205 272 9/22/2025
2023.2.204 247 9/22/2025
2023.2.203 258 9/22/2025
2023.2.202 266 9/22/2025
2023.2.201 287 9/21/2025
2023.2.200 258 9/21/2025
2023.2.199 219 9/21/2025
2023.2.198 265 9/20/2025
2023.2.197 225 9/20/2025
2023.2.196 251 9/20/2025
2023.2.195 286 9/19/2025
2023.2.194 300 9/19/2025
2023.2.193 288 9/19/2025
2023.2.192 305 9/19/2025
2023.2.191 364 9/18/2025
2023.2.190 355 9/18/2025
2023.2.189 350 9/17/2025
2023.2.188 335 9/17/2025
2023.2.187 358 9/17/2025
2023.2.186 337 9/16/2025
2023.2.185 345 9/16/2025
2023.2.184 344 9/15/2025
2023.2.183 342 9/15/2025
2023.2.182 293 9/15/2025
2023.2.181 308 9/15/2025
2023.2.180 285 9/15/2025
2023.2.179 218 9/10/2025
2023.2.178 503 9/2/2025
2023.2.177 210 9/2/2025
2023.2.176 258 9/2/2025
2023.2.175 229 9/2/2025
2023.2.174 213 9/2/2025
2023.2.173 248 9/1/2025
2023.2.172 217 9/1/2025
2023.2.171 167 7/19/2025
2023.2.170 521 5/18/2025
2023.2.169 1,347 5/16/2025
2023.2.168 324 5/8/2025
2023.2.167 297 4/28/2025
2023.2.166 358 4/23/2025
2023.2.165 247 4/13/2025
2023.2.164 383 4/12/2025
2023.2.163 250 4/12/2025
2023.2.162 526 3/28/2025
2023.2.161 232 3/28/2025
2023.2.160 861 3/14/2025
2023.2.159 709 3/1/2025
2023.2.158 230 2/27/2025
2023.2.157 1,175 2/10/2025
2023.2.156 552 2/5/2025
2023.2.155 198 2/3/2025
2023.2.154 240 1/10/2025
2023.2.153 277 1/10/2025
2023.2.152 1,172 12/12/2024
2023.2.151 212 11/22/2024
2023.2.150 427 11/22/2024
2023.2.149 223 11/21/2024
2023.2.148 231 11/20/2024
2023.2.147 663 11/19/2024
2023.2.146 227 11/15/2024
2023.2.145 235 11/12/2024
2023.2.144 250 11/12/2024
2023.2.143 227 11/11/2024
2023.2.142 552 11/7/2024
2023.2.141 405 11/7/2024
2023.2.140 2,357 11/6/2024
2023.2.139 404 11/6/2024
2023.2.138 220 11/5/2024
2023.2.137 540 10/24/2024
2023.2.136 3,173 10/14/2024
2023.2.135 1,047 10/4/2024
2023.2.134 274 9/29/2024
2023.2.133 226 9/25/2024
2023.2.132 317 9/24/2024
2023.2.131 211 9/24/2024
2023.2.130 411 9/11/2024
2023.2.129 2,519 9/11/2024
2023.2.128 245 9/11/2024
2023.2.127 227 9/10/2024
2023.2.126 387 9/9/2024
2023.2.125 242 9/9/2024
2023.2.124 499 9/6/2024
2023.2.123 277 8/29/2024
2023.2.122 1,208 8/28/2024
2023.2.121 209 8/27/2024
2023.2.120 223 8/27/2024
2023.2.119 518 8/27/2024
2023.2.118 225 8/27/2024
2023.2.117 273 8/27/2024
2023.2.116 582 8/9/2024
2023.2.115 402 8/5/2024
2023.2.114 247 8/5/2024
2023.2.113 438 7/25/2024
2023.2.112 370 7/12/2024
2023.2.111 2,418 7/12/2024
2023.2.110 580 7/10/2024
2023.2.109 2,010 6/10/2024
2023.2.108 425 5/30/2024
2023.2.107 265 5/28/2024
2023.2.106 543 5/27/2024
2023.2.105 219 5/24/2024
2023.2.104 259 5/23/2024
2023.2.103 233 5/23/2024
2023.2.102 305 5/23/2024
2023.2.101 216 5/23/2024
2023.2.100 251 5/22/2024
2023.2.99 231 5/22/2024
2023.2.98 444 5/22/2024
2023.2.97 216 5/22/2024
2023.2.96 267 5/22/2024
2023.2.95 261 5/21/2024
2023.2.94 214 5/21/2024
2023.2.93 375 5/19/2024
2023.2.92 242 5/19/2024
2023.2.91 279 5/18/2024
2023.2.90 505 5/15/2024
2023.2.89 298 5/15/2024
2023.2.88 237 5/15/2024
2023.2.87 227 5/13/2024
2023.2.86 1,100 4/29/2024
2023.2.85 547 4/23/2024
2023.2.84 839 4/2/2024
2023.2.83 4,418 3/28/2024
2023.2.82 247 3/26/2024
2023.2.81 220 3/23/2024
2023.2.80 513 3/22/2024
2023.2.79 247 3/13/2024
2023.2.78 635 2/12/2024
2023.2.77 287 1/10/2024
2023.2.76 1,056 1/8/2024
2023.2.75 402 1/8/2024
2023.2.74 260 1/5/2024
2023.2.73 238 1/5/2024
2023.2.72 238 1/5/2024
2023.2.71 566 1/3/2024
2023.2.70 3,482 1/2/2024
2023.2.69 221 12/22/2023
2023.2.68 598 12/21/2023
2023.2.67 250 12/19/2023
2023.2.66 246 12/18/2023
2023.2.65 249 12/18/2023
2023.2.64 947 12/12/2023
2023.2.63 327 12/1/2023
2023.2.62 575 12/1/2023
2023.2.61 298 11/30/2023
2023.2.60 245 11/30/2023
2023.2.59 215 11/30/2023
2023.2.58 481 11/13/2023
2023.2.57 578 10/25/2023
2023.2.56 1,340 10/23/2023
2023.2.55 245 10/20/2023
2023.2.54 250 10/20/2023
2023.2.53 509 10/19/2023
2023.2.52 355 10/18/2023
2023.2.51 216 10/18/2023
2023.2.50 295 10/17/2023
2023.2.49 1,309 10/12/2023
2023.2.48 437 10/12/2023
2023.2.47 410 10/11/2023
2023.2.46 232 10/11/2023
2023.2.45 407 10/11/2023
2023.2.44 262 10/11/2023
2023.2.43 387 9/25/2023
2023.2.42 278 9/20/2023
2023.2.41 2,220 9/11/2023
2023.2.40 515 8/30/2023
2023.2.39 484 8/25/2023
2023.2.38 482 8/22/2023
2023.2.37 383 8/21/2023
2023.2.36 2,400 8/18/2023
2023.2.35 296 8/18/2023
2023.2.34 303 8/9/2023
2023.2.33 323 7/29/2023
2023.2.32 1,206 7/26/2023
2023.2.31 287 7/25/2023
2023.2.30 325 7/25/2023
2023.2.29 370 7/23/2023
2023.2.28 308 7/23/2023
2023.2.27 325 7/21/2023
2023.2.26 537 7/19/2023
2023.2.25 334 7/19/2023
2023.2.24 1,464 6/27/2023
2023.2.23 430 6/26/2023
2023.2.22 551 6/25/2023
2023.2.21 296 6/24/2023
2023.2.20 316 6/23/2023
2023.2.19 310 6/23/2023
2023.2.18 320 6/23/2023
2023.2.17 317 6/22/2023
2023.2.16 410 6/22/2023
2023.2.15 332 6/22/2023
2023.2.14 333 6/21/2023
2023.2.13 332 6/16/2023
2023.2.12 327 6/15/2023
2023.2.11 752 6/13/2023
2023.2.10 311 6/12/2023
2023.2.9 326 6/12/2023
2023.2.8 326 6/12/2023
2023.2.7 423 6/10/2023
2023.2.6-preview 297 6/10/2023
2023.2.5-preview 249 6/9/2023
2023.2.4-preview 355 6/9/2023
2023.2.3-preview 307 6/7/2023
2023.2.2-preview 330 6/2/2023
2023.2.1-preview 311 6/2/2023
2023.1.28-preview 193 9/5/2024
2023.1.27-preview 176 9/5/2024
2023.1.26-preview 232 9/4/2024
2023.1.25-preview 192 9/4/2024
2023.1.24-preview 167 9/4/2024
2023.1.23-preview 206 9/4/2024
2023.1.22-preview 185 9/3/2024
2023.1.21-preview 198 9/3/2024
2023.1.20-preview 219 9/3/2024
2023.1.19-preview 196 9/2/2024
2023.1.18-preview 212 9/2/2024
2023.1.17-preview 187 9/2/2024
2023.1.16-preview 187 8/30/2024
2023.1.15-preview 214 8/29/2024
2023.1.14-preview 339 5/24/2023
2023.1.13-preview 1,004 5/24/2023
2023.1.12-preview 315 5/23/2023
2023.1.11-preview 284 5/23/2023
2023.1.10-preview 267 5/17/2023
2023.1.9-preview 317 5/17/2023
2023.1.8-preview 252 5/15/2023
2023.1.7-preview 549 5/10/2023
2023.1.6-preview 359 4/27/2023
2023.1.5-preview 340 4/26/2023
2023.1.4-preview 269 4/26/2023
2023.1.3-preview 371 4/21/2023
2023.1.2-preview 294 4/21/2023
2023.1.1-preview 283 4/21/2023
2023.1.0-preview 270 4/21/2023
2023.0.150 329 5/29/2023
2023.0.149 624 5/24/2023
2023.0.148 362 5/23/2023
2023.0.147 378 5/17/2023
2023.0.146 408 5/17/2023
2023.0.145 315 5/9/2023
2023.0.144 568 5/2/2023
2023.0.143 587 5/2/2023
1.0.142-preview 297 4/24/2023
1.0.141-preview 371 4/5/2023
1.0.140-preview 395 4/4/2023
1.0.139-preview 383 3/30/2023
1.0.138-preview 359 3/30/2023
1.0.137-preview 275 3/30/2023
1.0.136-preview 286 3/30/2023
1.0.135-preview 875 3/30/2023
1.0.134-preview 450 3/1/2023
1.0.133-preview 312 3/1/2023
1.0.132-preview 713 2/27/2023
1.0.131-preview 543 2/24/2023
1.0.130-preview 1,010 2/22/2023
1.0.129-preview 300 2/22/2023
1.0.128-preview 341 2/21/2023
1.0.127-preview 278 2/17/2023
1.0.126-preview 776 2/16/2023
1.0.125-preview 323 2/16/2023
1.0.124-preview 300 2/15/2023
1.0.123-preview 298 2/15/2023
1.0.122-preview 295 2/10/2023
1.0.121-preview 259 2/10/2023
1.0.120-preview 270 2/10/2023
1.0.119-preview 343 2/9/2023
1.0.118-preview 304 2/8/2023
1.0.117-preview 329 1/30/2023
1.0.116-preview 306 1/26/2023
1.0.115-preview 303 1/26/2023
1.0.114-preview 973 1/16/2023
1.0.113-preview 350 1/13/2023
1.0.112-preview 497 1/8/2023
1.0.111-preview 607 1/5/2023
1.0.110-preview 814 12/18/2022
1.0.109-preview 328 12/15/2022
1.0.108-preview 329 12/13/2022
1.0.107-preview 355 12/9/2022
1.0.107-alpha.2 233 12/9/2022
1.0.107-alpha.1 220 12/9/2022
1.0.106-preview 351 12/8/2022
1.0.105-preview 306 12/8/2022
1.0.105-alpha.2 262 12/8/2022
1.0.105-alpha.1 229 12/6/2022
1.0.104-preview 363 12/5/2022
1.0.103-preview 435 12/2/2022
1.0.102-preview 597 11/18/2022
1.0.101-preview 1,336 11/3/2022
1.0.101-alpha.3 246 11/3/2022
1.0.101-alpha.2 281 11/2/2022
1.0.101-alpha.1 222 11/2/2022
1.0.100-preview 1,163 10/28/2022
1.0.99-preview 565 10/27/2022
1.0.99-alpha.3 252 10/27/2022
1.0.99-alpha.2 252 10/26/2022
1.0.99-alpha.1 234 10/26/2022
1.0.98-preview 396 10/25/2022
1.0.97-preview 608 10/20/2022
1.0.97-alpha.2 275 10/19/2022
1.0.97-alpha.1 282 10/19/2022
1.0.96-preview 552 10/7/2022
1.0.95-preview 312 10/4/2022
1.0.94-preview 735 9/29/2022
1.0.93-preview 345 9/29/2022
1.0.92-preview 336 9/27/2022
1.0.91-preview 405 9/27/2022
1.0.90-preview 360 9/27/2022
1.0.90-alpha.1 259 9/26/2022
1.0.89-preview 566 9/11/2022
1.0.87-preview 793 9/6/2022
1.0.86-preview 535 9/5/2022
1.0.86-alpha.1 238 9/2/2022
1.0.85-preview 496 8/2/2022
1.0.84-preview 499 7/29/2022
1.0.83-preview 578 7/28/2022
1.0.83-alpha.3 276 7/28/2022
1.0.83-alpha.2 266 7/28/2022
1.0.83-alpha.1 274 7/28/2022
1.0.82-preview 802 7/27/2022
1.0.82-beta.3 305 7/27/2022
1.0.82-beta.2 308 7/26/2022
1.0.82-beta 354 7/26/2022
1.0.82-alpha.1 253 7/25/2022
1.0.81-preview 394 7/22/2022
1.0.80-preview 371 7/20/2022
1.0.80-alpha.3 294 7/20/2022
1.0.80-alpha.2 259 7/20/2022
1.0.80-alpha 351 7/20/2022
1.0.79-preview 466 7/19/2022
1.0.79-beta 330 7/15/2022
1.0.79-alpha.1 377 7/2/2022
1.0.78-preview 446 7/12/2022
1.0.78-alpha.1 303 7/2/2022
1.0.77-preview 417 6/24/2022
1.0.76-preview 381 6/22/2022
1.0.75-preview 428 6/21/2022
1.0.74-preview 347 6/18/2022
1.0.73-preview 298 6/16/2022
1.0.72-preview 339 6/15/2022
1.0.71-preview 364 6/10/2022
1.0.70-preview 1,004 6/6/2022
1.0.70-beta 375 6/3/2022
1.0.69-preview 376 5/24/2022
1.0.68-preview 483 5/23/2022
1.0.68-beta-4 321 5/23/2022
1.0.68-beta-3 361 5/16/2022
1.0.68-beta-2 342 5/16/2022
1.0.68-beta 352 5/12/2022
1.0.67-preview 436 5/11/2022
1.0.67-beta-4 335 5/11/2022
1.0.67-beta-3 349 5/10/2022
1.0.67-beta-2 321 5/10/2022
1.0.67-beta 339 5/10/2022
1.0.66-preview 340 5/9/2022
1.0.65-preview 343 5/4/2022
1.0.65-beta 346 4/29/2022
1.0.64-preview 352 4/26/2022
1.0.63-preview 356 4/22/2022
1.0.63-beta-6 377 4/21/2022
1.0.63-beta-5 338 4/21/2022
1.0.63-beta-4 357 4/21/2022
1.0.63-beta-3 366 4/20/2022
1.0.63-beta-2 343 4/20/2022
1.0.63-beta 343 4/19/2022
1.0.62-preview 376 4/15/2022
1.0.62-beta-6 325 4/14/2022
1.0.62-beta-5 340 4/14/2022
1.0.62-beta-4 346 4/14/2022
1.0.62-beta-3 366 4/13/2022
1.0.62-beta-2 347 4/11/2022
1.0.62-beta 347 4/11/2022
1.0.61-preview 395 4/7/2022
1.0.61-beta 356 4/7/2022
1.0.60-preview 381 4/6/2022
1.0.59-preview 363 4/6/2022
1.0.59-beta 382 4/6/2022
1.0.58-beta-6 347 4/6/2022
1.0.58-beta-5 362 4/5/2022
1.0.58-beta-4 350 4/5/2022
1.0.58-beta-3 327 4/5/2022
1.0.58-beta-2 356 4/5/2022
1.0.58-beta 360 4/5/2022
1.0.56-preview 369 4/1/2022
1.0.56-beta-9 356 3/28/2022
1.0.56-beta-8 354 3/28/2022
1.0.56-beta-7 348 3/28/2022
1.0.56-beta-6 376 3/28/2022
1.0.56-beta-5 331 3/25/2022
1.0.56-beta-4 345 3/24/2022
1.0.56-beta-3 358 3/22/2022
1.0.56-beta-2 348 3/22/2022
1.0.56-beta-14 341 3/29/2022
1.0.56-beta-13 371 3/28/2022
1.0.56-beta-12 334 3/28/2022
1.0.56-beta-11 364 3/28/2022
1.0.56-beta-10 364 3/28/2022
1.0.56-beta 354 3/22/2022
1.0.55-preview 381 3/22/2022
1.0.54-preview 372 3/16/2022
1.0.53-preview 347 3/16/2022
1.0.52-preview 377 3/16/2022
1.0.51-preview 354 3/15/2022
1.0.50-preview 370 3/9/2022
1.0.49-preview 349 3/3/2022
1.0.48-preview 343 2/23/2022
1.0.47-preview 383 2/21/2022
1.0.46-preview 477 2/21/2022
1.0.45-preview 331 2/18/2022
1.0.43-preview 368 2/16/2022
1.0.42-preview 410 2/10/2022
1.0.41-preview 360 2/10/2022
1.0.40-preview 360 2/10/2022
1.0.39-preview 369 2/7/2022
1.0.38-preview 381 2/4/2022
1.0.37-preview 355 2/4/2022
1.0.36-preview 400 1/25/2022
1.0.35-preview 371 1/25/2022
1.0.34-preview 345 1/25/2022
1.0.33-preview 370 1/13/2022
1.0.32-preview 415 1/13/2022
1.0.31-preview 374 1/13/2022
1.0.30-preview 369 1/13/2022
1.0.29-preview 353 1/13/2022
1.0.28-preview 362 1/12/2022
1.0.27-preview 354 1/12/2022
1.0.26-preview 382 1/12/2022
1.0.25-preview 404 1/10/2022
1.0.24-preview 369 1/6/2022
1.0.23-preview 397 1/4/2022
1.0.22-preview 336 12/15/2021
1.0.21-preview 448 12/14/2021
1.0.20-preview 457 12/14/2021
1.0.19-preview 392 12/10/2021
1.0.18-preview 414 12/9/2021
1.0.17-preview 620 12/9/2021
1.0.16-preview 357 12/9/2021
1.0.15-preview 400 12/9/2021
1.0.14-preview 418 12/9/2021
1.0.13-preview 405 12/9/2021
1.0.12-preview 383 12/9/2021
1.0.10-preview 378 12/8/2021
1.0.9-preview 418 12/7/2021
1.0.8-preview 365 12/7/2021
1.0.7-preview 387 12/7/2021
1.0.6-preview 395 12/7/2021
1.0.4-preview 368 12/3/2021
1.0.3-preview 352 12/3/2021
1.0.2-preview 368 12/3/2021
1.0.1-preview 400 12/2/2021
1.0.0-preview 399 12/2/2021