diff --git a/src/Docusaurus/docs/about.md b/src/Docusaurus/docs/about.md
index 54a21b9e..a7739c65 100644
--- a/src/Docusaurus/docs/about.md
+++ b/src/Docusaurus/docs/about.md
@@ -44,6 +44,45 @@ To use WiX as a .NET tool or as an MSBuild SDK via `dotnet build`, you must have
To use WiX as an MSBuild SDK via `msbuild`, you must have [.NET Framework 4.7.2 or later installed](https://learn.microsoft.com/en-us/dotnet/framework/get-started/system-requirements). WiX runs on ARM64 systems as ARM64
+## Lifecycle
+
+The WiX Toolset lifecycle is composed of two release processes: major versions and servicing updates. (Given the velocity of major version releases, the WiX Toolset eschews the use of minor versions.)
+
+Note that [FireGiant customers have major version and servicing update lifecycles determined by their support contract](https://www.firegiant.com/services/wix-extended-support/?utm_source=wixtoolset.org&utm_medium=Display&utm_campaign=lifecycle&utm_term=note&utm_content=about_page). Consumers of the open source WiX Toolset project have lifecycles with dates and durations detailed below.
+
+### Major versions
+
+The WiX Toolset follows an annual release cadence for new major versions. The targeted release date is every April 5th, the anniversary of WiX's release as Open Source.
+In each of the two months before a new major version, a release candidate build is produced. That means WiX users should circle the following dates on their calendars:
+
+| Date | Release |
+| ---- | --- |
+| February 5th | v#.0-rc.1 |
+| March 5th | v#.0-rc.2 |
+| April 5th | v#.0 |
+
+### Servicing updates
+
+There are two categories of servicing updates: bug fixes and security updates.
+
+Bugs we fix for FireGiant customers can be released as bug fix updates. Other fixes and features ship in the next major version release.
+
+We strongly encourage consumers of the open source project to adopt release candidates quickly, testing them with their existing projects to help catch regressions in time to fix them before the major version release. Otherwise, it could take up to a year to get the fix.
+
+To keep both customers and consumers safe, security updates are released more widely. Specifically, security updates are provided for the current major version *and* the previous major version up to 10 months after the current version's release. The following table should make it clear.
+
+| WiX Version | Release Date | Consumer Security Fixes End Date |
+| ----------- | ------------ | ----------------------- |
+| WiX v3 | 2009/07/04 | 2025/02/06 |
+| WiX v4 | 2023/04/05 | 2025/02/05 |
+| WiX v5 | 2024/04/05 | 2026/02/05 |
+| WiX v6 | 2025/04/05 | 2027/02/05 |
+
+This provides consumers with security updates for 22 months and ensures they are protected while updating to the latest major version.
+
+Of course, FireGiant customers get [security fixes just like bug fixes as per their support contract](https://www.firegiant.com/services/wix-extended-support/?utm_source=wixtoolset.org&utm_medium=Display&utm_campaign=lifecycle&utm_term=of_course&utm_content=about_page).
+
+
## License
The WiX toolset is released under the [Microsoft Reciprocal License (MS-RL)](http://opensource.org/licenses/ms-rl). A reciprocal license is used to ensure that others who build on the effort of the WiX community give back to the WiX community. Specifically the license requires that fixes and improvements to the WiX toolset must be published using the same license.
diff --git a/src/FeedGenerator/FeedGenerator.csproj b/src/FeedGenerator/FeedGenerator.csproj
index 64764e94..4057bee8 100644
--- a/src/FeedGenerator/FeedGenerator.csproj
+++ b/src/FeedGenerator/FeedGenerator.csproj
@@ -13,6 +13,6 @@
-
+
diff --git a/src/Web/Models/ErrorEntity.cs b/src/Web/Models/ErrorEntity.cs
index f305a4ac..450bbbf0 100644
--- a/src/Web/Models/ErrorEntity.cs
+++ b/src/Web/Models/ErrorEntity.cs
@@ -1,11 +1,12 @@
-// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
namespace WixToolset.Web.Models
{
using System;
- using Microsoft.WindowsAzure.Storage.Table;
+ using Azure;
+ using Azure.Data.Tables;
- public class ErrorEntity : TableEntity
+ public class ErrorEntity : ITableEntity
{
public ErrorEntity()
{
@@ -17,6 +18,14 @@ public ErrorEntity(string site, string key = null)
this.RowKey = key ?? DateTime.UtcNow.ToString("yyyy-MM-ddTHH-mm-ss-ffff") + "-" + Guid.NewGuid().ToString("N");
}
+ public string PartitionKey { get; set; }
+
+ public string RowKey { get; set; }
+
+ public ETag ETag { get; set; } = ETag.All;
+
+ public DateTimeOffset? Timestamp { get; set; }
+
public int StatusCode { get; set; }
public string IP { get; set; }
@@ -31,4 +40,4 @@ public ErrorEntity(string site, string key = null)
public string Text { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/src/Web/Models/VisitEntity.cs b/src/Web/Models/VisitEntity.cs
index e8ce2336..366fccd0 100644
--- a/src/Web/Models/VisitEntity.cs
+++ b/src/Web/Models/VisitEntity.cs
@@ -1,11 +1,12 @@
-// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
namespace WixToolset.Web.Models
{
using System;
- using Microsoft.WindowsAzure.Storage.Table;
+ using Azure;
+ using Azure.Data.Tables;
- public class VisitEntity : TableEntity
+ public class VisitEntity : ITableEntity
{
public VisitEntity()
{
@@ -19,6 +20,14 @@ public VisitEntity(string site, string purpose, string key = null)
this.Purpose = purpose;
}
+ public string PartitionKey { get; set; }
+
+ public string RowKey { get; set; }
+
+ public ETag ETag { get; set; } = ETag.All;
+
+ public DateTimeOffset? Timestamp { get; set; }
+
public string Method { get; set; }
public string IP { get; set; }
diff --git a/src/Web/Services/StorageService.cs b/src/Web/Services/StorageService.cs
index 283c474f..7b426f7c 100644
--- a/src/Web/Services/StorageService.cs
+++ b/src/Web/Services/StorageService.cs
@@ -1,12 +1,11 @@
-// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
namespace WixToolset.Web.Services
{
using System;
using System.Diagnostics;
using System.Threading.Tasks;
- using Microsoft.WindowsAzure.Storage;
- using Microsoft.WindowsAzure.Storage.Table;
+ using Azure.Data.Tables;
using WixToolset.Web.Models;
public class StorageService : IStorageService
@@ -18,10 +17,10 @@ public StorageService(string connectionString)
throw new ArgumentNullException(nameof(connectionString));
}
- this.Storage = CloudStorageAccount.Parse(connectionString);
+ this.Storage = new TableServiceClient(connectionString);
}
- private CloudStorageAccount Storage { get; }
+ private TableServiceClient Storage { get; }
public async Task LogErrorAsync(int code, string ip, string page, string referrer, Exception exception)
{
@@ -47,15 +46,11 @@ public async Task WriteToTableStorage(string tableName, ITableEntity entity)
{
try
{
- var op = TableOperation.Insert(entity);
-
- var client = this.Storage.CreateCloudTableClient();
-
- var table = client.GetTableReference(tableName);
+ var table = this.Storage.GetTableClient(tableName);
await table.CreateIfNotExistsAsync();
- await table.ExecuteAsync(op);
+ await table.AddEntityAsync(entity);
}
catch (Exception e)
{
diff --git a/src/Web/Web.csproj b/src/Web/Web.csproj
index ce513dc6..17db233d 100644
--- a/src/Web/Web.csproj
+++ b/src/Web/Web.csproj
@@ -1,14 +1,15 @@
-
+
net6.0
-
+
+
-
+
diff --git a/src/test/XsdToMarkDownTests/XsdToMarkdownTests.csproj b/src/test/XsdToMarkDownTests/XsdToMarkdownTests.csproj
index d1e2f9fa..7cbfdd15 100644
--- a/src/test/XsdToMarkDownTests/XsdToMarkdownTests.csproj
+++ b/src/test/XsdToMarkDownTests/XsdToMarkdownTests.csproj
@@ -14,13 +14,13 @@
-
+
-
-
-
+
+
+