fix nuget
All checks were successful
Build / Compute Version (push) Successful in 5s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 2m38s
Build / Build Nuget package (NuGet) (push) Successful in 2m24s
Build / Build Nuget package (CringePlugins) (push) Successful in 2m48s
Build / Build Nuget package (SharedCringe) (push) Successful in 2m29s
Build / Build Launcher (push) Successful in 3m50s

This commit is contained in:
zznty
2024-10-28 00:46:37 +07:00
parent f75e4e7b4a
commit 78be6bd837
20 changed files with 472 additions and 93 deletions

View File

@@ -8,6 +8,7 @@ using NLog;
using NuGet;
using NuGet.Deps;
using NuGet.Frameworks;
using NuGet.Versioning;
namespace CringePlugins.Loader;
@@ -19,7 +20,7 @@ public class PluginsLifetime : ILoadingStage
private ImmutableArray<PluginInstance> _plugins = [];
private readonly DirectoryInfo _dir = Directory.CreateDirectory(Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "CringeLauncher"));
private readonly NuGetFramework _runtimeFramework = NuGetFramework.ParseFolder("net8.0-windows");
private readonly NuGetFramework _runtimeFramework = NuGetFramework.ParseFolder("net8.0-windows10.0.19041.0");
public async ValueTask Load(ISplashProgress progress)
{
@@ -83,18 +84,25 @@ public class PluginsLifetime : ILoadingStage
private async Task LoadPlugins(IReadOnlySet<CachedPackage> packages, PackageSourceMapping sourceMapping)
{
var plugins = _plugins.ToBuilder();
var packageVersions = BuiltInPackages.GetPackages(_runtimeFramework)
.ToImmutableDictionary(b => b.Package.Id, b => b.Package.Version,
StringComparer.OrdinalIgnoreCase);
packageVersions = packageVersions.AddRange(packages.Select(b =>
new KeyValuePair<string, NuGetVersion>(b.Package.Id, b.Package.Version)));
var manifestBuilder = new DependencyManifestBuilder(_dir.CreateSubdirectory("cache"), sourceMapping,
dependency => packageVersions.TryGetValue(dependency.Id, out var version) && version.Major != 99
? version
: dependency.Range.MinVersion ?? dependency.Range.MaxVersion);
foreach (var package in packages)
{
var dir = Path.Join(package.Directory.FullName, "lib", package.ResolvedFramework.GetShortFolderName());
await using (var stream = File.Create(Path.Join(dir, $"{package.Package.Id}.deps.json")))
await DependencyManifestUtility.WriteDependencyManifestAsync(stream, package.Entry, _runtimeFramework,
sourceMapping,
dependency =>
packages.First(b => b.Package.Id.Equals(dependency.Id, StringComparison.OrdinalIgnoreCase))
.Package
.Version);
await manifestBuilder.WriteDependencyManifestAsync(stream, package.Entry, _runtimeFramework);
LoadComponent(plugins, Path.Join(dir, $"{package.Package.Id}.dll"));
}