Initialize cross-platform workspace host scaffold
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
using Nuke.Common;
|
||||
using Nuke.Common.IO;
|
||||
using Nuke.Common.Tooling;
|
||||
using Nuke.Common.Tools.DotNet;
|
||||
using Serilog;
|
||||
using static Nuke.Common.Tools.DotNet.DotNetTasks;
|
||||
|
||||
namespace WorkspaceAccess.Build;
|
||||
|
||||
internal sealed class Build : NukeBuild
|
||||
{
|
||||
public static int Main()
|
||||
{
|
||||
Environment.SetEnvironmentVariable("NUKE_TELEMETRY_OPTOUT", "1");
|
||||
return Execute<Build>(build => build.Verify);
|
||||
}
|
||||
|
||||
[Parameter("Build configuration (Debug or Release).")]
|
||||
readonly string Configuration = "Release";
|
||||
|
||||
[Parameter("Publish runtime: win-x64, win-arm64, linux-x64 or linux-arm64.")]
|
||||
readonly string? Runtime;
|
||||
|
||||
[Parameter("Require dependency versions from packages.lock.json.")]
|
||||
readonly bool LockedRestore;
|
||||
|
||||
AbsolutePath SolutionFile => RootDirectory / "WorkspaceAccessHost.slnx";
|
||||
AbsolutePath ProductProject => RootDirectory / "src/WorkspaceAccessHost.csproj";
|
||||
AbsolutePath TestProject => RootDirectory / "tests/WorkspaceAccessHost.Tests/WorkspaceAccessHost.Tests.csproj";
|
||||
AbsolutePath Artifacts => RootDirectory / "artifacts";
|
||||
|
||||
Target Restore => _ => _
|
||||
.Executes(() => DotNetRestore(settings => settings
|
||||
.SetProjectFile(SolutionFile)
|
||||
.SetLockedMode(LockedRestore)));
|
||||
|
||||
Target Compile => _ => _
|
||||
.DependsOn(Restore)
|
||||
.Executes(() => DotNetBuild(settings => settings
|
||||
.SetProjectFile(SolutionFile)
|
||||
.SetConfiguration(Configuration)
|
||||
.SetProcessAdditionalArguments("--disable-build-servers")
|
||||
.EnableNoRestore()));
|
||||
|
||||
Target Test => _ => _
|
||||
.DependsOn(Compile)
|
||||
.Executes(() => DotNetTest(settings => settings
|
||||
.SetProjectFile(TestProject)
|
||||
.SetConfiguration(Configuration)
|
||||
.EnableNoBuild()
|
||||
.EnableNoRestore()
|
||||
.SetResultsDirectory(Artifacts / "test-results")
|
||||
.SetLoggers("trx;LogFileName=workspace-access.trx")));
|
||||
|
||||
Target CheckDocs => _ => _
|
||||
.Executes(() => DocumentationChecks.Validate(RootDirectory));
|
||||
|
||||
Target Verify => _ => _
|
||||
.DependsOn(CheckDocs, Test);
|
||||
|
||||
Target Publish => _ => _
|
||||
.DependsOn(Verify)
|
||||
.Requires(() => Runtime)
|
||||
.Executes(() =>
|
||||
{
|
||||
string[] supported = ["win-x64", "win-arm64", "linux-x64", "linux-arm64"];
|
||||
if (!supported.Contains(Runtime, StringComparer.Ordinal))
|
||||
{
|
||||
throw new ArgumentException($"Runtime must be one of: {string.Join(", ", supported)}.");
|
||||
}
|
||||
|
||||
var destination = Artifacts / "publish" / Runtime!;
|
||||
DotNetPublish(settings => settings
|
||||
.SetProject(ProductProject)
|
||||
.SetConfiguration(Configuration)
|
||||
.SetRuntime(Runtime)
|
||||
.SetProcessAdditionalArguments("--disable-build-servers")
|
||||
.SetSelfContained(true)
|
||||
.SetProperty("RestoreLockedMode", LockedRestore)
|
||||
.SetOutput(destination));
|
||||
|
||||
var deployment = Runtime!.StartsWith("win-", StringComparison.Ordinal) ? "windows" : "linux";
|
||||
CopyDirectory(RootDirectory / "deploy" / deployment, destination / "deploy");
|
||||
Log.Information("Published WorkspaceAccessHost to {Directory}", destination);
|
||||
});
|
||||
|
||||
Target RunHost => _ => _
|
||||
.DependsOn(Compile)
|
||||
.Executes(() => DotNetRun(settings => settings
|
||||
.SetProjectFile(ProductProject)
|
||||
.SetConfiguration(Configuration)
|
||||
.SetApplicationArguments("host")
|
||||
.EnableNoBuild()
|
||||
.EnableNoRestore()));
|
||||
|
||||
Target RunAgent => _ => _
|
||||
.DependsOn(Compile)
|
||||
.Executes(() => DotNetRun(settings => settings
|
||||
.SetProjectFile(ProductProject)
|
||||
.SetConfiguration(Configuration)
|
||||
.SetApplicationArguments("agent")
|
||||
.EnableNoBuild()
|
||||
.EnableNoRestore()));
|
||||
|
||||
private static void CopyDirectory(string source, string destination)
|
||||
{
|
||||
Directory.CreateDirectory(destination);
|
||||
foreach (var file in Directory.EnumerateFiles(source, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
var target = Path.Combine(destination, Path.GetRelativePath(source, file));
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(target)!);
|
||||
File.Copy(file, target, overwrite: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<IsPackable>false</IsPackable>
|
||||
<RootNamespace>WorkspaceAccess.Build</RootNamespace>
|
||||
<NoWarn>$(NoWarn);CS0649</NoWarn>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Nuke.Common" />
|
||||
<PackageReference Include="NuGet.Packaging" PrivateAssets="all" />
|
||||
<PackageReference Include="System.Security.Cryptography.Xml" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,82 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using Serilog;
|
||||
|
||||
namespace WorkspaceAccess.Build;
|
||||
|
||||
internal static partial class DocumentationChecks
|
||||
{
|
||||
public static void Validate(string root)
|
||||
{
|
||||
var documents = Directory.EnumerateFiles(Path.Combine(root, "docs"), "*.md", SearchOption.AllDirectories)
|
||||
.Concat(Directory.EnumerateFiles(root, "*.md", SearchOption.TopDirectoryOnly))
|
||||
.Concat(Directory.EnumerateFiles(Path.Combine(root, "deploy"), "*.md", SearchOption.AllDirectories))
|
||||
.ToArray();
|
||||
var links = new Dictionary<string, List<string>>(StringComparer.Ordinal);
|
||||
foreach (var document in documents)
|
||||
{
|
||||
var content = File.ReadAllText(document);
|
||||
if (!content.StartsWith("# ", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException($"Document needs a title: {document}");
|
||||
}
|
||||
|
||||
var targets = new List<string>();
|
||||
foreach (Match match in MarkdownLink().Matches(content))
|
||||
{
|
||||
var link = match.Groups[1].Value;
|
||||
if (link.StartsWith('#') || Uri.TryCreate(link, UriKind.Absolute, out _))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var target = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(document)!,
|
||||
Uri.UnescapeDataString(link.Split('#')[0])));
|
||||
if (!File.Exists(target) && !Directory.Exists(target))
|
||||
{
|
||||
throw new InvalidOperationException($"Broken link in {document}: {link}");
|
||||
}
|
||||
|
||||
targets.Add(target);
|
||||
}
|
||||
|
||||
links[Path.GetFullPath(document)] = targets;
|
||||
}
|
||||
|
||||
var visited = new HashSet<string>(StringComparer.Ordinal);
|
||||
var pending = new Queue<string>();
|
||||
pending.Enqueue(Path.Combine(root, "README.md"));
|
||||
while (pending.TryDequeue(out var current))
|
||||
{
|
||||
if (visited.Add(current) && links.TryGetValue(current, out var targets))
|
||||
{
|
||||
foreach (var target in targets)
|
||||
{
|
||||
pending.Enqueue(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var document in Directory.EnumerateFiles(Path.Combine(root, "docs"), "*.md", SearchOption.AllDirectories))
|
||||
{
|
||||
if (!visited.Contains(Path.GetFullPath(document)))
|
||||
{
|
||||
throw new InvalidOperationException($"Document must be reachable from README: {document}");
|
||||
}
|
||||
}
|
||||
|
||||
var overview = File.ReadAllText(Path.Combine(root, "docs", "overview.md"));
|
||||
foreach (var document in Directory.EnumerateFiles(Path.Combine(root, "docs", "platforms"), "*.md"))
|
||||
{
|
||||
var expectedLink = $"platforms/{Path.GetFileName(document)}";
|
||||
if (!overview.Contains($"]({expectedLink})", StringComparison.Ordinal))
|
||||
{
|
||||
throw new InvalidOperationException($"Platform difference needs an overview link: {expectedLink}");
|
||||
}
|
||||
}
|
||||
|
||||
Log.Information("Validated {Count} documents, local link targets, reachability and platform coverage.", documents.Length);
|
||||
}
|
||||
|
||||
[GeneratedRegex(@"\[[^\]]+\]\(([^)\s]+)\)")]
|
||||
private static partial Regex MarkdownLink();
|
||||
}
|
||||
@@ -0,0 +1,514 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dependencies": {
|
||||
"net10.0": {
|
||||
"NuGet.Packaging": {
|
||||
"type": "Direct",
|
||||
"requested": "[6.12.5, )",
|
||||
"resolved": "6.12.5",
|
||||
"contentHash": "jQ5SCP29VgDVxxyFS/Tkg3lIngPeKoVxHdY7xfZNOyIPousbck6SnnqAEt2kZGfvjxFiSePcsKYu99CI/nE/JQ==",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"NuGet.Configuration": "6.12.5",
|
||||
"NuGet.Versioning": "6.12.5",
|
||||
"System.Security.Cryptography.Pkcs": "6.0.4"
|
||||
}
|
||||
},
|
||||
"Nuke.Common": {
|
||||
"type": "Direct",
|
||||
"requested": "[10.1.0, )",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "bymYGBes5vZUEu4eMkp1zDAbXcEpJQgRo6UcIGIWqsCUpSZIwfozuyRKVpk6lWP5KX6ep8x/XC08KLXlC6D6yg==",
|
||||
"dependencies": {
|
||||
"Azure.Identity": "1.17.1",
|
||||
"Azure.Security.KeyVault.Certificates": "4.8.0",
|
||||
"Azure.Security.KeyVault.Keys": "4.8.0",
|
||||
"Azure.Security.KeyVault.Secrets": "4.8.0",
|
||||
"Nuke.Build": "10.1.0",
|
||||
"Nuke.Build.Shared": "10.1.0",
|
||||
"Nuke.ProjectModel": "10.1.0",
|
||||
"Nuke.SolutionModel": "10.1.0",
|
||||
"Nuke.Tooling": "10.1.0",
|
||||
"Nuke.Utilities": "10.1.0",
|
||||
"Nuke.Utilities.IO.Compression": "10.1.0",
|
||||
"Nuke.Utilities.IO.Globbing": "10.1.0",
|
||||
"Nuke.Utilities.Net": "10.1.0",
|
||||
"Nuke.Utilities.Text.Json": "10.1.0",
|
||||
"Octokit": "14.0.0"
|
||||
}
|
||||
},
|
||||
"System.Security.Cryptography.Xml": {
|
||||
"type": "Direct",
|
||||
"requested": "[10.0.12, )",
|
||||
"resolved": "10.0.12",
|
||||
"contentHash": "T3snzcc04R1JDj2XmzrLyk5fHT0YroBz5o2P+YdyJKYePSMqp8JsrxEJQPvUnK6oozQBvKLki9vnI7uMuWepKQ==",
|
||||
"dependencies": {
|
||||
"System.Security.Cryptography.Pkcs": "10.0.12"
|
||||
}
|
||||
},
|
||||
"Azure.Core": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.50.0",
|
||||
"contentHash": "GBNKZEhdIbTXxedvD3R7I/yDVFX9jJJEz02kCziFSJxspSQ5RMHc3GktulJ1s7+ffXaXD7kMgrtdQTaggyInLw==",
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.AsyncInterfaces": "8.0.0",
|
||||
"System.ClientModel": "1.8.0",
|
||||
"System.Memory.Data": "8.0.1"
|
||||
}
|
||||
},
|
||||
"Azure.Identity": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.17.1",
|
||||
"contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==",
|
||||
"dependencies": {
|
||||
"Azure.Core": "1.50.0",
|
||||
"Microsoft.Identity.Client": "4.78.0",
|
||||
"Microsoft.Identity.Client.Extensions.Msal": "4.78.0"
|
||||
}
|
||||
},
|
||||
"Azure.Security.KeyVault.Certificates": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.8.0",
|
||||
"contentHash": "48EHvsZM0hQow0PP4PAkWZYcE/tmjfx7az07GrqU2Q/0p3O3Vm/F+bEu1iVREBYzSV7uHHPikyJyBnXClfKuJA==",
|
||||
"dependencies": {
|
||||
"Azure.Core": "1.46.2"
|
||||
}
|
||||
},
|
||||
"Azure.Security.KeyVault.Keys": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.8.0",
|
||||
"contentHash": "3rueqKRzNZdW+gEWox07Hpxq3n+0AZdRw3QI4GC3GBzLCw9n00LXgy4upow00bAuQJ9QGX2xwzJPg2/wALPYDA==",
|
||||
"dependencies": {
|
||||
"Azure.Core": "1.46.2"
|
||||
}
|
||||
},
|
||||
"Azure.Security.KeyVault.Secrets": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.8.0",
|
||||
"contentHash": "tmcIgo+de2K5+PTBRNlnFLQFbmSoyuT9RpDr5MwKS6mIfNxLPQpARkRAP91r3tmeiJ9j/UCO0F+hTlk1Bk7HNQ==",
|
||||
"dependencies": {
|
||||
"Azure.Core": "1.46.2"
|
||||
}
|
||||
},
|
||||
"Glob": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.1.9",
|
||||
"contentHash": "AfK5+ECWYTP7G3AAdnU8IfVj+QpGjrh9GC2mpdcJzCvtQ4pnerAGwHsxJ9D4/RnhDUz2DSzd951O/lQjQby2Sw=="
|
||||
},
|
||||
"JetBrains.Annotations": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2025.2.2",
|
||||
"contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
|
||||
},
|
||||
"matkoch.Microsoft.VisualStudio.SolutionPersistence": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.0.61",
|
||||
"contentHash": "EfEzClmsFSy1ukbJ9MeDB0zdAZ2k9HLxd6I3Hiv9Gz14Ql26XQ0GVXJESjTda0T78K/7UiraDx3w5AwRkxb5lg=="
|
||||
},
|
||||
"Microsoft.ApplicationInsights": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.23.0",
|
||||
"contentHash": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw=="
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw=="
|
||||
},
|
||||
"Microsoft.Build": {
|
||||
"type": "Transitive",
|
||||
"resolved": "18.0.2",
|
||||
"contentHash": "MlcYsFVJbA7S1ByOf9DbuPMQ08nlF88VkqkIjmBkIiasA/M0Zo87H6Vk44e/SuLffomGGYSr2Hh5El6UEDDgKw==",
|
||||
"dependencies": {
|
||||
"Microsoft.Build.Framework": "18.0.2",
|
||||
"Microsoft.NET.StringTools": "18.0.2",
|
||||
"System.Configuration.ConfigurationManager": "9.0.0",
|
||||
"System.Diagnostics.EventLog": "9.0.0",
|
||||
"System.Reflection.MetadataLoadContext": "9.0.0",
|
||||
"System.Security.Cryptography.ProtectedData": "9.0.6"
|
||||
}
|
||||
},
|
||||
"Microsoft.Build.Framework": {
|
||||
"type": "Transitive",
|
||||
"resolved": "18.0.2",
|
||||
"contentHash": "sOSb+0J4G/jCBW/YqmRuL0eOMXgfw1KQLdC9TkbvfA5xs7uNm+PBQXJCOzSJGXtZcZrtXozcwxPmUiRUbmd7FA=="
|
||||
},
|
||||
"Microsoft.Build.Locator": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.7.8",
|
||||
"contentHash": "sPy10x527Ph16S2u0yGME4S6ohBKJ69WfjeGG/bvELYeZVmJdKjxgnlL8cJJJLGV/cZIRqSfB12UDB8ICakOog=="
|
||||
},
|
||||
"Microsoft.Build.Tasks.Core": {
|
||||
"type": "Transitive",
|
||||
"resolved": "18.0.2",
|
||||
"contentHash": "ff9DeP4WUVxk6Ojm7qcK4HC+zXaKl0IJYXhS+lC51Sx76QtaQfPGZDJz9Go5ERQecmPV/HZ5brZAa9U36l2laA==",
|
||||
"dependencies": {
|
||||
"Microsoft.Build.Framework": "18.0.2",
|
||||
"Microsoft.Build.Utilities.Core": "18.0.2",
|
||||
"Microsoft.NET.StringTools": "18.0.2",
|
||||
"System.CodeDom": "9.0.0",
|
||||
"System.Configuration.ConfigurationManager": "9.0.0",
|
||||
"System.Diagnostics.EventLog": "9.0.0",
|
||||
"System.Formats.Nrbf": "9.0.0",
|
||||
"System.Resources.Extensions": "9.0.0",
|
||||
"System.Security.Cryptography.Pkcs": "9.0.6",
|
||||
"System.Security.Cryptography.ProtectedData": "9.0.6",
|
||||
"System.Security.Cryptography.Xml": "9.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.Build.Utilities.Core": {
|
||||
"type": "Transitive",
|
||||
"resolved": "18.0.2",
|
||||
"contentHash": "qsI2Mc8tbJEyg5m4oTvxlu5wY8te0TIVxObxILvrrPdeFUwH5V5UXUT2RV054b3S9msIR+7zViTWp4nRp0YGbQ==",
|
||||
"dependencies": {
|
||||
"Microsoft.Build.Framework": "18.0.2",
|
||||
"Microsoft.NET.StringTools": "18.0.2",
|
||||
"System.Configuration.ConfigurationManager": "9.0.0",
|
||||
"System.Diagnostics.EventLog": "9.0.0",
|
||||
"System.Security.Cryptography.ProtectedData": "9.0.6"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.2",
|
||||
"contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg=="
|
||||
},
|
||||
"Microsoft.Extensions.DependencyModel": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.0.0",
|
||||
"contentHash": "RFYJR7APio/BiqdQunRq6DB+nDB6nc2qhHr77mlvZ0q0BT8PubMXN7XicmfzCbrDE/dzhBnUKBRXLTcqUiZDGg=="
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.3",
|
||||
"contentHash": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
|
||||
}
|
||||
},
|
||||
"Microsoft.Identity.Client": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.78.0",
|
||||
"contentHash": "vZ50HE9INSN+Ew8pCgTm0t7wzxQTqozF9L4MAsl64etXz0Teo0dbUvjpVzqDHRs6m1Vn8mHF04fGaxXrIvGpsg==",
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": "8.14.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.Identity.Client.Extensions.Msal": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.78.0",
|
||||
"contentHash": "DYU9o+DrDQuyZxeq91GBA9eNqBvA3ZMkLzQpF7L9dTk6FcIBM1y1IHXWqiKXTvptPF7CZE59upbyUoa+FJ5eiA==",
|
||||
"dependencies": {
|
||||
"Microsoft.Identity.Client": "4.78.0",
|
||||
"System.Security.Cryptography.ProtectedData": "4.5.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Abstractions": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.14.0",
|
||||
"contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ=="
|
||||
},
|
||||
"Microsoft.NET.StringTools": {
|
||||
"type": "Transitive",
|
||||
"resolved": "18.0.2",
|
||||
"contentHash": "cTZw3GHkAlqZACYGeQT3niS3UfVQ8CH0O5+zUdhxstrg1Z8Q2ViXYFKjSxHmEXTX85mrOT/QnHZOeQhhSsIrkQ=="
|
||||
},
|
||||
"Namotion.Reflection": {
|
||||
"type": "Transitive",
|
||||
"resolved": "3.4.3",
|
||||
"contentHash": "KLk2gLR9f8scM82EiL+p9TONXXPy9+IAZVMzJOA/Wsa7soZD7UJGG6j0fq0D9ZoVnBRRnSeEC7kShhRo3Olgaw=="
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"type": "Transitive",
|
||||
"resolved": "13.0.4",
|
||||
"contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A=="
|
||||
},
|
||||
"NJsonSchema": {
|
||||
"type": "Transitive",
|
||||
"resolved": "11.5.2",
|
||||
"contentHash": "CAmnt4tnylb82Ro6f2EFIGz8rmThuCsITECUNqGhVEQ5VvxV+XwsTPz6LF58MbvUEV1jVcH+uxxljgM/etgK7A==",
|
||||
"dependencies": {
|
||||
"NJsonSchema.Annotations": "11.5.2",
|
||||
"Namotion.Reflection": "3.4.3",
|
||||
"Newtonsoft.Json": "13.0.3"
|
||||
}
|
||||
},
|
||||
"NJsonSchema.Annotations": {
|
||||
"type": "Transitive",
|
||||
"resolved": "11.5.2",
|
||||
"contentHash": "OfYQgNzJZb1r/gR5vza0DbBLxnmcITDhA5CXFuX1qxuP3rRdQMjbIz5VyDVHCU1QxyrfAymzajbh7iszEvyFGQ=="
|
||||
},
|
||||
"NJsonSchema.NewtonsoftJson": {
|
||||
"type": "Transitive",
|
||||
"resolved": "11.5.2",
|
||||
"contentHash": "2KuhjeP/E/hqixoKRjKUXD56V8gBkEB51gdbTU2gN2AeabCG4gW5YsAUl+ZumFgj0cbEJ7GKdl9IBdeZaLxiTA==",
|
||||
"dependencies": {
|
||||
"NJsonSchema": "11.5.2",
|
||||
"Newtonsoft.Json": "13.0.3"
|
||||
}
|
||||
},
|
||||
"NuGet.Common": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.12.5",
|
||||
"contentHash": "ceynBLlidkZIfrLdujE3f9FDYTLjs884sRL0zrX3PgTbGGfrLxZGz8KciHsqEnSBqMwpimbxdNrDcorU+Zd9oA==",
|
||||
"dependencies": {
|
||||
"NuGet.Frameworks": "6.12.5"
|
||||
}
|
||||
},
|
||||
"NuGet.Configuration": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.12.5",
|
||||
"contentHash": "6ZHtYcHdMrnWWfeiMBrZTtytnjmb9N7eh4S26peV6mBQF71Mv/7X0gyw0VW9ZfEkm31sVD736a7mKNHf7wee1Q==",
|
||||
"dependencies": {
|
||||
"NuGet.Common": "6.12.5",
|
||||
"System.Security.Cryptography.ProtectedData": "4.4.0"
|
||||
}
|
||||
},
|
||||
"NuGet.Frameworks": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.12.5",
|
||||
"contentHash": "myEA6gdCZLHrcMSbOFxqaIfYkMFpMePup35qZlYUxSQNrL0WG8im3/pc8trrd9ArqdO8cgKhm9DnZrnYCu33Zg=="
|
||||
},
|
||||
"NuGet.Versioning": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.12.5",
|
||||
"contentHash": "9/Sniz+tzNAjcSziMmh62PIbF1mxaSC+P5Mdw1LgMleCbeaObjkkR/RUlduu6yCL3EfruACO/uknDJ5xCH3quQ=="
|
||||
},
|
||||
"Nuke.Build": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "6fW17c3K1M4jw4acp7sujpqSiN8UbZPudBvS9+LEpmH2iwf8uZ0rue1G1D+WNurAMK1p3kOH5qo1M99rwFtSrQ==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.23.0",
|
||||
"Microsoft.Extensions.DependencyModel": "10.0.0",
|
||||
"NJsonSchema": "11.5.2",
|
||||
"NJsonSchema.NewtonsoftJson": "11.5.2",
|
||||
"Nuke.Build.Shared": "10.1.0",
|
||||
"Nuke.ProjectModel": "10.1.0",
|
||||
"Nuke.SolutionModel": "10.1.0",
|
||||
"Nuke.Tooling": "10.1.0",
|
||||
"Nuke.Utilities": "10.1.0",
|
||||
"Nuke.Utilities.IO.Globbing": "10.1.0",
|
||||
"Nuke.Utilities.Net": "10.1.0",
|
||||
"Nuke.Utilities.Text.Json": "10.1.0",
|
||||
"Nuke.Utilities.Text.Yaml": "10.1.0",
|
||||
"Serilog.Formatting.Compact": "3.0.0",
|
||||
"Serilog.Formatting.Compact.Reader": "4.0.0",
|
||||
"Serilog.Sinks.Console": "6.1.1",
|
||||
"Serilog.Sinks.File": "7.0.0"
|
||||
}
|
||||
},
|
||||
"Nuke.Build.Shared": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "4uwzKj5IbjOeKbVtCScPuFlBAPQvG9z/K9I7zvR7tUFFtXNqBfIZmy+lbOdgxy7YsKWO7xgvAtIC4VCem7AKLA==",
|
||||
"dependencies": {
|
||||
"Nuke.Utilities": "10.1.0"
|
||||
}
|
||||
},
|
||||
"Nuke.ProjectModel": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "qOd7BAH/dnfJPxPipjB/slQK6K9FJOPzzj/Kbq4INJtfJod6dRm6Zu9yTk/l1CLRC68CQIVM3OLb1v3NxXgejw==",
|
||||
"dependencies": {
|
||||
"Microsoft.Build": "18.0.2",
|
||||
"Microsoft.Build.Framework": "18.0.2",
|
||||
"Microsoft.Build.Locator": "1.7.8",
|
||||
"Microsoft.Build.Tasks.Core": "18.0.2",
|
||||
"Microsoft.Build.Utilities.Core": "18.0.2",
|
||||
"Nuke.SolutionModel": "10.1.0",
|
||||
"Nuke.Tooling": "10.1.0",
|
||||
"Nuke.Utilities": "10.1.0"
|
||||
}
|
||||
},
|
||||
"Nuke.SolutionModel": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "A/jWyMVrwbT8Oh/X658/MjKLIr8BXWU9gL46FhWGRebgxiwlcuesV7AO5EXiaDH2MaR8RC6Bm0PIw+4OP7PBkQ==",
|
||||
"dependencies": {
|
||||
"Nuke.Utilities": "10.1.0",
|
||||
"matkoch.Microsoft.VisualStudio.SolutionPersistence": "1.0.61"
|
||||
}
|
||||
},
|
||||
"Nuke.Tooling": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "Ilne9MWjyKV99zdlg1Fw2vylWGqCPjGxzbcpW9mdxVZhpNSgA4lSGvaoUBVAd2FjG6ynNmLCZY3Nz+g8QmuHMw==",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.4",
|
||||
"NuGet.Packaging": "6.12.1",
|
||||
"Nuke.Utilities": "10.1.0",
|
||||
"Nuke.Utilities.Text.Json": "10.1.0",
|
||||
"Serilog": "4.3.0"
|
||||
}
|
||||
},
|
||||
"Nuke.Utilities": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "jLjpdbP751BNiMllC4wreUtGuo436YsntNttPWV9qfthVx11gJJvxR5ASHFiI7mD1+NOXbgP8zFNH+QXxqSM+Q==",
|
||||
"dependencies": {
|
||||
"JetBrains.Annotations": "2025.2.2"
|
||||
}
|
||||
},
|
||||
"Nuke.Utilities.IO.Compression": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "6aJuGPmh34XjqGIzCWPEGlyk/7q5oH1BwvHIoc+TqeP/pgHUPHBs1EeXIcIyzTzfsOhQ5l4AYTRNwo0PBX8I7w==",
|
||||
"dependencies": {
|
||||
"Nuke.Utilities": "10.1.0",
|
||||
"SharpZipLib": "1.4.2"
|
||||
}
|
||||
},
|
||||
"Nuke.Utilities.IO.Globbing": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "BDUEnifcXnpdZYOesxMdniLBxqVYXPwlH1WsKlmSEIhZ8JetII4LZcLO1sjEgMays6LmakH/SaH3p3ELEV5Fyw==",
|
||||
"dependencies": {
|
||||
"Glob": "1.1.9",
|
||||
"Nuke.Utilities": "10.1.0"
|
||||
}
|
||||
},
|
||||
"Nuke.Utilities.Net": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "UcdmLosYd5PcFjTqaEnSC5UOmukXp1VXtOroDnQshPJR2Bn2SUuse38eOkvjCN7IemQIN2Q+fYceJAeuQyJ7pQ==",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.4",
|
||||
"Nuke.Utilities": "10.1.0"
|
||||
}
|
||||
},
|
||||
"Nuke.Utilities.Text.Json": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "MEqDU6eeum4uzLz+jgMFuFcaZy/bpbWtz8rLl9i7T4wW8Q+YMgPXZ7RHhzPhcwEG3n8TvV4jnDImfPcqNx065Q==",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.4",
|
||||
"Nuke.Utilities": "10.1.0"
|
||||
}
|
||||
},
|
||||
"Nuke.Utilities.Text.Yaml": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.1.0",
|
||||
"contentHash": "bO3dEpQcDk5He851rQzyrPyuLI3vL0q8EGZG7qFP4soMYHIPjSP68A/BQdWJOCmv4/zpMMYuKUBnhSeTD2BJAQ==",
|
||||
"dependencies": {
|
||||
"Nuke.Utilities": "10.1.0",
|
||||
"YamlDotNet": "16.3.0"
|
||||
}
|
||||
},
|
||||
"Octokit": {
|
||||
"type": "Transitive",
|
||||
"resolved": "14.0.0",
|
||||
"contentHash": "jGOuTH1l+TCpJH+fwYOp7USzHDuGfN1jKbLz3J2COwyn+wL08eynvpnM6rY2qkzIEXum3PN2p2QkP3BW/p9Qcw=="
|
||||
},
|
||||
"Serilog": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.3.0",
|
||||
"contentHash": "+cDryFR0GRhsGOnZSKwaDzRRl4MupvJ42FhCE4zhQRVanX0Jpg6WuCBk59OVhVDPmab1bB+nRykAnykYELA9qQ=="
|
||||
},
|
||||
"Serilog.Formatting.Compact": {
|
||||
"type": "Transitive",
|
||||
"resolved": "3.0.0",
|
||||
"contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==",
|
||||
"dependencies": {
|
||||
"Serilog": "4.0.0"
|
||||
}
|
||||
},
|
||||
"Serilog.Formatting.Compact.Reader": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.0.0",
|
||||
"contentHash": "E1gvPAx0AsQhlyzGwgcVnGe5QrdkSugwKh+6V/FUSdTMVKKPSiO6Ff5iosjBMNBvq244Zys7BhTfFmgCE0KUyQ==",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"Serilog": "4.0.0"
|
||||
}
|
||||
},
|
||||
"Serilog.Sinks.Console": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.1.1",
|
||||
"contentHash": "8jbqgjUyZlfCuSTaJk6lOca465OndqOz3KZP6Cryt/IqZYybyBu7GP0fE/AXBzrrQB3EBmQntBFAvMVz1COvAA==",
|
||||
"dependencies": {
|
||||
"Serilog": "4.0.0"
|
||||
}
|
||||
},
|
||||
"Serilog.Sinks.File": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.0",
|
||||
"contentHash": "fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==",
|
||||
"dependencies": {
|
||||
"Serilog": "4.2.0"
|
||||
}
|
||||
},
|
||||
"SharpZipLib": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.4.2",
|
||||
"contentHash": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A=="
|
||||
},
|
||||
"System.ClientModel": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.8.0",
|
||||
"contentHash": "AqRzhn0v29GGGLj/Z6gKq4lGNtvPHT4nHdG5PDJh9IfVjv/nYUVmX11hwwws1vDFeIAzrvmn0dPu8IjLtu6fAw==",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "8.0.3",
|
||||
"System.Memory.Data": "8.0.1"
|
||||
}
|
||||
},
|
||||
"System.CodeDom": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.0",
|
||||
"contentHash": "oTE5IfuMoET8yaZP/vdvy9xO47guAv/rOhe4DODuFBN3ySprcQOlXqO3j+e/H/YpKKR5sglrxRaZ2HYOhNJrqA=="
|
||||
},
|
||||
"System.Configuration.ConfigurationManager": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.0",
|
||||
"contentHash": "PdkuMrwDhXoKFo/JxISIi9E8L+QGn9Iquj2OKDWHB6Y/HnUOuBouF7uS3R4Hw3FoNmwwMo6hWgazQdyHIIs27A==",
|
||||
"dependencies": {
|
||||
"System.Diagnostics.EventLog": "9.0.0",
|
||||
"System.Security.Cryptography.ProtectedData": "9.0.0"
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.EventLog": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.0",
|
||||
"contentHash": "qd01+AqPhbAG14KtdtIqFk+cxHQFZ/oqRSCoxU1F+Q6Kv0cl726sl7RzU9yLFGd4BUOKdN4XojXF0pQf/R6YeA=="
|
||||
},
|
||||
"System.Formats.Nrbf": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.0",
|
||||
"contentHash": "F/6tNE+ckmdFeSQAyQo26bQOqfPFKEfZcuqnp4kBE6/7jP26diP+QTHCJJ6vpEfaY6bLy+hBLiIQUSxSmNwLkA=="
|
||||
},
|
||||
"System.Memory.Data": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.1",
|
||||
"contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg=="
|
||||
},
|
||||
"System.Reflection.MetadataLoadContext": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.0",
|
||||
"contentHash": "nGdCUVhEQ9/CWYqgaibYEDwIJjokgIinQhCnpmtZfSXdMS6ysLZ8p9xvcJ8VPx6Xpv5OsLIUrho4B9FN+VV/tw=="
|
||||
},
|
||||
"System.Resources.Extensions": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.0",
|
||||
"contentHash": "tvhuT1D2OwPROdL1kRWtaTJliQo0WdyhvwDpd8RM997G7m3Hya5nhbYhNTS75x6Vu+ypSOgL5qxDCn8IROtCxw==",
|
||||
"dependencies": {
|
||||
"System.Formats.Nrbf": "9.0.0"
|
||||
}
|
||||
},
|
||||
"System.Security.Cryptography.Pkcs": {
|
||||
"type": "Transitive",
|
||||
"resolved": "10.0.12",
|
||||
"contentHash": "W6BsawU2tB2qy6u4+3cBOSOmiTUgYWW365b5WMVA1bDxQwZZeNWD+qufKJkDQNKzAKq4b6Q04DDKhmr2SNJ1eg=="
|
||||
},
|
||||
"System.Security.Cryptography.ProtectedData": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.0.6",
|
||||
"contentHash": "yErfw/3pZkJE/VKza/Cm5idTpIKOy/vsmVi59Ta5SruPVtubzxb8CtnE8tyUpzs5pr0Y28GUFfSVzAhCLN3F/Q=="
|
||||
},
|
||||
"YamlDotNet": {
|
||||
"type": "Transitive",
|
||||
"resolved": "16.3.0",
|
||||
"contentHash": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA=="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user