diff --git a/NuGet.Config b/NuGet.Config index fd5ce235a39..319299b8222 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -3,6 +3,7 @@ + diff --git a/scripts/dotnet-cli-build/CompileTargets.cs b/scripts/dotnet-cli-build/CompileTargets.cs index f63e73b2db3..dc989b83c2d 100644 --- a/scripts/dotnet-cli-build/CompileTargets.cs +++ b/scripts/dotnet-cli-build/CompileTargets.cs @@ -324,7 +324,7 @@ public static BuildTargetResult CompileStage1(BuildTargetContext c) Directory.CreateDirectory(Dirs.Stage1); CopySharedHost(Dirs.Stage1); - PublishSharedFramework(c, Dirs.Stage1, DotNetCli.Stage0); + PublishSharedFramework(c, Dirs.Stage1, DotNetCli.Stage0, nuGetVersion: "3.5.0-rc-1285"); var result = CompileCliSdk(c, dotnet: DotNetCli.Stage0, outputDir: Dirs.Stage1); @@ -350,7 +350,12 @@ public static BuildTargetResult CompileStage2(BuildTargetContext c) } Directory.CreateDirectory(Dirs.Stage2); - PublishSharedFramework(c, Dirs.Stage2, DotNetCli.Stage1); + // Restore again, with Stage1. + // NOTE: This is necessary for bootstrapping https://github.com/dotnet/cli/issues/2874. + // This code will be removed after change has made its way into stage 0. + Restore(c, DotNetCli.Stage1); + + PublishSharedFramework(c, Dirs.Stage2, DotNetCli.Stage1, nuGetVersion: null); CopySharedHost(Dirs.Stage2); var result = CompileCliSdk(c, dotnet: DotNetCli.Stage1, @@ -470,7 +475,7 @@ private static void CopySharedHost(string outputDir) Path.Combine(outputDir, DotnetHostFxrBaseName), true); } - public static void PublishSharedFramework(BuildTargetContext c, string outputDir, DotNetCli dotnetCli) + public static void PublishSharedFramework(BuildTargetContext c, string outputDir, DotNetCli dotnetCli, string nuGetVersion) { string SharedFrameworkTemplateSourceRoot = Path.Combine(Dirs.RepoRoot, "src", "sharedframework", "framework"); string SharedFrameworkNugetVersion = c.BuildContext.Get("SharedFrameworkNugetVersion"); @@ -539,6 +544,33 @@ public static void PublishSharedFramework(BuildTargetContext c, string outputDir var runtimeGraphGeneratorProject = Path.Combine(Dirs.RepoRoot, "tools", runtimeGraphGeneratorName); var runtimeGraphGeneratorOutput = Path.Combine(Dirs.Output, "tools", runtimeGraphGeneratorName); + // Override the NuGet version the RuntimeGraphGenerator depends on. + // NOTE: This is necessary for bootstrapping https://github.com/dotnet/cli/issues/2874. + // This code will be removed after change has made its way into stage 0. + var originals = new[] + { + new { Path = (string)null, Content = (byte[])null } + }; + if (nuGetVersion != null) + { + originals = new[] + { + Path.Combine("src", "dotnet"), + Path.Combine("src", "Microsoft.DotNet.Cli.Utils"), + Path.Combine("src", "Microsoft.DotNet.ProjectModel"), + Path.Combine("tools", runtimeGraphGeneratorName) + } + .Select(p => Path.Combine(Dirs.RepoRoot, p, "project.json")) + .Select(p => new + { + Path = p, + Content = UpdateNuGetVersion(c, p, nuGetVersion) + }) + .ToArray(); + + Restore(c, dotnetCli); + } + dotnetCli.Publish( "--output", runtimeGraphGeneratorOutput, runtimeGraphGeneratorProject).Execute().EnsureSuccessful(); @@ -547,6 +579,18 @@ public static void PublishSharedFramework(BuildTargetContext c, string outputDir Cmd(runtimeGraphGeneratorExe, "--project", SharedFrameworkSourceRoot, "--deps", destinationDeps, runtimeGraphGeneratorRuntime) .Execute() .EnsureSuccessful(); + + // NOTE: This is necessary for bootstrapping https://github.com/dotnet/cli/issues/2874. + // This code will be removed after change has made its way into stage 0. + if (nuGetVersion != null) + { + foreach (var original in originals) + { + RestoreNuGetVersion(c, original.Path, original.Content); + } + + Restore(c, dotnetCli); + } } else { @@ -584,6 +628,58 @@ public static void PublishSharedFramework(BuildTargetContext c, string outputDir File.WriteAllText(Path.Combine(SharedFrameworkNameAndVersionRoot, ".version"), content); } + private static byte[] UpdateNuGetVersion(BuildTargetContext c, string projectJsonPath, string version) + { + c.Warn($"Setting the NuGet version in {projectJsonPath} to {version}."); + + var encoding = new UTF8Encoding(false); + + var originalBytes = File.ReadAllBytes(projectJsonPath); + var originalJson = encoding.GetString(originalBytes); + var projectJson = JsonConvert.DeserializeObject(originalJson); + var dependencies = (JObject)projectJson["dependencies"]; + foreach (var property in dependencies.Properties()) + { + if (property.Name.StartsWith("NuGet.")) + { + if (property.Value.Type == JTokenType.String) + { + property.Value = version; + } + else + { + property.Value["version"] = version; + } + } + } + + var newJson = JsonConvert.SerializeObject(projectJson, Formatting.Indented); + var newBytes = encoding.GetBytes(newJson); + + File.WriteAllBytes(projectJsonPath, newBytes); + + return originalBytes; + } + + private static void RestoreNuGetVersion(BuildTargetContext c, string projectJsonPath, byte[] originalBytes) + { + c.Warn($"Restoring the original NuGet version to {projectJsonPath}."); + + File.WriteAllBytes(projectJsonPath, originalBytes); + } + + private static void Restore(BuildTargetContext c, DotNetCli dotnetCli) + { + dotnetCli.Restore("--verbosity", "verbose", "--disable-parallel", "--fallbacksource", Dirs.CorehostLocalPackages) + .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "src")) + .Execute() + .EnsureSuccessful(); + dotnetCli.Restore("--verbosity", "verbose", "--disable-parallel", "--infer-runtimes") + .WorkingDirectory(Path.Combine(Dirs.RepoRoot, "tools")) + .Execute() + .EnsureSuccessful(); + } + /// /// Generates the real shared framework project that will get published. /// diff --git a/scripts/update-dependencies/project.json b/scripts/update-dependencies/project.json index 4d810e3a85b..38be8d4ac43 100644 --- a/scripts/update-dependencies/project.json +++ b/scripts/update-dependencies/project.json @@ -9,7 +9,7 @@ "Microsoft.CSharp": "4.0.1-rc2-24027", "System.Runtime.Serialization.Primitives": "4.1.1-rc2-24027", "Microsoft.DotNet.Cli.Build.Framework": "1.0.0-*", - "NuGet.Versioning": "3.5.0-beta", + "NuGet.Versioning": "3.5.0-rc-862", "Newtonsoft.Json": "7.0.1", "Octokit": "0.18.0", "Microsoft.Net.Http": "2.2.29" diff --git a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ToolPathCalculator.cs b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ToolPathCalculator.cs index dcb0f15e379..8ac6ecd3890 100644 --- a/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ToolPathCalculator.cs +++ b/src/Microsoft.DotNet.Cli.Utils/CommandResolution/ToolPathCalculator.cs @@ -55,7 +55,7 @@ public string GetLockFilePath(string packageId, NuGetVersion version, NuGetFrame return Path.Combine( GetBaseToolPath(packageId), - version.ToNormalizedString(), + version.ToNormalizedString().ToLowerInvariant(), framework.GetShortFolderName(), "project.lock.json"); } @@ -65,7 +65,7 @@ private string GetBaseToolPath(string packageId) return Path.Combine( _packagesDirectory, ".tools", - packageId); + packageId.ToLowerInvariant()); } private IEnumerable GetAvailableToolVersions(string packageId) diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index 66349565764..ee43b74e1ad 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -6,10 +6,10 @@ }, "dependencies": { "Microsoft.DotNet.ProjectModel": { "target": "project" }, - "NuGet.Versioning": "3.5.0-beta", - "NuGet.Packaging": "3.5.0-beta", - "NuGet.Frameworks": "3.5.0-beta", - "NuGet.ProjectModel": "3.5.0-beta" + "NuGet.Versioning": "3.5.0-rc-862", + "NuGet.Packaging": "3.5.0-rc-862", + "NuGet.Frameworks": "3.5.0-rc-862", + "NuGet.ProjectModel": "3.5.0-rc-862" }, "frameworks": { "net451": { diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePackageLibrary.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePackageLibrary.cs index f8c2d298657..3713dcb3580 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePackageLibrary.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LockFilePackageLibrary.cs @@ -16,6 +16,8 @@ public class LockFilePackageLibrary public string Sha512 { get; set; } + public string Path { get; set; } + public IList Files { get; set; } = new List(); } } diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LockFileReader.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LockFileReader.cs index 9d7a070e3f1..b9a50a7ed58 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LockFileReader.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LockFileReader.cs @@ -151,6 +151,7 @@ private void ReadLibrary(JObject json, LockFile lockFile) Version = version, IsServiceable = ReadBool(value, "serviceable", defaultValue: false), Sha512 = ReadString(value["sha512"]), + Path = value.Value("path"), Files = ReadPathArray(value["files"], ReadString) }); } diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/LibraryManager.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/LibraryManager.cs index 98fdc503807..f20feaa3585 100644 --- a/src/Microsoft.DotNet.ProjectModel/Resolution/LibraryManager.cs +++ b/src/Microsoft.DotNet.ProjectModel/Resolution/LibraryManager.cs @@ -170,11 +170,6 @@ public IList GetAllDiagnostics() continue; } - if (library.Identity.Version.IsPrerelease && !versionRange.IncludePrerelease) - { - versionRange = VersionRange.SetIncludePrerelease(versionRange, includePrerelease: true); - } - if (item.Library != library && !versionRange.Satisfies(library.Identity.Version)) { var message = $"Dependency conflict. {item.Library.Identity} expected {FormatLibraryRange(item.Dependency)} but got {library.Identity.Version}"; diff --git a/src/Microsoft.DotNet.ProjectModel/Resolution/PackageDependencyProvider.cs b/src/Microsoft.DotNet.ProjectModel/Resolution/PackageDependencyProvider.cs index df0bdf64f2b..521ff8a0437 100644 --- a/src/Microsoft.DotNet.ProjectModel/Resolution/PackageDependencyProvider.cs +++ b/src/Microsoft.DotNet.ProjectModel/Resolution/PackageDependencyProvider.cs @@ -15,11 +15,13 @@ namespace Microsoft.DotNet.ProjectModel.Resolution { public class PackageDependencyProvider { + private readonly string _packagesPath; private readonly VersionFolderPathResolver _packagePathResolver; private readonly FrameworkReferenceResolver _frameworkReferenceResolver; public PackageDependencyProvider(string packagesPath, FrameworkReferenceResolver frameworkReferenceResolver) { + _packagesPath = packagesPath; _packagePathResolver = new VersionFolderPathResolver(packagesPath); _frameworkReferenceResolver = frameworkReferenceResolver; } @@ -40,7 +42,16 @@ public PackageDescription GetDescription(NuGetFramework targetFramework, LockFil var dependencies = new List(targetLibrary.Dependencies.Count + targetLibrary.FrameworkAssemblies.Count); PopulateDependencies(dependencies, targetLibrary, targetFramework); - var path = _packagePathResolver.GetInstallPath(package.Name, package.Version); + string path; + if (package.Path != null) + { + path = Path.Combine(_packagesPath, package.Path); + } + else + { + path = _packagePathResolver.GetInstallPath(package.Name, package.Version); + } + var exists = Directory.Exists(path); if (exists) diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index 70ef5c39167..9a3d67b6f2b 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -7,8 +7,8 @@ "dependencies": { "Microsoft.Extensions.DependencyModel": { "target": "project" }, "Newtonsoft.Json": "7.0.1", - "NuGet.Packaging": "3.5.0-beta", - "NuGet.RuntimeModel": "3.5.0-beta", + "NuGet.Packaging": "3.5.0-rc-862", + "NuGet.RuntimeModel": "3.5.0-rc-862", "System.Reflection.Metadata": "1.3.0-rc2-24027" }, "frameworks": { diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs index 156ea0622b2..7497f0e0876 100644 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs +++ b/src/Microsoft.Extensions.DependencyModel/Resolution/PackageCacheCompilationAssemblyResolver.cs @@ -53,7 +53,8 @@ public bool TryResolveAssemblyPaths(CompilationLibrary library, List ass if (ResolverUtils.TryResolvePackagePath(_fileSystem, library, _packageCacheDirectory, out packagePath)) { var hashAlgorithm = library.Hash.Substring(0, hashSplitterPos); - var cacheHashPath = Path.Combine(packagePath, $"{library.Name}.{library.Version}.nupkg.{hashAlgorithm}"); + var cacheHashFileName = $"{library.Name.ToLowerInvariant()}.{library.Version.ToLowerInvariant()}.nupkg.{hashAlgorithm}"; + var cacheHashPath = Path.Combine(packagePath, cacheHashFileName); if (_fileSystem.File.Exists(cacheHashPath) && _fileSystem.File.ReadAllText(cacheHashPath) == library.Hash.Substring(hashSplitterPos + 1)) diff --git a/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs b/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs index b9b93d2765c..e105ad8c59c 100644 --- a/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs +++ b/src/Microsoft.Extensions.DependencyModel/Resolution/ResolverUtils.cs @@ -12,7 +12,11 @@ internal static class ResolverUtils { internal static bool TryResolvePackagePath(IFileSystem fileSystem, CompilationLibrary library, string basePath, out string packagePath) { - packagePath = Path.Combine(basePath, library.Name, library.Version); + packagePath = Path.Combine( + basePath, + library.Name.ToLowerInvariant(), + library.Version.ToLowerInvariant()); + if (fileSystem.Directory.Exists(packagePath)) { return true; diff --git a/src/corehost/cli/deps_entry.cpp b/src/corehost/cli/deps_entry.cpp index 92fa9c2a47a..66e46cca160 100644 --- a/src/corehost/cli/deps_entry.cpp +++ b/src/corehost/cli/deps_entry.cpp @@ -104,8 +104,8 @@ bool deps_entry_t::to_full_path(const pal::string_t& base, pal::string_t* str) c } pal::string_t new_base = base; - append_path(&new_base, library_name.c_str()); - append_path(&new_base, library_version.c_str()); + append_path(&new_base, pal::to_lower(library_name).c_str()); + append_path(&new_base, pal::to_lower(library_version).c_str()); return to_rel_path(new_base, str); } @@ -154,9 +154,9 @@ bool deps_entry_t::to_hash_matched_path(const pal::string_t& base, pal::string_t // Build the nupkg file name. Just reserve approx 8 char_t's for the algorithm name. pal::string_t nupkg_filename; nupkg_filename.reserve(library_name.length() + 1 + library_version.length() + 16); - nupkg_filename.append(library_name); + nupkg_filename.append(pal::to_lower(library_name)); nupkg_filename.append(_X(".")); - nupkg_filename.append(library_version); + nupkg_filename.append(pal::to_lower(library_version)); nupkg_filename.append(_X(".nupkg.")); nupkg_filename.append(library_hash.substr(0, pos)); @@ -164,8 +164,8 @@ bool deps_entry_t::to_hash_matched_path(const pal::string_t& base, pal::string_t pal::string_t hash_file; hash_file.reserve(base.length() + library_name.length() + library_version.length() + nupkg_filename.length() + 3); hash_file.assign(base); - append_path(&hash_file, library_name.c_str()); - append_path(&hash_file, library_version.c_str()); + append_path(&hash_file, pal::to_lower(library_name).c_str()); + append_path(&hash_file, pal::to_lower(library_version).c_str()); append_path(&hash_file, nupkg_filename.c_str()); // Read the contents of the hash file. diff --git a/src/dotnet/project.json b/src/dotnet/project.json index 679ba240ea4..ad1f7843282 100644 --- a/src/dotnet/project.json +++ b/src/dotnet/project.json @@ -17,10 +17,10 @@ ], "dependencies": { "NuGet.Commands": { - "version": "3.5.0-beta", + "version": "3.5.0-rc-862", "exclude": "compile" }, - "NuGet.CommandLine.XPlat": "3.5.0-beta", + "NuGet.CommandLine.XPlat": "3.5.0-rc-862", "Newtonsoft.Json": "7.0.1", "System.Text.Encoding.CodePages": "4.0.1-rc2-24027", "System.Diagnostics.FileVersionInfo": "4.0.0-rc2-24027", diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs b/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs index 2df9faf8543..e89dc34d8db 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/GivenAProjectDependenciesCommandFactory.cs @@ -167,7 +167,7 @@ public void It_resolves_tools_whose_package_name_is_different_than_dll_name() var command = factory.Create("dotnet-tool-with-output-name", null); command.CommandArgs.Should().Contain( - Path.Combine("ToolWithOutputName", "1.0.0", "lib", "netcoreapp1.0", "dotnet-tool-with-output-name.dll")); + Path.Combine("toolwithoutputname", "1.0.0", "lib", "netcoreapp1.0", "dotnet-tool-with-output-name.dll")); } } } diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json index ed18f288f7a..94b8714023b 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json @@ -11,10 +11,10 @@ }, "System.Diagnostics.TraceSource": "4.0.0-rc2-24027", "System.Runtime.Serialization.Primitives": "4.1.1-rc2-24027", - "NuGet.Versioning": "3.5.0-beta", - "NuGet.Packaging": "3.5.0-beta", - "NuGet.Frameworks": "3.5.0-beta", - "NuGet.ProjectModel": "3.5.0-beta", + "NuGet.Versioning": "3.5.0-rc-862", + "NuGet.Packaging": "3.5.0-rc-862", + "NuGet.Frameworks": "3.5.0-rc-862", + "NuGet.ProjectModel": "3.5.0-rc-862", "Microsoft.DotNet.ProjectModel": { "target": "project" }, diff --git a/test/Microsoft.DotNet.ProjectModel.Tests/LockFileReaderTests.cs b/test/Microsoft.DotNet.ProjectModel.Tests/LockFileReaderTests.cs new file mode 100644 index 00000000000..e3385b544d4 --- /dev/null +++ b/test/Microsoft.DotNet.ProjectModel.Tests/LockFileReaderTests.cs @@ -0,0 +1,54 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using System.IO; +using System.Text; +using FluentAssertions; +using Microsoft.DotNet.ProjectModel.Graph; +using Xunit; +using NuGet.Versioning; + +namespace Microsoft.DotNet.ProjectModel.Tests +{ + public class LockFileReaderTests + { + [Theory] + [InlineData("", null)] + [InlineData(@"""path"": null,", null)] + [InlineData(@"""path"": ""foo/1.0.0"",", "foo/1.0.0")] + public void AllowsPackageLibraryPath(string pathProperty, string expected) + { + // Arrange + var reader = new LockFileReader(); + var lockFileJson = @" + { + ""libraries"": { + ""Foo/1.0.0"": { + ""sha512"": ""something"", + " + pathProperty + @" + ""type"": ""package"", + ""files"": [ + ""lib/netstandard1.0/Foo.dll"" + ] + } + } + } + "; + var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(lockFileJson)); + + // Act + var lockFile = reader.ReadLockFile("project.lock.json", memoryStream, false); + + // Assert + lockFile.PackageLibraries.Should().HaveCount(1); + var library = lockFile.PackageLibraries[0]; + library.Path.Should().Be(expected); + + library.Name.Should().Be("Foo"); + library.Version.Should().Be(new NuGetVersion("1.0.0")); + library.Sha512.Should().Be("something"); + library.Files.Should().HaveCount(1); + library.Files[0].Should().Be(Path.Combine("lib", "netstandard1.0", "Foo.dll")); + } + } +} diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs b/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs index 7ea550b9804..c76b806a0e4 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/PackageCacheResolverTest.cs @@ -55,10 +55,15 @@ public void FailsOnInvalidHash(string hash) [Fact] public void ChecksHashFile() { - var packagePath = Path.Combine(CachePath, F.DefaultPackageName, F.DefaultVersion); + var packagePath = Path.Combine( + CachePath, + F.DefaultPackageName.ToLowerInvariant(), + F.DefaultVersion.ToLowerInvariant()); var fileSystem = FileSystemMockBuilder.Create() .AddFile( - Path.Combine(packagePath, $"{F.DefaultPackageName}.{F.DefaultVersion}.nupkg.{F.DefaultHashAlgoritm}"), + Path.Combine( + packagePath, + $"{F.DefaultPackageName.ToLowerInvariant()}.{F.DefaultVersion.ToLowerInvariant()}.nupkg.{F.DefaultHashAlgoritm}"), "WRONGHASH" ) .AddFiles(packagePath, F.DefaultAssemblies) @@ -74,10 +79,15 @@ public void ChecksHashFile() [Fact] public void ResolvesAllAssemblies() { - var packagePath = Path.Combine(CachePath, F.DefaultPackageName, F.DefaultVersion); + var packagePath = Path.Combine( + CachePath, + F.DefaultPackageName.ToLowerInvariant(), + F.DefaultVersion.ToLowerInvariant()); var fileSystem = FileSystemMockBuilder.Create() .AddFile( - Path.Combine(packagePath, $"{F.DefaultPackageName}.{F.DefaultVersion}.nupkg.{F.DefaultHashAlgoritm}"), + Path.Combine( + packagePath, + $"{F.DefaultPackageName.ToLowerInvariant()}.{F.DefaultVersion.ToLowerInvariant()}.nupkg.{F.DefaultHashAlgoritm}"), F.DefaultHashValue ) .AddFiles(packagePath, F.TwoAssemblies) @@ -98,10 +108,15 @@ public void ResolvesAllAssemblies() [Fact] public void FailsWhenOneOfAssembliesNotFound() { - var packagePath = Path.Combine(CachePath, F.DefaultPackageName, F.DefaultVersion); + var packagePath = Path.Combine( + CachePath, + F.DefaultPackageName.ToLowerInvariant(), + F.DefaultVersion.ToLowerInvariant()); var fileSystem = FileSystemMockBuilder.Create() .AddFile( - Path.Combine(packagePath, $"{F.DefaultPackageName}.{F.DefaultVersion}.nupkg.{F.DefaultHashAlgoritm}"), + Path.Combine( + packagePath, + $"{F.DefaultPackageName.ToLowerInvariant()}.{F.DefaultVersion.ToLowerInvariant()}.nupkg.{F.DefaultHashAlgoritm}"), F.DefaultHashValue ) .AddFiles(packagePath, F.DefaultAssemblyPath) diff --git a/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs b/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs index c6727db7fad..8428d61940a 100644 --- a/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs +++ b/test/Microsoft.Extensions.DependencyModel.Tests/PackageResolverTest.cs @@ -17,7 +17,7 @@ public class PackageResolverTest private static string PackagesPath = Path.Combine("package", "directory", "location"); [Fact] - public void SholdUseEnvironmentVariableToGetDefaultLocation() + public void ShouldUseEnvironmentVariableToGetDefaultLocation() { var environment = EnvironmentMockBuilder.Create() .AddVariable("NUGET_PACKAGES", PackagesPath) @@ -29,7 +29,7 @@ public void SholdUseEnvironmentVariableToGetDefaultLocation() [Fact] - public void SholdUseNugetUnderUserProfileOnWindows() + public void ShouldUseNuGetUnderUserProfileOnWindows() { var environment = EnvironmentMockBuilder.Create() .AddVariable("USERPROFILE", "User Profile") @@ -40,7 +40,7 @@ public void SholdUseNugetUnderUserProfileOnWindows() } [Fact] - public void SholdUseNugetUnderHomeOnNonWindows() + public void ShouldUseNuGetUnderHomeOnNonWindows() { var environment = EnvironmentMockBuilder.Create() .AddVariable("HOME", "User Home") @@ -53,7 +53,10 @@ public void SholdUseNugetUnderHomeOnNonWindows() [Fact] public void ResolvesAllAssemblies() { - var packagePath = Path.Combine(PackagesPath, F.DefaultPackageName, F.DefaultVersion); + var packagePath = Path.Combine( + PackagesPath, + F.DefaultPackageName.ToLowerInvariant(), + F.DefaultVersion.ToLowerInvariant()); var fileSystem = FileSystemMockBuilder.Create() .AddFiles(packagePath, F.TwoAssemblies) .Build(); @@ -73,7 +76,10 @@ public void ResolvesAllAssemblies() [Fact] public void FailsWhenOneOfAssembliesNotFound() { - var packagePath = Path.Combine(PackagesPath, F.DefaultPackageName, F.DefaultVersion); + var packagePath = Path.Combine( + PackagesPath, + F.DefaultPackageName.ToLowerInvariant(), + F.DefaultVersion.ToLowerInvariant()); var fileSystem = FileSystemMockBuilder.Create() .AddFiles(packagePath, F.DefaultAssemblyPath) .Build(); diff --git a/tools/RuntimeGraphGenerator/project.json b/tools/RuntimeGraphGenerator/project.json index 002b265cec0..e2f206ad746 100644 --- a/tools/RuntimeGraphGenerator/project.json +++ b/tools/RuntimeGraphGenerator/project.json @@ -4,8 +4,8 @@ "emitEntryPoint": true }, "dependencies": { - "NuGet.RuntimeModel": "3.5.0-beta", - "NuGet.Versioning": "3.5.0-beta", + "NuGet.RuntimeModel": "3.5.0-rc-862", + "NuGet.Versioning": "3.5.0-rc-862", "System.CommandLine": "0.1.0-e160119-1", "System.Runtime.Serialization.Json": "4.0.2-rc2-24027", "Microsoft.DotNet.ProjectModel": { "target": "project" },