Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 207805bad3 | |||
| 6904e0cfd8 | |||
| 093da5d0f3 | |||
| c6570c1e2c | |||
| ad729133a6 | |||
| 05a0540476 | |||
| b61d0836ac | |||
| 81bb2ea5c4 | |||
| ec8829bef2 |
@@ -0,0 +1 @@
|
|||||||
|
bin/
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal sealed class Content : Item {
|
|
||||||
public Content(XmlElement node) : base(node) { }
|
|
||||||
}
|
|
||||||
+1
-1
@@ -96,7 +96,7 @@ namespace aeqw89.tools.Publish {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Failed to pack; ensure that 'dotnet build' succeeds before running this program..
|
/// Looks up a localized string similar to Failed to pack with exit code '{0}'; ensure that 'dotnet build' succeeds before running this program..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal static string dotnet_pack_failure {
|
internal static string dotnet_pack_failure {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
<value>The project file '{0}' is irreparable becuase it is missing a '{1}' property, and the value cannot be guessed.</value>
|
<value>The project file '{0}' is irreparable becuase it is missing a '{1}' property, and the value cannot be guessed.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="dotnet_pack_failure" xml:space="preserve">
|
<data name="dotnet_pack_failure" xml:space="preserve">
|
||||||
<value>Failed to pack; ensure that 'dotnet build' succeeds before running this program.</value>
|
<value>Failed to pack with exit code '{0}'; ensure that 'dotnet build' succeeds before running this program.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="failed_to_clean_up" xml:space="preserve">
|
<data name="failed_to_clean_up" xml:space="preserve">
|
||||||
<value>Could not delete temporary directory '{0}' due to error '{1}'</value>
|
<value>Could not delete temporary directory '{0}' due to error '{1}'</value>
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal class Item {
|
|
||||||
public string ElementName { get; protected set; }
|
|
||||||
public string Include {
|
|
||||||
get => Node.GetAttribute("Include");
|
|
||||||
set => Node.SetAttribute("Include", value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Version {
|
|
||||||
get => Node.GetAttribute("Version");
|
|
||||||
set => Node.SetAttribute("Version", value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string? Value {
|
|
||||||
get => Node.InnerText;
|
|
||||||
set { Node.InnerText = value ?? string.Empty; }
|
|
||||||
}
|
|
||||||
public XmlElement Node { get; }
|
|
||||||
|
|
||||||
protected Item(XmlElement node) {
|
|
||||||
Node = node;
|
|
||||||
ElementName = node.Name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Item FromElement(XmlElement element) {
|
|
||||||
return element.Name switch {
|
|
||||||
"PackageReference" => new PackageReference(element),
|
|
||||||
"ProjectReference" => new ProjectReference(element),
|
|
||||||
"Content" => new Content(element),
|
|
||||||
_ => new Item(element),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddChild(Item child) {
|
|
||||||
var imported = Node.OwnerDocument!.ImportNode(child.Node, true);
|
|
||||||
Node.AppendChild(imported);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string? GetAttribute(string name) => Node.HasAttribute(name) ? Node.GetAttribute(name) : null;
|
|
||||||
public void SetAttribute(string name, string? value) {
|
|
||||||
if (value is null) {
|
|
||||||
if (Node.HasAttribute(name)) Node.RemoveAttribute(name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Node.SetAttribute(name, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<Item> GetChildElements() {
|
|
||||||
foreach (var e in Node.ChildNodes.OfType<XmlElement>())
|
|
||||||
yield return new Item(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal class ItemGroup {
|
|
||||||
private readonly XmlElement _element;
|
|
||||||
public List<Item> Items { get; }
|
|
||||||
|
|
||||||
public void Remove() {
|
|
||||||
_element.ParentNode!.RemoveChild(_element);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemGroup(XmlElement element) {
|
|
||||||
_element = element;
|
|
||||||
Items = element.ChildNodes
|
|
||||||
.OfType<XmlElement>()
|
|
||||||
.Select(Item.FromElement)
|
|
||||||
.ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Add(Item item) {
|
|
||||||
var imported = _element.OwnerDocument!.ImportNode(item.Node, true);
|
|
||||||
_element.AppendChild(imported);
|
|
||||||
Items.Add(Item.FromElement((XmlElement)imported));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal sealed class PackageReference : Item {
|
|
||||||
public PackageReference(XmlElement node) : base(node) { }
|
|
||||||
|
|
||||||
// inside PackageReference
|
|
||||||
public string? GetPackageVersion() {
|
|
||||||
// Prefer attribute, then child <Version>
|
|
||||||
var attr = GetAttribute("Version");
|
|
||||||
if (!string.IsNullOrEmpty(attr)) return attr;
|
|
||||||
|
|
||||||
var child = Node.SelectSingleNode("./Version") as XmlElement;
|
|
||||||
return child?.InnerText;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetPackageVersion(string? version) {
|
|
||||||
if (Node.HasAttribute("Version") || (Node.SelectSingleNode("./Version") == null)) {
|
|
||||||
// If attribute exists (or no child yet), use attribute
|
|
||||||
SetAttribute("Version", version);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Else write to existing child <Version>
|
|
||||||
var child = (XmlElement)Node.SelectSingleNode("./Version")!;
|
|
||||||
child.InnerText = version ?? string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
+181
-46
@@ -1,9 +1,9 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Text;
|
||||||
using Renci.SshNet;
|
using Renci.SshNet;
|
||||||
using Spectre.Console;
|
using Spectre.Console;
|
||||||
using Spectre.Console.Cli;
|
using aeqw89.xml.ProjectFile;
|
||||||
using VsTools.Projects;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
namespace aeqw89.tools.Publish;
|
||||||
|
|
||||||
@@ -27,6 +27,8 @@ public static class Program {
|
|||||||
public static Dictionary<string, string[]> Flags { get; set; }
|
public static Dictionary<string, string[]> Flags { get; set; }
|
||||||
public static bool Verbose { get; set; } = false;
|
public static bool Verbose { get; set; } = false;
|
||||||
|
|
||||||
|
public static List<Action> RestoreActions { get; set; } = [];
|
||||||
|
|
||||||
public static void ReadArgs(string[] args) {
|
public static void ReadArgs(string[] args) {
|
||||||
if (args.Length < 1) {
|
if (args.Length < 1) {
|
||||||
ShowError(Exceptions.missing_mode.EscapeMarkup());
|
ShowError(Exceptions.missing_mode.EscapeMarkup());
|
||||||
@@ -109,9 +111,15 @@ public static class Program {
|
|||||||
public static async Task Main(string[] args) {
|
public static async Task Main(string[] args) {
|
||||||
ReadArgs(args);
|
ReadArgs(args);
|
||||||
|
|
||||||
|
Console.CancelKeyPress += (sender, eventArgs) => {
|
||||||
|
RestoreActions.ForEach(x => x());
|
||||||
|
};
|
||||||
|
|
||||||
string packageId = "";
|
string packageId = "";
|
||||||
string version = "";
|
string version = "";
|
||||||
|
int destinationsProcessed = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
var result = AnsiConsole.Status()
|
var result = AnsiConsole.Status()
|
||||||
.Spinner(Spinner.Known.Dots)
|
.Spinner(Spinner.Known.Dots)
|
||||||
.Start<bool>("Preparing project", ctx => {
|
.Start<bool>("Preparing project", ctx => {
|
||||||
@@ -125,6 +133,12 @@ public static class Program {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
projectFile.Backup();
|
projectFile.Backup();
|
||||||
|
RestoreActions.Add(() => {
|
||||||
|
projectFile.Restore();
|
||||||
|
AnsiConsole.MarkupLine("[yellow]Restored project file from backup.[/]");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
if (Verbose)
|
if (Verbose)
|
||||||
AnsiConsole.WriteLine(
|
AnsiConsole.WriteLine(
|
||||||
$"Created project file backup at {projectFile.GetDefaultBackupLocation()}");
|
$"Created project file backup at {projectFile.GetDefaultBackupLocation()}");
|
||||||
@@ -149,7 +163,8 @@ public static class Program {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!int.TryParse(deltaStrings[0], out delta)) {
|
if (!int.TryParse(deltaStrings[0], out delta)) {
|
||||||
ShowError(Exceptions.flag_parameter_type_incorrect.EscapeMarkup(), "--delta", 0, nameof(Int32),
|
ShowError(Exceptions.flag_parameter_type_incorrect.EscapeMarkup(), "--delta", 0,
|
||||||
|
nameof(Int32),
|
||||||
deltaStrings[0]);
|
deltaStrings[0]);
|
||||||
projectFile.Restore();
|
projectFile.Restore();
|
||||||
ShowHelp();
|
ShowHelp();
|
||||||
@@ -159,18 +174,14 @@ public static class Program {
|
|||||||
|
|
||||||
ctx.Status = "Updating version";
|
ctx.Status = "Updating version";
|
||||||
var version = projectFile.GetVersion();
|
var version = projectFile.GetVersion();
|
||||||
version = ChangeVersion(version,
|
version = ChangeVersion(version, delta, Target ?? IncrementTarget.Patch);
|
||||||
Target == IncrementTarget.Patch ? delta : 0,
|
|
||||||
Target == IncrementTarget.Minor ? delta : 0,
|
|
||||||
Target == IncrementTarget.Major ? delta : 0,
|
|
||||||
(x, y) => x + y);
|
|
||||||
|
|
||||||
projectFile.SetVersion(version);
|
projectFile.SetVersion(version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
ShowError(Exceptions.generic_error.EscapeMarkup(), e.ToString().EscapeMarkup());
|
ShowError(Exceptions.generic_error.EscapeMarkup(), e.ToString().EscapeMarkup());
|
||||||
projectFile.Restore();
|
RestoreActions.ForEach(x => x());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,21 +202,23 @@ public static class Program {
|
|||||||
visited.Add(reference.Include);
|
visited.Add(reference.Include);
|
||||||
|
|
||||||
if (Verbose)
|
if (Verbose)
|
||||||
AnsiConsole.WriteLine($"Processing project reference {reference.Include} out of {visited.Count} so far");
|
AnsiConsole.WriteLine(
|
||||||
|
$"Processing project reference {reference.Include} out of {visited.Count} so far");
|
||||||
|
|
||||||
projectFile.SetPrivateAssets(reference, PrivateAssetsValue.All);
|
projectFile.SetPrivateAssets(reference, PrivateAssetsValue.All);
|
||||||
string pathToReferencedProjectFile = projectFile.GetAbsoluteIncludePath(reference);
|
string pathToReferencedProjectFile = projectFile.GetAbsoluteIncludePath(reference);
|
||||||
if (!ProjectFile.TryLoad(pathToReferencedProjectFile, out var referencedProjectFile,
|
if (!ProjectFile.TryLoad(pathToReferencedProjectFile, out var referencedProjectFile,
|
||||||
out error)) {
|
out error)) {
|
||||||
ShowError(error.EscapeMarkup());
|
ShowError(error.EscapeMarkup());
|
||||||
projectFile.Restore();
|
RestoreActions.ForEach(x => x());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var referencedPackageReferences = referencedProjectFile.GetPackageReferences();
|
var referencedPackageReferences = referencedProjectFile.GetPackageReferences();
|
||||||
foreach (var package in referencedPackageReferences) {
|
foreach (var package in referencedPackageReferences) {
|
||||||
if (Verbose)
|
if (Verbose)
|
||||||
AnsiConsole.WriteLine($"Hoisting package {package.Include} from {pathToReferencedProjectFile}");
|
AnsiConsole.WriteLine(
|
||||||
|
$"Hoisting package {package.Include} from {pathToReferencedProjectFile}");
|
||||||
var hoisted = projectFile.AddPackage(package);
|
var hoisted = projectFile.AddPackage(package);
|
||||||
projectFile.SetTransitive(hoisted, true);
|
projectFile.SetTransitive(hoisted, true);
|
||||||
projectFile.SetPrivateAssets(hoisted, PrivateAssetsValue.None);
|
projectFile.SetPrivateAssets(hoisted, PrivateAssetsValue.None);
|
||||||
@@ -218,9 +231,10 @@ public static class Program {
|
|||||||
projectReferences.Enqueue(project);
|
projectReferences.Enqueue(project);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
}
|
||||||
|
catch (Exception e) {
|
||||||
ShowError(Exceptions.generic_error.EscapeMarkup(), e.ToString().EscapeMarkup());
|
ShowError(Exceptions.generic_error.EscapeMarkup(), e.ToString().EscapeMarkup());
|
||||||
projectFile.Restore();
|
RestoreActions.ForEach(x => x());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -234,29 +248,80 @@ public static class Program {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var outDir = Path.GetRandomFileName();
|
var outDir = Path.GetRandomFileName();
|
||||||
result = AnsiConsole.Status()
|
RestoreActions.Add(() => {
|
||||||
|
try {
|
||||||
|
if (!Directory.Exists(outDir)) return;
|
||||||
|
Directory.Delete(outDir, true);
|
||||||
|
AnsiConsole.MarkupLine("[yellow]Cleaned up temporary directory[/]");
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
ShowError(string.Format(Exceptions.failed_to_clean_up.EscapeMarkup(), outDir.EscapeMarkup(),
|
||||||
|
e.ToString().EscapeMarkup()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
string processError = "";
|
||||||
|
var exitCode = await AnsiConsole.Status()
|
||||||
.Spinner(Spinner.Known.Dots)
|
.Spinner(Spinner.Known.Dots)
|
||||||
.Start<bool>("Creating package with 'dotnet pack' ", ctx => {
|
.StartAsync<int>("Creating package with 'dotnet pack' ", async ctx => {
|
||||||
var p = Process.Start(new ProcessStartInfo() {
|
var p = Process.Start(new ProcessStartInfo() {
|
||||||
FileName = "dotnet",
|
FileName = "dotnet",
|
||||||
Arguments = $"pack -o {outDir}",
|
Arguments = $"pack -o {outDir}",
|
||||||
WorkingDirectory = Environment.CurrentDirectory,
|
WorkingDirectory = Environment.CurrentDirectory,
|
||||||
UseShellExecute = Verbose,
|
UseShellExecute = false,
|
||||||
RedirectStandardOutput = !Verbose,
|
RedirectStandardOutput = true,
|
||||||
RedirectStandardError = !Verbose
|
RedirectStandardError = true
|
||||||
});
|
|
||||||
p?.WaitForExit();
|
|
||||||
return p?.ExitCode == 0;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!result) {
|
CancellationTokenSource cts = new CancellationTokenSource();
|
||||||
ShowError(Exceptions.dotnet_pack_failure.EscapeMarkup());
|
StringBuilder errorLines = new();
|
||||||
|
p?.ErrorDataReceived += (sender, eventArgs) => {
|
||||||
|
cts.Cancel();
|
||||||
|
if (Verbose && eventArgs.Data != null)
|
||||||
|
AnsiConsole.WriteLine(eventArgs.Data);
|
||||||
|
};
|
||||||
|
bool success = false;
|
||||||
|
p?.OutputDataReceived += (sender, eventArgs) => {
|
||||||
|
if (eventArgs.Data?.ToLower().Contains("press any key") == true)
|
||||||
|
cts.Cancel();
|
||||||
|
if (Verbose && eventArgs.Data != null)
|
||||||
|
AnsiConsole.WriteLine(eventArgs.Data);
|
||||||
|
// Successfully created package 'C:\Users\qwsdc\source\repos\Beam\aeqw89.Beam\tozsxqaj.alp\Beam.1.0.0.nupkg'.
|
||||||
|
if (eventArgs.Data?.ToLower()
|
||||||
|
.Contains($"successfully created package '{Path.GetFullPath(outDir)}") == true) {
|
||||||
|
AnsiConsole.MarkupLine($"[bold]{eventArgs.Data}[/]");
|
||||||
|
success = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
p?.BeginOutputReadLine();
|
||||||
|
p?.BeginErrorReadLine();
|
||||||
|
|
||||||
|
try {
|
||||||
|
await (p?.WaitForExitAsync(cts.Token) ?? Task.CompletedTask);
|
||||||
|
}
|
||||||
|
catch (TaskCanceledException) {
|
||||||
|
p?.Kill();
|
||||||
|
}
|
||||||
|
|
||||||
|
processError = errorLines.ToString().EscapeMarkup();
|
||||||
|
return success == true ? 0 : p?.ExitCode ?? -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (exitCode != 0) {
|
||||||
|
ShowError(processError.EscapeMarkup());
|
||||||
|
ShowError(Exceptions.dotnet_pack_failure.EscapeMarkup(), exitCode);
|
||||||
|
RestoreActions.ForEach(x => x());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Verbose)
|
||||||
|
AnsiConsole.MarkupLine("Successfully created package with exit code [green]{0}[/]. Processing destinations.", exitCode);
|
||||||
|
|
||||||
var package = Directory.GetFiles(outDir, "*.nupkg").FirstOrDefault();
|
var package = Directory.GetFiles(outDir, "*.nupkg").FirstOrDefault();
|
||||||
if (package == null) {
|
if (package == null) {
|
||||||
ShowError(Exceptions.generic_error.EscapeMarkup());
|
ShowError(Exceptions.generic_error.EscapeMarkup());
|
||||||
|
RestoreActions.ForEach(x => x());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +331,7 @@ public static class Program {
|
|||||||
try {
|
try {
|
||||||
await AnsiConsole.Progress()
|
await AnsiConsole.Progress()
|
||||||
.AutoClear(true)
|
.AutoClear(true)
|
||||||
.HideCompleted(true)
|
.HideCompleted(false)
|
||||||
.Columns(new ProgressColumn[] {
|
.Columns(new ProgressColumn[] {
|
||||||
new TaskDescriptionColumn(),
|
new TaskDescriptionColumn(),
|
||||||
new ProgressBarColumn()
|
new ProgressBarColumn()
|
||||||
@@ -288,7 +353,8 @@ public static class Program {
|
|||||||
|
|
||||||
if (dest.StartsWith("local-")) {
|
if (dest.StartsWith("local-")) {
|
||||||
var name = dest[("local-".Length)..];
|
var name = dest[("local-".Length)..];
|
||||||
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
|
var path = Path.Combine(
|
||||||
|
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
|
||||||
name, Path.GetFileName(package));
|
name, Path.GetFileName(package));
|
||||||
if (!Directory.Exists(Path.GetDirectoryName(path)))
|
if (!Directory.Exists(Path.GetDirectoryName(path)))
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
|
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
|
||||||
@@ -304,7 +370,8 @@ public static class Program {
|
|||||||
|
|
||||||
else if (dest.StartsWith("cloud-")) {
|
else if (dest.StartsWith("cloud-")) {
|
||||||
var name = dest[("cloud-".Length)..];
|
var name = dest[("cloud-".Length)..];
|
||||||
var connectionTask = ctx.AddTaskBefore($"Preparing cloud-{name}", new ProgressTaskSettings() {
|
var connectionTask = ctx.AddTaskBefore($"Preparing cloud-{name}",
|
||||||
|
new ProgressTaskSettings() {
|
||||||
MaxValue = 100
|
MaxValue = 100
|
||||||
}, task);
|
}, task);
|
||||||
|
|
||||||
@@ -333,41 +400,51 @@ public static class Program {
|
|||||||
if (os == "windows") {
|
if (os == "windows") {
|
||||||
var userDirC = sshClient.RunCommand("cmd /c echo %USERPROFILE%");
|
var userDirC = sshClient.RunCommand("cmd /c echo %USERPROFILE%");
|
||||||
if (userDirC.ExitStatus != 0) {
|
if (userDirC.ExitStatus != 0) {
|
||||||
ShowError(Exceptions.failed_to_prepare_server_directory, "n/a", name, os, userDirC.Result);
|
ShowError(Exceptions.failed_to_prepare_server_directory, "n/a", name, os,
|
||||||
|
userDirC.Result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var userDir = userDirC.Result.Trim();
|
var userDir = userDirC.Result.Trim();
|
||||||
remoteDirectory = RemotePath.Combine(RemoteOs.Windows,userDir, "dotnet-packages");
|
remoteDirectory = RemotePath.Combine(RemoteOs.Windows, userDir, "dotnet-packages");
|
||||||
packageFileDirectory = RemotePath.Combine(RemoteOs.Windows, remoteDirectory, Path.GetFileName(package));
|
packageFileDirectory = RemotePath.Combine(RemoteOs.Windows, remoteDirectory,
|
||||||
|
Path.GetFileName(package));
|
||||||
|
|
||||||
var mkdirC = sshClient.RunCommand($"cmd /c if not exist \"{remoteDirectory}\" mkdir \"{remoteDirectory}\"");
|
var mkdirC = sshClient.RunCommand(
|
||||||
|
$"cmd /c if not exist \"{remoteDirectory}\" mkdir \"{remoteDirectory}\"");
|
||||||
if (mkdirC.ExitStatus != 0) {
|
if (mkdirC.ExitStatus != 0) {
|
||||||
ShowError(Exceptions.failed_to_prepare_server_directory, remoteDirectory, name, os, mkdirC.Result);
|
ShowError(Exceptions.failed_to_prepare_server_directory, remoteDirectory, name,
|
||||||
|
os, mkdirC.Result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (os == "linux") {
|
else if (os == "linux") {
|
||||||
var homeDirC = sshClient.RunCommand("printf %s \"$HOME\"");
|
var homeDirC = sshClient.RunCommand("printf %s \"$HOME\"");
|
||||||
if (homeDirC.ExitStatus != 0) {
|
if (homeDirC.ExitStatus != 0) {
|
||||||
ShowError(Exceptions.failed_to_prepare_server_directory, "n/a", name, os, homeDirC.Result);
|
ShowError(Exceptions.failed_to_prepare_server_directory, "n/a", name, os,
|
||||||
|
homeDirC.Result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var homeDir = homeDirC.Result.Trim(); // no CRLF on unix, but Trim() is safest
|
var homeDir = homeDirC.Result.Trim(); // no CRLF on unix, but Trim() is safest
|
||||||
remoteDirectory = RemotePath.Combine(RemoteOs.Unix, homeDir, ".dotnet-packages");
|
remoteDirectory = RemotePath.Combine(RemoteOs.Unix, homeDir, ".dotnet-packages");
|
||||||
packageFileDirectory = RemotePath.Combine(RemoteOs.Unix, remoteDirectory, Path.GetFileName(package));
|
packageFileDirectory = RemotePath.Combine(RemoteOs.Unix, remoteDirectory,
|
||||||
|
Path.GetFileName(package));
|
||||||
|
|
||||||
// Use -p and single quotes to handle spaces safely
|
// Use -p and single quotes to handle spaces safely
|
||||||
var mkdirC = sshClient.RunCommand($"mkdir -p '{remoteDirectory}'");
|
var mkdirC = sshClient.RunCommand($"mkdir -p '{remoteDirectory}'");
|
||||||
if (mkdirC.ExitStatus != 0) {
|
if (mkdirC.ExitStatus != 0) {
|
||||||
ShowError(Exceptions.failed_to_prepare_server_directory, remoteDirectory, name, os, mkdirC.Result);
|
ShowError(Exceptions.failed_to_prepare_server_directory, remoteDirectory, name,
|
||||||
|
os, mkdirC.Result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ShowError(Exceptions.failed_to_prepare_server_directory, "n/a", name, os, "Unsupported OS");
|
ShowError(Exceptions.failed_to_prepare_server_directory, "n/a", name, os,
|
||||||
|
"Unsupported OS");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
connectionTask.Increment(33);
|
connectionTask.Increment(33);
|
||||||
|
|
||||||
sshClient.Disconnect();
|
sshClient.Disconnect();
|
||||||
@@ -394,23 +471,52 @@ public static class Program {
|
|||||||
Arguments = $"nuget push {package} --source github",
|
Arguments = $"nuget push {package} --source github",
|
||||||
WorkingDirectory = Environment.CurrentDirectory,
|
WorkingDirectory = Environment.CurrentDirectory,
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
RedirectStandardOutput = !Verbose,
|
RedirectStandardOutput = true,
|
||||||
RedirectStandardError = !Verbose
|
RedirectStandardError = true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var cts = CancellationTokenSource.CreateLinkedTokenSource(ct);
|
||||||
|
StringBuilder errorLines = new();
|
||||||
|
p?.ErrorDataReceived += (sender, eventArgs) => {
|
||||||
|
cts.Cancel();
|
||||||
|
if (Verbose && eventArgs.Data != null)
|
||||||
|
AnsiConsole.WriteLine(eventArgs.Data);
|
||||||
|
errorLines.Append(eventArgs.Data);
|
||||||
|
};
|
||||||
|
p?.OutputDataReceived += (sender, eventArgs) => {
|
||||||
|
if (eventArgs.Data?.ToLower().Contains("press any key") == true)
|
||||||
|
cts.Cancel();
|
||||||
|
if (Verbose && eventArgs.Data != null)
|
||||||
|
AnsiConsole.WriteLine(eventArgs.Data);
|
||||||
|
};
|
||||||
|
|
||||||
|
p?.BeginOutputReadLine();
|
||||||
|
p?.BeginErrorReadLine();
|
||||||
|
|
||||||
if (p == null) {
|
if (p == null) {
|
||||||
ShowError(Exceptions.generic_error.EscapeMarkup());
|
ShowError(Exceptions.generic_error.EscapeMarkup());
|
||||||
}
|
}
|
||||||
|
|
||||||
task.Increment(size / 2);
|
task.Increment(size / 2);
|
||||||
if (p != null)
|
if (p != null)
|
||||||
await p.WaitForExitAsync(ct);
|
try {
|
||||||
if (p?.ExitCode != 0) {
|
await (p?.WaitForExitAsync(cts.Token) ?? Task.CompletedTask);
|
||||||
ShowError(Exceptions.dotnet_nuget_push_failure, p.ExitCode);
|
|
||||||
}
|
}
|
||||||
|
catch (TaskCanceledException) {
|
||||||
|
p?.Kill();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p?.ExitCode != 0) {
|
||||||
|
ShowError(errorLines.ToString().EscapeMarkup());
|
||||||
|
ShowError(Exceptions.dotnet_nuget_push_failure, p?.ExitCode ?? -1);
|
||||||
|
task.StopTask();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
task.Increment(size / 2);
|
task.Increment(size / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Interlocked.Increment(ref destinationsProcessed);
|
||||||
task.StopTask();
|
task.StopTask();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -420,11 +526,27 @@ public static class Program {
|
|||||||
Directory.Delete(outDir, true);
|
Directory.Delete(outDir, true);
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
ShowError(string.Format(Exceptions.failed_to_clean_up.EscapeMarkup(), outDir.EscapeMarkup(), e.ToString().EscapeMarkup()));
|
ShowError(string.Format(Exceptions.failed_to_clean_up.EscapeMarkup(), outDir.EscapeMarkup(),
|
||||||
|
e.ToString().EscapeMarkup()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
ShowError(Exceptions.generic_error.EscapeMarkup(), e.ToString().EscapeMarkup());;
|
||||||
|
RestoreActions.ForEach(x => x());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (destinationsProcessed == 0) {
|
||||||
|
AnsiConsole.MarkupLine("[bold red]No destinations were processed. Reverting changes to project file.[/]");
|
||||||
|
RestoreActions.ForEach(x => x());
|
||||||
|
}
|
||||||
|
else {
|
||||||
AnsiConsole.MarkupLine("Completed processing of all destinations.");
|
AnsiConsole.MarkupLine("Completed processing of all destinations.");
|
||||||
AnsiConsole.MarkupLine("Example usage:\n\t <PackageReference Include=\"{0}\" Version=\"{1}\" />".EscapeMarkup(), packageId, version);
|
AnsiConsole.MarkupLine(
|
||||||
|
"Example usage:\n\t <PackageReference Include=\"{0}\" Version=\"{1}\" />".EscapeMarkup(), packageId,
|
||||||
|
version);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -437,8 +559,7 @@ public static class Program {
|
|||||||
/// <param name="operation">A function that defines the adjustment operation to be performed on each version component.</param>
|
/// <param name="operation">A function that defines the adjustment operation to be performed on each version component.</param>
|
||||||
/// <returns>A new version string with the updated major, minor, and patch components, preserving any existing tag.</returns>
|
/// <returns>A new version string with the updated major, minor, and patch components, preserving any existing tag.</returns>
|
||||||
/// <exception cref="Exception">Thrown if the version string is not in the correct format.</exception>
|
/// <exception cref="Exception">Thrown if the version string is not in the correct format.</exception>
|
||||||
private static string ChangeVersion(string version, int patch, int minor, int major,
|
private static string ChangeVersion(string version, int delta, IncrementTarget target) {
|
||||||
Func<int, int, int> operation) {
|
|
||||||
string[] split = version.Split('.');
|
string[] split = version.Split('.');
|
||||||
if (split.Length != 3) {
|
if (split.Length != 3) {
|
||||||
throw new Exception(string.Format(Exceptions.version_string_not_formatted_correctly, version));
|
throw new Exception(string.Format(Exceptions.version_string_not_formatted_correctly, version));
|
||||||
@@ -455,9 +576,23 @@ public static class Program {
|
|||||||
throw new Exception(string.Format(Exceptions.version_string_not_formatted_correctly, version));
|
throw new Exception(string.Format(Exceptions.version_string_not_formatted_correctly, version));
|
||||||
|
|
||||||
int[] parsedVersion = split.Select(int.Parse).ToArray();
|
int[] parsedVersion = split.Select(int.Parse).ToArray();
|
||||||
|
switch (target) {
|
||||||
|
case IncrementTarget.Major:
|
||||||
|
parsedVersion[0] += delta;
|
||||||
|
parsedVersion[1] = 0;
|
||||||
|
parsedVersion[2] = 0;
|
||||||
|
break;
|
||||||
|
case IncrementTarget.Minor:
|
||||||
|
parsedVersion[1] += delta;
|
||||||
|
parsedVersion[2] = 0;
|
||||||
|
break;
|
||||||
|
case IncrementTarget.Patch:
|
||||||
|
parsedVersion[2] += delta;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
$"{operation(parsedVersion[0], major)}.{operation(parsedVersion[1], minor)}.{operation(parsedVersion[2], patch)}{tag}";
|
$"{parsedVersion[0]}.{parsedVersion[1]}.{parsedVersion[2]}{tag}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ShowError(string message, params object[] args) {
|
private static void ShowError(string message, params object[] args) {
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal class Project {
|
|
||||||
public string Path { get; }
|
|
||||||
private XmlDocument Document { get; }
|
|
||||||
public List<PropertyGroup> PropertyGroups { get; }
|
|
||||||
public List<ItemGroup> ItemGroups { get; }
|
|
||||||
|
|
||||||
private Project(string path, XmlDocument doc) {
|
|
||||||
Path = path;
|
|
||||||
Document = doc;
|
|
||||||
|
|
||||||
// Build PropertyGroups
|
|
||||||
PropertyGroups = doc.DocumentElement!
|
|
||||||
.SelectNodes("./PropertyGroup")!
|
|
||||||
.OfType<XmlElement>()
|
|
||||||
.Select(e => new PropertyGroup(e))
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
// Build ItemGroups (+ their Items)
|
|
||||||
ItemGroups = doc.DocumentElement!
|
|
||||||
.SelectNodes("./ItemGroup")!
|
|
||||||
.OfType<XmlElement>()
|
|
||||||
.Select(e => new ItemGroup(e))
|
|
||||||
.ToList();
|
|
||||||
|
|
||||||
// Ensure at least one ItemGroup exists (some csprojs omit it until first item is added)
|
|
||||||
if (ItemGroups.Count == 0) {
|
|
||||||
var ig = doc.CreateElement("ItemGroup", doc.DocumentElement!.NamespaceURI);
|
|
||||||
doc.DocumentElement!.AppendChild(ig);
|
|
||||||
ItemGroups.Add(new ItemGroup((XmlElement)ig));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Project Load(string path) {
|
|
||||||
var doc = new XmlDocument();
|
|
||||||
doc.PreserveWhitespace = false;
|
|
||||||
doc.Load(path);
|
|
||||||
return new Project(path, doc);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Save() {
|
|
||||||
var settings = new XmlWriterSettings {
|
|
||||||
Indent = true,
|
|
||||||
IndentChars = " ",
|
|
||||||
NewLineChars = Environment.NewLine,
|
|
||||||
NewLineHandling = NewLineHandling.Replace
|
|
||||||
};
|
|
||||||
using var writer = XmlWriter.Create(Path, settings);
|
|
||||||
Document.Save(writer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using aeqw89.xml.ProjectFile;
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
namespace aeqw89.tools.Publish;
|
||||||
|
|
||||||
@@ -105,6 +106,7 @@ internal class ProjectFile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
set("Version", "1.0.0");
|
set("Version", "1.0.0");
|
||||||
|
set("PackageVersion", "1.0.0");
|
||||||
set("Title", System.IO.Path.GetFileNameWithoutExtension(Path));
|
set("Title", System.IO.Path.GetFileNameWithoutExtension(Path));
|
||||||
set("Authors", "");
|
set("Authors", "");
|
||||||
set("Company", "");
|
set("Company", "");
|
||||||
@@ -212,5 +214,8 @@ internal class ProjectFile {
|
|||||||
|
|
||||||
public string GetVersion() => MainPropertyGroup.GetProperty("Version");
|
public string GetVersion() => MainPropertyGroup.GetProperty("Version");
|
||||||
|
|
||||||
public void SetVersion(string version) => MainPropertyGroup.SetProperty("Version", version);
|
public void SetVersion(string version) {
|
||||||
|
MainPropertyGroup.SetProperty("Version", version);
|
||||||
|
MainPropertyGroup.SetProperty("PackageVersion", version);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal sealed class ProjectReference : Item {
|
|
||||||
public ProjectReference(XmlElement node) : base(node) { }
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
using System.Xml;
|
|
||||||
|
|
||||||
namespace aeqw89.tools.Publish;
|
|
||||||
|
|
||||||
internal class PropertyGroup {
|
|
||||||
private readonly XmlElement _element;
|
|
||||||
public PropertyGroup(XmlElement element) => _element = element;
|
|
||||||
|
|
||||||
public bool HasProperty(string name) => _element.SelectSingleNode($"./{name}") is XmlElement;
|
|
||||||
|
|
||||||
public string GetProperty(string name) {
|
|
||||||
var node = _element.SelectSingleNode($"./{name}") as XmlElement;
|
|
||||||
return node?.InnerText ?? string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetProperty(string name, string value) {
|
|
||||||
var node = _element.SelectSingleNode($"./{name}") as XmlElement;
|
|
||||||
if (node == null) {
|
|
||||||
node = _element.OwnerDocument!.CreateElement(name, _element.NamespaceURI);
|
|
||||||
_element.AppendChild(node);
|
|
||||||
}
|
|
||||||
node.InnerText = value ?? string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Count => _element.ChildNodes.OfType<XmlElement>().Count();
|
|
||||||
|
|
||||||
public void Remove() => _element.ParentNode!.RemoveChild(_element);
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
// Required namespaces:
|
// Required namespaces:
|
||||||
// System, System.IO, System.Linq, System.Text, System.Text.RegularExpressions, System.Collections.Generic, Renci.SshNet
|
// System, System.IO, System.Linq, System.Text, System.Text.RegularExpressions, System.Collections.Generic, Renci.SshNet
|
||||||
|
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
@@ -21,10 +23,11 @@ public record Host(
|
|||||||
);
|
);
|
||||||
|
|
||||||
public static class SshHosts {
|
public static class SshHosts {
|
||||||
public static List<Host> Hosts { get; set; }
|
private static ImmutableDictionary<string, Host> hosts;
|
||||||
|
public static IReadOnlyDictionary<string, Host> Hosts => hosts;
|
||||||
|
|
||||||
static SshHosts() {
|
static SshHosts() {
|
||||||
Hosts = new List<Host>();
|
var hosts = new Dictionary<string, Host>();
|
||||||
|
|
||||||
var path = Path.Combine(
|
var path = Path.Combine(
|
||||||
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
|
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
|
||||||
@@ -124,7 +127,7 @@ public static class SshHosts {
|
|||||||
foreach (var f in currentIdentityFiles) idFiles.Add(ExpandPath(f));
|
foreach (var f in currentIdentityFiles) idFiles.Add(ExpandPath(f));
|
||||||
}
|
}
|
||||||
|
|
||||||
Hosts.Add(new Host(
|
hosts.Add(n, new Host(
|
||||||
Name: n,
|
Name: n,
|
||||||
Hostname: hn,
|
Hostname: hn,
|
||||||
User: currentUser ?? string.Empty,
|
User: currentUser ?? string.Empty,
|
||||||
@@ -233,6 +236,7 @@ public static class SshHosts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Flush();
|
Flush();
|
||||||
|
SshHosts.hosts = hosts.ToImmutableDictionary();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Builds a ConnectionInfo from a parsed host, ensuring all ~/.ssh private keys are tried.
|
// Builds a ConnectionInfo from a parsed host, ensuring all ~/.ssh private keys are tried.
|
||||||
@@ -345,23 +349,11 @@ public static class SshHosts {
|
|||||||
|
|
||||||
|
|
||||||
public static Host Get(string name) {
|
public static Host Get(string name) {
|
||||||
for (int i = 0; i < Hosts.Count; i++) {
|
return TryGetHost(name, out var h) ? h : throw new KeyNotFoundException($"SSH host '{name}' not found.");
|
||||||
if (string.Equals(Hosts[i].Name, name, StringComparison.OrdinalIgnoreCase)) {
|
|
||||||
return Hosts[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new KeyNotFoundException($"SSH host '{name}' not found.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool TryGetHost(string name, out Host host) {
|
public static bool TryGetHost(string name, [NotNullWhen(true)] out Host? host) {
|
||||||
for (int i = 0; i < Hosts.Count; i++) {
|
return Hosts.TryGetValue(name, out host);
|
||||||
if (string.Equals(Hosts[i].Name, name, StringComparison.OrdinalIgnoreCase)) {
|
|
||||||
host = Hosts[i];
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
host = default!;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Renci.SshNet.ConnectionInfo GetConnection(string name)
|
public static Renci.SshNet.ConnectionInfo GetConnection(string name)
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
<LangVersion>preview</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="aeqw89.xml.ProjectFile" Version="1.0.3" />
|
||||||
<PackageReference Include="Spectre.Console" Version="0.51.2-preview.0.1" />
|
<PackageReference Include="Spectre.Console" Version="0.51.2-preview.0.1" />
|
||||||
<PackageReference Include="Spectre.Console.Cli" Version="0.51.2-preview.0.1" />
|
|
||||||
<PackageReference Include="SSH.NET" Version="2025.0.0" />
|
<PackageReference Include="SSH.NET" Version="2025.0.0" />
|
||||||
<PackageReference Include="VsTools.Projects" Version="1.2.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("aeqw89.tools.Publish")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("aeqw89.tools.Publish")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b61d0836ac23522cf42987fbed9474a3bda3632e")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("aeqw89.tools.Publish")]
|
[assembly: System.Reflection.AssemblyProductAttribute("aeqw89.tools.Publish")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("aeqw89.tools.Publish")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("aeqw89.tools.Publish")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
e3dc9f23098d7e7631e5f51a024428b60b92087a4a264306a861bae3c79e94dd
|
7fc87e3000a58eaf1f393990c041ae903924d7e468beb21b7ca46d984853ce80
|
||||||
|
|||||||
+2
@@ -1,5 +1,7 @@
|
|||||||
is_global = true
|
is_global = true
|
||||||
build_property.TargetFramework = net9.0
|
build_property.TargetFramework = net9.0
|
||||||
|
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||||
|
build_property.TargetFrameworkVersion = v9.0
|
||||||
build_property.TargetPlatformMinVersion =
|
build_property.TargetPlatformMinVersion =
|
||||||
build_property.UsingMicrosoftNETSdkWeb =
|
build_property.UsingMicrosoftNETSdkWeb =
|
||||||
build_property.ProjectTypeGuids =
|
build_property.ProjectTypeGuids =
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
// <auto-generated/>
|
// <auto-generated/>
|
||||||
global using global::System;
|
global using System;
|
||||||
global using global::System.Collections.Generic;
|
global using System.Collections.Generic;
|
||||||
global using global::System.IO;
|
global using System.IO;
|
||||||
global using global::System.Linq;
|
global using System.Linq;
|
||||||
global using global::System.Net.Http;
|
global using System.Net.Http;
|
||||||
global using global::System.Threading;
|
global using System.Threading;
|
||||||
global using global::System.Threading.Tasks;
|
global using System.Threading.Tasks;
|
||||||
|
|||||||
Binary file not shown.
BIN
Binary file not shown.
@@ -33,3 +33,4 @@ C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\
|
|||||||
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||||
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
|
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
|
||||||
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\net9.0\Renci.SshNet.dll
|
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\bin\Debug\net9.0\Renci.SshNet.dll
|
||||||
|
C:\Users\qwsdc\source\repos\aeqw89.tools.Publish\aeqw89.tools.Publish\obj\Debug\net9.0\aeqw89.tools.Publish.sourcelink.json
|
||||||
|
|||||||
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -20,6 +20,7 @@
|
|||||||
"net9.0"
|
"net9.0"
|
||||||
],
|
],
|
||||||
"sources": {
|
"sources": {
|
||||||
|
"C:\\Users\\qwsdc\\packages": {},
|
||||||
"https://api.nuget.org/v3/index.json": {},
|
"https://api.nuget.org/v3/index.json": {},
|
||||||
"https://nuget.pkg.github.com/qwsdcvghyu89/index.json": {}
|
"https://nuget.pkg.github.com/qwsdcvghyu89/index.json": {}
|
||||||
},
|
},
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
"auditLevel": "low",
|
"auditLevel": "low",
|
||||||
"auditMode": "direct"
|
"auditMode": "direct"
|
||||||
},
|
},
|
||||||
"SdkAnalysisLevel": "9.0.100"
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"net9.0": {
|
"net9.0": {
|
||||||
@@ -53,13 +54,9 @@
|
|||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[0.51.2-preview.0.1, )"
|
"version": "[0.51.2-preview.0.1, )"
|
||||||
},
|
},
|
||||||
"Spectre.Console.Cli": {
|
"aeqw89.xml.ProjectFile": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[0.51.2-preview.0.1, )"
|
"version": "[1.0.3, )"
|
||||||
},
|
|
||||||
"VsTools.Projects": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[1.2.0, )"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
@@ -73,12 +70,30 @@
|
|||||||
],
|
],
|
||||||
"assetTargetFallback": true,
|
"assetTargetFallback": true,
|
||||||
"warn": true,
|
"warn": true,
|
||||||
|
"downloadDependencies": [
|
||||||
|
{
|
||||||
|
"name": "Microsoft.AspNetCore.App.Ref",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App.Host.win-x64",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App.Ref",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.WindowsDesktop.App.Ref",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"frameworkReferences": {
|
"frameworkReferences": {
|
||||||
"Microsoft.NETCore.App": {
|
"Microsoft.NETCore.App": {
|
||||||
"privateAssets": "all"
|
"privateAssets": "all"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json"
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100-rc.1.25451.107/PortableRuntimeIdentifierGraph.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\qwsdc\.nuget\packages\</NuGetPackageFolders>
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\qwsdc\.nuget\packages\</NuGetPackageFolders>
|
||||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
<SourceRoot Include="C:\Users\qwsdc\.nuget\packages\" />
|
<SourceRoot Include="C:\Users\qwsdc\.nuget\packages\" />
|
||||||
|
|||||||
@@ -2,6 +2,15 @@
|
|||||||
"version": 3,
|
"version": 3,
|
||||||
"targets": {
|
"targets": {
|
||||||
"net9.0": {
|
"net9.0": {
|
||||||
|
"aeqw89.xml.ProjectFile/1.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net9.0/aeqw89.xml.ProjectFile.dll": {}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net9.0/aeqw89.xml.ProjectFile.dll": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
"BouncyCastle.Cryptography/2.5.1": {
|
"BouncyCastle.Cryptography/2.5.1": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"compile": {
|
"compile": {
|
||||||
@@ -63,54 +72,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Spectre.Console.Cli/0.51.2-preview.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Spectre.Console": "0.51.2-preview.0.1"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net9.0/Spectre.Console.Cli.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net9.0/Spectre.Console.Cli.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"resource": {
|
|
||||||
"lib/net9.0/de/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "de"
|
|
||||||
},
|
|
||||||
"lib/net9.0/es/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "es"
|
|
||||||
},
|
|
||||||
"lib/net9.0/fr/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "fr"
|
|
||||||
},
|
|
||||||
"lib/net9.0/it/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "it"
|
|
||||||
},
|
|
||||||
"lib/net9.0/ja/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "ja"
|
|
||||||
},
|
|
||||||
"lib/net9.0/ko/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "ko"
|
|
||||||
},
|
|
||||||
"lib/net9.0/pt/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "pt"
|
|
||||||
},
|
|
||||||
"lib/net9.0/ru/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "ru"
|
|
||||||
},
|
|
||||||
"lib/net9.0/sv/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "sv"
|
|
||||||
},
|
|
||||||
"lib/net9.0/zh-Hans/Spectre.Console.Cli.resources.dll": {
|
|
||||||
"locale": "zh-Hans"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SSH.NET/2025.0.0": {
|
"SSH.NET/2025.0.0": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -127,19 +88,21 @@
|
|||||||
"related": ".xml"
|
"related": ".xml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"VsTools.Projects/1.2.0": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/netstandard2.0/VsTools.Projects.dll": {}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/VsTools.Projects.dll": {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libraries": {
|
"libraries": {
|
||||||
|
"aeqw89.xml.ProjectFile/1.0.3": {
|
||||||
|
"sha512": "AkCw9edHUg7G9/jAA/zSgwsz/nHnAs7gvs9tCslibNnzXTJOweflSsqO+GcoWVP5QGgU4DhgMrJQgUNY6EBXNQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "aeqw89.xml.projectfile/1.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
"aeqw89.xml.projectfile.1.0.3.nupkg.sha512",
|
||||||
|
"aeqw89.xml.projectfile.nuspec",
|
||||||
|
"lib/net9.0/aeqw89.xml.ProjectFile.dll"
|
||||||
|
]
|
||||||
|
},
|
||||||
"BouncyCastle.Cryptography/2.5.1": {
|
"BouncyCastle.Cryptography/2.5.1": {
|
||||||
"sha512": "zy8TMeTP+1FH2NrLaNZtdRbBdq7u5MI+NFZQOBSM69u5RFkciinwzV2eveY6Kjf5MzgsYvvl6kTStsj3JrXqkg==",
|
"sha512": "zy8TMeTP+1FH2NrLaNZtdRbBdq7u5MI+NFZQOBSM69u5RFkciinwzV2eveY6Kjf5MzgsYvvl6kTStsj3JrXqkg==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -284,55 +247,6 @@
|
|||||||
"spectre.console.nuspec"
|
"spectre.console.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Spectre.Console.Cli/0.51.2-preview.0.1": {
|
|
||||||
"sha512": "sgcQ28dkBJG66JU+BI/vhXvgqYOS+0S2OaW5sYkpShk0MzHO2hnnyg8Ef636NG6U+OmIALVZ69CP3oImeUUrag==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "spectre.console.cli/0.51.2-preview.0.1",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"README.md",
|
|
||||||
"lib/net8.0/Spectre.Console.Cli.dll",
|
|
||||||
"lib/net8.0/Spectre.Console.Cli.xml",
|
|
||||||
"lib/net8.0/de/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/es/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/fr/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/it/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/ja/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/ko/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/pt/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/ru/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/sv/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net8.0/zh-Hans/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/Spectre.Console.Cli.dll",
|
|
||||||
"lib/net9.0/Spectre.Console.Cli.xml",
|
|
||||||
"lib/net9.0/de/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/es/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/fr/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/it/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/ja/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/ko/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/pt/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/ru/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/sv/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/net9.0/zh-Hans/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/Spectre.Console.Cli.dll",
|
|
||||||
"lib/netstandard2.0/Spectre.Console.Cli.xml",
|
|
||||||
"lib/netstandard2.0/de/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/es/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/fr/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/it/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/ja/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/ko/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/pt/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/ru/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/sv/Spectre.Console.Cli.resources.dll",
|
|
||||||
"lib/netstandard2.0/zh-Hans/Spectre.Console.Cli.resources.dll",
|
|
||||||
"logo.png",
|
|
||||||
"spectre.console.cli.0.51.2-preview.0.1.nupkg.sha512",
|
|
||||||
"spectre.console.cli.nuspec"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"SSH.NET/2025.0.0": {
|
"SSH.NET/2025.0.0": {
|
||||||
"sha512": "AKYbB+q2zFkNQbBFx5gXdv+Wje0baBtADQ35WnMKi4bg1ka74wTQtWoPd+fOWcydohdfsD0nfT8ErMOAPxtSfA==",
|
"sha512": "AKYbB+q2zFkNQbBFx5gXdv+Wje0baBtADQ35WnMKi4bg1ka74wTQtWoPd+fOWcydohdfsD0nfT8ErMOAPxtSfA==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
@@ -355,29 +269,13 @@
|
|||||||
"ssh.net.2025.0.0.nupkg.sha512",
|
"ssh.net.2025.0.0.nupkg.sha512",
|
||||||
"ssh.net.nuspec"
|
"ssh.net.nuspec"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"VsTools.Projects/1.2.0": {
|
|
||||||
"sha512": "Zja9D1HlSi+6goiAYUkcuE1dUC7MyoU4ZiXCNMcQ6JFNloHpwO8ne7cATi4jeMco56TB3Trzv+vtAiK4jDydlw==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "vstools.projects/1.2.0",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"lib/net452/VsTools.Projects.dll",
|
|
||||||
"lib/net462/VsTools.Projects.dll",
|
|
||||||
"lib/net48/VsTools.Projects.dll",
|
|
||||||
"lib/netstandard2.0/VsTools.Projects.dll",
|
|
||||||
"vstools.projects.1.2.0.nupkg.sha512",
|
|
||||||
"vstools.projects.nuspec"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"projectFileDependencyGroups": {
|
"projectFileDependencyGroups": {
|
||||||
"net9.0": [
|
"net9.0": [
|
||||||
"SSH.NET >= 2025.0.0",
|
"SSH.NET >= 2025.0.0",
|
||||||
"Spectre.Console >= 0.51.2-preview.0.1",
|
"Spectre.Console >= 0.51.2-preview.0.1",
|
||||||
"Spectre.Console.Cli >= 0.51.2-preview.0.1",
|
"aeqw89.xml.ProjectFile >= 1.0.3"
|
||||||
"VsTools.Projects >= 1.2.0"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"packageFolders": {
|
"packageFolders": {
|
||||||
@@ -399,6 +297,7 @@
|
|||||||
"net9.0"
|
"net9.0"
|
||||||
],
|
],
|
||||||
"sources": {
|
"sources": {
|
||||||
|
"C:\\Users\\qwsdc\\packages": {},
|
||||||
"https://api.nuget.org/v3/index.json": {},
|
"https://api.nuget.org/v3/index.json": {},
|
||||||
"https://nuget.pkg.github.com/qwsdcvghyu89/index.json": {}
|
"https://nuget.pkg.github.com/qwsdcvghyu89/index.json": {}
|
||||||
},
|
},
|
||||||
@@ -418,7 +317,7 @@
|
|||||||
"auditLevel": "low",
|
"auditLevel": "low",
|
||||||
"auditMode": "direct"
|
"auditMode": "direct"
|
||||||
},
|
},
|
||||||
"SdkAnalysisLevel": "9.0.100"
|
"SdkAnalysisLevel": "10.0.100"
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"net9.0": {
|
"net9.0": {
|
||||||
@@ -432,13 +331,9 @@
|
|||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[0.51.2-preview.0.1, )"
|
"version": "[0.51.2-preview.0.1, )"
|
||||||
},
|
},
|
||||||
"Spectre.Console.Cli": {
|
"aeqw89.xml.ProjectFile": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[0.51.2-preview.0.1, )"
|
"version": "[1.0.3, )"
|
||||||
},
|
|
||||||
"VsTools.Projects": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[1.2.0, )"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
@@ -452,12 +347,30 @@
|
|||||||
],
|
],
|
||||||
"assetTargetFallback": true,
|
"assetTargetFallback": true,
|
||||||
"warn": true,
|
"warn": true,
|
||||||
|
"downloadDependencies": [
|
||||||
|
{
|
||||||
|
"name": "Microsoft.AspNetCore.App.Ref",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App.Host.win-x64",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.NETCore.App.Ref",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Microsoft.WindowsDesktop.App.Ref",
|
||||||
|
"version": "[9.0.9, 9.0.9]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"frameworkReferences": {
|
"frameworkReferences": {
|
||||||
"Microsoft.NETCore.App": {
|
"Microsoft.NETCore.App": {
|
||||||
"privateAssets": "all"
|
"privateAssets": "all"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json"
|
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100-rc.1.25451.107/PortableRuntimeIdentifierGraph.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,19 @@
|
|||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "KOrx7rOcVCU=",
|
"dgSpecHash": "lSSpLey1hfc=",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\aeqw89.tools.Publish.csproj",
|
"projectFilePath": "C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\aeqw89.tools.Publish.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
|
"C:\\Users\\qwsdc\\.nuget\\packages\\aeqw89.xml.projectfile\\1.0.3\\aeqw89.xml.projectfile.1.0.3.nupkg.sha512",
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\bouncycastle.cryptography\\2.5.1\\bouncycastle.cryptography.2.5.1.nupkg.sha512",
|
"C:\\Users\\qwsdc\\.nuget\\packages\\bouncycastle.cryptography\\2.5.1\\bouncycastle.cryptography.2.5.1.nupkg.sha512",
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
|
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.3\\microsoft.extensions.logging.abstractions.8.0.3.nupkg.sha512",
|
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.3\\microsoft.extensions.logging.abstractions.8.0.3.nupkg.sha512",
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\spectre.console\\0.51.2-preview.0.1\\spectre.console.0.51.2-preview.0.1.nupkg.sha512",
|
"C:\\Users\\qwsdc\\.nuget\\packages\\spectre.console\\0.51.2-preview.0.1\\spectre.console.0.51.2-preview.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\spectre.console.cli\\0.51.2-preview.0.1\\spectre.console.cli.0.51.2-preview.0.1.nupkg.sha512",
|
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\ssh.net\\2025.0.0\\ssh.net.2025.0.0.nupkg.sha512",
|
"C:\\Users\\qwsdc\\.nuget\\packages\\ssh.net\\2025.0.0\\ssh.net.2025.0.0.nupkg.sha512",
|
||||||
"C:\\Users\\qwsdc\\.nuget\\packages\\vstools.projects\\1.2.0\\vstools.projects.1.2.0.nupkg.sha512"
|
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.netcore.app.ref\\9.0.9\\microsoft.netcore.app.ref.9.0.9.nupkg.sha512",
|
||||||
|
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.windowsdesktop.app.ref\\9.0.9\\microsoft.windowsdesktop.app.ref.9.0.9.nupkg.sha512",
|
||||||
|
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.aspnetcore.app.ref\\9.0.9\\microsoft.aspnetcore.app.ref.9.0.9.nupkg.sha512",
|
||||||
|
"C:\\Users\\qwsdc\\.nuget\\packages\\microsoft.netcore.app.host.win-x64\\9.0.9\\microsoft.netcore.app.host.win-x64.9.0.9.nupkg.sha512"
|
||||||
],
|
],
|
||||||
"logs": []
|
"logs": []
|
||||||
}
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
"restore":{"projectUniqueName":"C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\aeqw89.tools.Publish.csproj","projectName":"aeqw89.tools.Publish","projectPath":"C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\aeqw89.tools.Publish.csproj","outputPath":"C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net9.0"],"sources":{"https://api.nuget.org/v3/index.json":{},"https://nuget.pkg.github.com/qwsdcvghyu89/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.100"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"SSH.NET":{"target":"Package","version":"[2025.0.0, )"},"Spectre.Console":{"target":"Package","version":"[0.51.2-preview.0.1, )"},"Spectre.Console.Cli":{"target":"Package","version":"[0.51.2-preview.0.1, )"},"VsTools.Projects":{"target":"Package","version":"[1.2.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json"}}
|
"restore":{"projectUniqueName":"C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\aeqw89.tools.Publish.csproj","projectName":"aeqw89.tools.Publish","projectPath":"C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\aeqw89.tools.Publish.csproj","outputPath":"C:\\Users\\qwsdc\\source\\repos\\aeqw89.tools.Publish\\aeqw89.tools.Publish\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net9.0"],"sources":{"C:\\Users\\qwsdc\\packages":{},"https://api.nuget.org/v3/index.json":{},"https://nuget.pkg.github.com/qwsdcvghyu89/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"10.0.100"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"SSH.NET":{"target":"Package","version":"[2025.0.0, )"},"Spectre.Console":{"target":"Package","version":"[0.51.2-preview.0.1, )"},"aeqw89.xml.ProjectFile":{"target":"Package","version":"[1.0.3, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"downloadDependencies":[{"name":"Microsoft.AspNetCore.App.Ref","version":"[9.0.9, 9.0.9]"},{"name":"Microsoft.NETCore.App.Host.win-x64","version":"[9.0.9, 9.0.9]"},{"name":"Microsoft.NETCore.App.Ref","version":"[9.0.9, 9.0.9]"},{"name":"Microsoft.WindowsDesktop.App.Ref","version":"[9.0.9, 9.0.9]"}],"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\10.0.100-rc.1.25451.107/PortableRuntimeIdentifierGraph.json"}}
|
||||||
@@ -1 +1 @@
|
|||||||
17584140259343453
|
17584393464480743
|
||||||
@@ -1 +1 @@
|
|||||||
17584254157830058
|
17588788734490530
|
||||||
Reference in New Issue
Block a user