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.332 0 2/1/2026
2023.2.331 0 2/1/2026
2023.2.330 0 2/1/2026
2023.2.329 0 1/31/2026
2023.2.328 0 1/31/2026
2023.2.327 2 1/31/2026
2023.2.326 29 1/31/2026
2023.2.325 30 1/31/2026
2023.2.324 25 1/31/2026
2023.2.323 28 1/31/2026
2023.2.322 33 1/31/2026
2023.2.321 33 1/31/2026
2023.2.320 42 1/31/2026
2023.2.319 175 1/31/2026
2023.2.318 38 1/31/2026
2023.2.317 49 1/30/2026
2023.2.316 54 1/29/2026
2023.2.315 45 1/28/2026
2023.2.314 51 1/28/2026
2023.2.313 80 1/26/2026
2023.2.312 100 1/24/2026
2023.2.311 87 1/23/2026
2023.2.310 82 1/23/2026
2023.2.309 68 1/23/2026
2023.2.308 81 1/19/2026
2023.2.307 118 1/12/2026
2023.2.306 125 1/9/2026
2023.2.305 75 1/7/2026
2023.2.304 79 1/6/2026
2023.2.303 80 1/5/2026
2023.2.302 80 1/5/2026
2023.2.301 66 1/5/2026
2023.2.300 73 1/5/2026
2023.2.299 96 1/5/2026
2023.2.298 80 1/3/2026
2023.2.297 73 1/3/2026
2023.2.296 88 1/2/2026
2023.2.295 107 12/31/2025
2023.2.294 84 12/31/2025
2023.2.293 82 12/31/2025
2023.2.292 209 12/23/2025
2023.2.291 174 12/23/2025
2023.2.290 216 12/19/2025
2023.2.289 207 12/19/2025
2023.2.288 264 12/18/2025
2023.2.287 261 12/18/2025
2023.2.286 269 12/18/2025
2023.2.285 269 12/17/2025
2023.2.284 262 12/16/2025
2023.2.283 233 12/15/2025
2023.2.282 230 12/15/2025
2023.2.281 214 12/14/2025
2023.2.280 199 12/14/2025
2023.2.279 169 12/12/2025
2023.2.278 450 12/11/2025
2023.2.277 173 12/6/2025
2023.2.276 1,222 12/2/2025
2023.2.275 720 11/5/2025
2023.2.274 234 11/3/2025
2023.2.273 231 10/31/2025
2023.2.272 235 10/30/2025
2023.2.271 588 10/29/2025
2023.2.270 480 10/14/2025
2023.2.269 276 10/14/2025
2023.2.268 328 10/13/2025
2023.2.267 191 10/11/2025
2023.2.266 225 10/8/2025
2023.2.265 212 10/8/2025
2023.2.264 223 10/7/2025
2023.2.263 224 10/7/2025
2023.2.262 227 10/7/2025
2023.2.261 214 10/7/2025
2023.2.260 214 10/6/2025
2023.2.259 222 10/3/2025
2023.2.258 173 10/3/2025
2023.2.257 235 10/3/2025
2023.2.256 233 10/3/2025
2023.2.255 190 10/3/2025
2023.2.254 248 10/2/2025
2023.2.253 214 10/2/2025
2023.2.252 232 10/1/2025
2023.2.251 664 10/1/2025
2023.2.250 264 10/1/2025
2023.2.249 303 9/30/2025
2023.2.248 230 9/30/2025
2023.2.247 223 9/30/2025
2023.2.246 266 9/30/2025
2023.2.245 234 9/30/2025
2023.2.244 219 9/30/2025
2023.2.243 233 9/30/2025
2023.2.242 250 9/30/2025
2023.2.241 226 9/29/2025
2023.2.240 236 9/29/2025
2023.2.239 231 9/29/2025
2023.2.238 260 9/29/2025
2023.2.237 607 9/29/2025
2023.2.236 860 9/29/2025
2023.2.235 263 9/28/2025
2023.2.234 276 9/28/2025
2023.2.233 200 9/28/2025
2023.2.232 194 9/28/2025
2023.2.231 206 9/28/2025
2023.2.230 200 9/28/2025
2023.2.229 191 9/28/2025
2023.2.228 210 9/28/2025
2023.2.227 152 9/27/2025
2023.2.226 155 9/27/2025
2023.2.225 192 9/27/2025
2023.2.224 161 9/27/2025
2023.2.223 155 9/27/2025
2023.2.222 173 9/27/2025
2023.2.221 169 9/27/2025
2023.2.220 146 9/27/2025
2023.2.219 184 9/26/2025
2023.2.218 188 9/26/2025
2023.2.217 171 9/26/2025
2023.2.216 217 9/26/2025
2023.2.215 198 9/26/2025
2023.2.214 193 9/26/2025
2023.2.213 231 9/25/2025
2023.2.212 239 9/25/2025
2023.2.211 238 9/24/2025
2023.2.210 228 9/24/2025
2023.2.209 235 9/24/2025
2023.2.208 238 9/24/2025
2023.2.207 238 9/23/2025
2023.2.206 231 9/23/2025
2023.2.205 271 9/22/2025
2023.2.204 245 9/22/2025
2023.2.203 256 9/22/2025
2023.2.202 264 9/22/2025
2023.2.201 283 9/21/2025
2023.2.200 254 9/21/2025
2023.2.199 218 9/21/2025
2023.2.198 262 9/20/2025
2023.2.197 224 9/20/2025
2023.2.196 249 9/20/2025
2023.2.195 285 9/19/2025
2023.2.194 298 9/19/2025
2023.2.193 286 9/19/2025
2023.2.192 304 9/19/2025
2023.2.191 363 9/18/2025
2023.2.190 354 9/18/2025
2023.2.189 346 9/17/2025
2023.2.188 334 9/17/2025
2023.2.187 356 9/17/2025
2023.2.186 335 9/16/2025
2023.2.185 343 9/16/2025
2023.2.184 343 9/15/2025
2023.2.183 341 9/15/2025
2023.2.182 290 9/15/2025
2023.2.181 306 9/15/2025
2023.2.180 283 9/15/2025
2023.2.179 217 9/10/2025
2023.2.178 499 9/2/2025
2023.2.177 207 9/2/2025
2023.2.176 256 9/2/2025
2023.2.175 225 9/2/2025
2023.2.174 210 9/2/2025
2023.2.173 247 9/1/2025
2023.2.172 215 9/1/2025
2023.2.171 164 7/19/2025
2023.2.170 520 5/18/2025
2023.2.169 1,345 5/16/2025
2023.2.168 323 5/8/2025
2023.2.167 294 4/28/2025
2023.2.166 357 4/23/2025
2023.2.165 244 4/13/2025
2023.2.164 382 4/12/2025
2023.2.163 249 4/12/2025
2023.2.162 524 3/28/2025
2023.2.161 229 3/28/2025
2023.2.160 860 3/14/2025
2023.2.159 707 3/1/2025
2023.2.158 226 2/27/2025
2023.2.157 1,171 2/10/2025
2023.2.156 549 2/5/2025
2023.2.155 196 2/3/2025
2023.2.154 239 1/10/2025
2023.2.153 274 1/10/2025
2023.2.152 1,167 12/12/2024
2023.2.151 209 11/22/2024
2023.2.150 425 11/22/2024
2023.2.149 220 11/21/2024
2023.2.148 230 11/20/2024
2023.2.147 661 11/19/2024
2023.2.146 225 11/15/2024
2023.2.145 233 11/12/2024
2023.2.144 249 11/12/2024
2023.2.143 223 11/11/2024
2023.2.142 551 11/7/2024
2023.2.141 404 11/7/2024
2023.2.140 2,354 11/6/2024
2023.2.139 403 11/6/2024
2023.2.138 219 11/5/2024
2023.2.137 537 10/24/2024
2023.2.136 3,170 10/14/2024
2023.2.135 1,043 10/4/2024
2023.2.134 271 9/29/2024
2023.2.133 224 9/25/2024
2023.2.132 315 9/24/2024
2023.2.131 208 9/24/2024
2023.2.130 409 9/11/2024
2023.2.129 2,517 9/11/2024
2023.2.128 241 9/11/2024
2023.2.127 224 9/10/2024
2023.2.126 383 9/9/2024
2023.2.125 238 9/9/2024
2023.2.124 497 9/6/2024
2023.2.123 276 8/29/2024
2023.2.122 1,207 8/28/2024
2023.2.121 206 8/27/2024
2023.2.120 220 8/27/2024
2023.2.119 516 8/27/2024
2023.2.118 223 8/27/2024
2023.2.117 269 8/27/2024
2023.2.116 579 8/9/2024
2023.2.115 401 8/5/2024
2023.2.114 243 8/5/2024
2023.2.113 436 7/25/2024
2023.2.112 368 7/12/2024
2023.2.111 2,416 7/12/2024
2023.2.110 577 7/10/2024
2023.2.109 2,008 6/10/2024
2023.2.108 422 5/30/2024
2023.2.107 263 5/28/2024
2023.2.106 541 5/27/2024
2023.2.105 217 5/24/2024
2023.2.104 256 5/23/2024
2023.2.103 225 5/23/2024
2023.2.102 303 5/23/2024
2023.2.101 215 5/23/2024
2023.2.100 248 5/22/2024
2023.2.99 228 5/22/2024
2023.2.98 442 5/22/2024
2023.2.97 214 5/22/2024
2023.2.96 266 5/22/2024
2023.2.95 258 5/21/2024
2023.2.94 213 5/21/2024
2023.2.93 373 5/19/2024
2023.2.92 240 5/19/2024
2023.2.91 276 5/18/2024
2023.2.90 502 5/15/2024
2023.2.89 294 5/15/2024
2023.2.88 236 5/15/2024
2023.2.87 222 5/13/2024
2023.2.86 1,099 4/29/2024
2023.2.85 545 4/23/2024
2023.2.84 837 4/2/2024
2023.2.83 4,417 3/28/2024
2023.2.82 246 3/26/2024
2023.2.81 216 3/23/2024
2023.2.80 508 3/22/2024
2023.2.79 245 3/13/2024
2023.2.78 632 2/12/2024
2023.2.77 284 1/10/2024
2023.2.76 1,052 1/8/2024
2023.2.75 399 1/8/2024
2023.2.74 259 1/5/2024
2023.2.73 236 1/5/2024
2023.2.72 237 1/5/2024
2023.2.71 565 1/3/2024
2023.2.70 3,481 1/2/2024
2023.2.69 219 12/22/2023
2023.2.68 597 12/21/2023
2023.2.67 249 12/19/2023
2023.2.66 244 12/18/2023
2023.2.65 245 12/18/2023
2023.2.64 944 12/12/2023
2023.2.63 325 12/1/2023
2023.2.62 573 12/1/2023
2023.2.61 296 11/30/2023
2023.2.60 244 11/30/2023
2023.2.59 213 11/30/2023
2023.2.58 478 11/13/2023
2023.2.57 574 10/25/2023
2023.2.56 1,339 10/23/2023
2023.2.55 244 10/20/2023
2023.2.54 245 10/20/2023
2023.2.53 508 10/19/2023
2023.2.52 353 10/18/2023
2023.2.51 214 10/18/2023
2023.2.50 292 10/17/2023
2023.2.49 1,307 10/12/2023
2023.2.48 435 10/12/2023
2023.2.47 407 10/11/2023
2023.2.46 230 10/11/2023
2023.2.45 403 10/11/2023
2023.2.44 260 10/11/2023
2023.2.43 386 9/25/2023
2023.2.42 276 9/20/2023
2023.2.41 2,217 9/11/2023
2023.2.40 514 8/30/2023
2023.2.39 482 8/25/2023
2023.2.38 478 8/22/2023
2023.2.37 382 8/21/2023
2023.2.36 2,399 8/18/2023
2023.2.35 294 8/18/2023
2023.2.34 301 8/9/2023
2023.2.33 323 7/29/2023
2023.2.32 1,204 7/26/2023
2023.2.31 286 7/25/2023
2023.2.30 324 7/25/2023
2023.2.29 370 7/23/2023
2023.2.28 307 7/23/2023
2023.2.27 324 7/21/2023
2023.2.26 537 7/19/2023
2023.2.25 330 7/19/2023
2023.2.24 1,462 6/27/2023
2023.2.23 430 6/26/2023
2023.2.22 550 6/25/2023
2023.2.21 294 6/24/2023
2023.2.20 313 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 407 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 326 6/15/2023
2023.2.11 750 6/13/2023
2023.2.10 308 6/12/2023
2023.2.9 326 6/12/2023
2023.2.8 325 6/12/2023
2023.2.7 421 6/10/2023
2023.2.6-preview 297 6/10/2023
2023.2.5-preview 247 6/9/2023
2023.2.4-preview 353 6/9/2023
2023.2.3-preview 306 6/7/2023
2023.2.2-preview 329 6/2/2023
2023.2.1-preview 309 6/2/2023
2023.1.28-preview 191 9/5/2024
2023.1.27-preview 173 9/5/2024
2023.1.26-preview 229 9/4/2024
2023.1.25-preview 188 9/4/2024
2023.1.24-preview 166 9/4/2024
2023.1.23-preview 200 9/4/2024
2023.1.22-preview 182 9/3/2024
2023.1.21-preview 194 9/3/2024
2023.1.20-preview 216 9/3/2024
2023.1.19-preview 194 9/2/2024
2023.1.18-preview 210 9/2/2024
2023.1.17-preview 186 9/2/2024
2023.1.16-preview 184 8/30/2024
2023.1.15-preview 213 8/29/2024
2023.1.14-preview 337 5/24/2023
2023.1.13-preview 1,004 5/24/2023
2023.1.12-preview 312 5/23/2023
2023.1.11-preview 284 5/23/2023
2023.1.10-preview 266 5/17/2023
2023.1.9-preview 316 5/17/2023
2023.1.8-preview 252 5/15/2023
2023.1.7-preview 548 5/10/2023
2023.1.6-preview 359 4/27/2023
2023.1.5-preview 339 4/26/2023
2023.1.4-preview 266 4/26/2023
2023.1.3-preview 371 4/21/2023
2023.1.2-preview 290 4/21/2023
2023.1.1-preview 283 4/21/2023
2023.1.0-preview 268 4/21/2023
2023.0.150 328 5/29/2023
2023.0.149 622 5/24/2023
2023.0.148 360 5/23/2023
2023.0.147 376 5/17/2023
2023.0.146 408 5/17/2023
2023.0.145 315 5/9/2023
2023.0.144 567 5/2/2023
2023.0.143 578 5/2/2023
1.0.142-preview 297 4/24/2023
1.0.141-preview 370 4/5/2023
1.0.140-preview 393 4/4/2023
1.0.139-preview 382 3/30/2023
1.0.138-preview 357 3/30/2023
1.0.137-preview 273 3/30/2023
1.0.136-preview 285 3/30/2023
1.0.135-preview 875 3/30/2023
1.0.134-preview 447 3/1/2023
1.0.133-preview 310 3/1/2023
1.0.132-preview 712 2/27/2023
1.0.131-preview 543 2/24/2023
1.0.130-preview 1,009 2/22/2023
1.0.129-preview 298 2/22/2023
1.0.128-preview 340 2/21/2023
1.0.127-preview 278 2/17/2023
1.0.126-preview 776 2/16/2023
1.0.125-preview 321 2/16/2023
1.0.124-preview 298 2/15/2023
1.0.123-preview 297 2/15/2023
1.0.122-preview 294 2/10/2023
1.0.121-preview 258 2/10/2023
1.0.120-preview 268 2/10/2023
1.0.119-preview 343 2/9/2023
1.0.118-preview 302 2/8/2023
1.0.117-preview 329 1/30/2023
1.0.116-preview 304 1/26/2023
1.0.115-preview 302 1/26/2023
1.0.114-preview 972 1/16/2023
1.0.113-preview 350 1/13/2023
1.0.112-preview 495 1/8/2023
1.0.111-preview 607 1/5/2023
1.0.110-preview 812 12/18/2022
1.0.109-preview 326 12/15/2022
1.0.108-preview 325 12/13/2022
1.0.107-preview 352 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 349 12/8/2022
1.0.105-preview 304 12/8/2022
1.0.105-alpha.2 261 12/8/2022
1.0.105-alpha.1 229 12/6/2022
1.0.104-preview 362 12/5/2022
1.0.103-preview 435 12/2/2022
1.0.102-preview 596 11/18/2022
1.0.101-preview 1,335 11/3/2022
1.0.101-alpha.3 246 11/3/2022
1.0.101-alpha.2 279 11/2/2022
1.0.101-alpha.1 221 11/2/2022
1.0.100-preview 1,163 10/28/2022
1.0.99-preview 564 10/27/2022
1.0.99-alpha.3 251 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 394 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 551 10/7/2022
1.0.95-preview 311 10/4/2022
1.0.94-preview 733 9/29/2022
1.0.93-preview 342 9/29/2022
1.0.92-preview 335 9/27/2022
1.0.91-preview 402 9/27/2022
1.0.90-preview 360 9/27/2022
1.0.90-alpha.1 258 9/26/2022
1.0.89-preview 563 9/11/2022
1.0.87-preview 793 9/6/2022
1.0.86-preview 534 9/5/2022
1.0.86-alpha.1 237 9/2/2022
1.0.85-preview 496 8/2/2022
1.0.84-preview 498 7/29/2022
1.0.83-preview 576 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 799 7/27/2022
1.0.82-beta.3 305 7/27/2022
1.0.82-beta.2 307 7/26/2022
1.0.82-beta 349 7/26/2022
1.0.82-alpha.1 252 7/25/2022
1.0.81-preview 394 7/22/2022
1.0.80-preview 370 7/20/2022
1.0.80-alpha.3 293 7/20/2022
1.0.80-alpha.2 259 7/20/2022
1.0.80-alpha 350 7/20/2022
1.0.79-preview 466 7/19/2022
1.0.79-beta 329 7/15/2022
1.0.79-alpha.1 376 7/2/2022
1.0.78-preview 444 7/12/2022
1.0.78-alpha.1 300 7/2/2022
1.0.77-preview 417 6/24/2022
1.0.76-preview 380 6/22/2022
1.0.75-preview 427 6/21/2022
1.0.74-preview 346 6/18/2022
1.0.73-preview 294 6/16/2022
1.0.72-preview 336 6/15/2022
1.0.71-preview 363 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 479 5/23/2022
1.0.68-beta-4 320 5/23/2022
1.0.68-beta-3 361 5/16/2022
1.0.68-beta-2 339 5/16/2022
1.0.68-beta 348 5/12/2022
1.0.67-preview 435 5/11/2022
1.0.67-beta-4 333 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 337 5/10/2022
1.0.66-preview 338 5/9/2022
1.0.65-preview 342 5/4/2022
1.0.65-beta 340 4/29/2022
1.0.64-preview 352 4/26/2022
1.0.63-preview 354 4/22/2022
1.0.63-beta-6 374 4/21/2022
1.0.63-beta-5 336 4/21/2022
1.0.63-beta-4 357 4/21/2022
1.0.63-beta-3 364 4/20/2022
1.0.63-beta-2 342 4/20/2022
1.0.63-beta 341 4/19/2022
1.0.62-preview 374 4/15/2022
1.0.62-beta-6 324 4/14/2022
1.0.62-beta-5 339 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 344 4/11/2022
1.0.61-preview 394 4/7/2022
1.0.61-beta 355 4/7/2022
1.0.60-preview 379 4/6/2022
1.0.59-preview 361 4/6/2022
1.0.59-beta 382 4/6/2022
1.0.58-beta-6 344 4/6/2022
1.0.58-beta-5 361 4/5/2022
1.0.58-beta-4 350 4/5/2022
1.0.58-beta-3 323 4/5/2022
1.0.58-beta-2 355 4/5/2022
1.0.58-beta 359 4/5/2022
1.0.56-preview 367 4/1/2022
1.0.56-beta-9 354 3/28/2022
1.0.56-beta-8 352 3/28/2022
1.0.56-beta-7 344 3/28/2022
1.0.56-beta-6 374 3/28/2022
1.0.56-beta-5 328 3/25/2022
1.0.56-beta-4 342 3/24/2022
1.0.56-beta-3 357 3/22/2022
1.0.56-beta-2 346 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 332 3/28/2022
1.0.56-beta-11 361 3/28/2022
1.0.56-beta-10 363 3/28/2022
1.0.56-beta 352 3/22/2022
1.0.55-preview 379 3/22/2022
1.0.54-preview 370 3/16/2022
1.0.53-preview 344 3/16/2022
1.0.52-preview 377 3/16/2022
1.0.51-preview 352 3/15/2022
1.0.50-preview 368 3/9/2022
1.0.49-preview 348 3/3/2022
1.0.48-preview 342 2/23/2022
1.0.47-preview 382 2/21/2022
1.0.46-preview 477 2/21/2022
1.0.45-preview 330 2/18/2022
1.0.43-preview 368 2/16/2022
1.0.42-preview 408 2/10/2022
1.0.41-preview 360 2/10/2022
1.0.40-preview 359 2/10/2022
1.0.39-preview 369 2/7/2022
1.0.38-preview 380 2/4/2022
1.0.37-preview 355 2/4/2022
1.0.36-preview 399 1/25/2022
1.0.35-preview 370 1/25/2022
1.0.34-preview 342 1/25/2022
1.0.33-preview 369 1/13/2022
1.0.32-preview 414 1/13/2022
1.0.31-preview 372 1/13/2022
1.0.30-preview 368 1/13/2022
1.0.29-preview 352 1/13/2022
1.0.28-preview 361 1/12/2022
1.0.27-preview 352 1/12/2022
1.0.26-preview 380 1/12/2022
1.0.25-preview 401 1/10/2022
1.0.24-preview 369 1/6/2022
1.0.23-preview 396 1/4/2022
1.0.22-preview 335 12/15/2021
1.0.21-preview 447 12/14/2021
1.0.20-preview 455 12/14/2021
1.0.19-preview 390 12/10/2021
1.0.18-preview 414 12/9/2021
1.0.17-preview 619 12/9/2021
1.0.16-preview 357 12/9/2021
1.0.15-preview 396 12/9/2021
1.0.14-preview 417 12/9/2021
1.0.13-preview 403 12/9/2021
1.0.12-preview 381 12/9/2021
1.0.10-preview 375 12/8/2021
1.0.9-preview 417 12/7/2021
1.0.8-preview 365 12/7/2021
1.0.7-preview 387 12/7/2021
1.0.6-preview 393 12/7/2021
1.0.4-preview 368 12/3/2021
1.0.3-preview 351 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