diff --git a/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskLogic.cs b/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskLogic.cs index aaf4479f778..9130d474918 100644 --- a/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskLogic.cs +++ b/src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskLogic.cs @@ -56,6 +56,15 @@ public PackArgs GetPackArgs(IPackTaskRequest request) } + LockFile assetsFile = GetAssetsFile(request); + var aliases = new Dictionary(); + foreach (var tfm in assetsFile.PackageSpec.TargetFrameworks) + { + aliases[tfm.TargetAlias] = tfm.FrameworkName.GetShortFolderName(); + } + packArgs.AliasFolderNameMapping = aliases; + + InitCurrentDirectoryAndFileName(request, packArgs); InitNuspecOutputPath(request, packArgs); PackCommandRunner.SetupCurrentDirectory(packArgs); @@ -76,8 +85,8 @@ public PackArgs GetPackArgs(IPackTaskRequest request) // This only needs to happen when packing via csproj, not nuspec. packArgs.PackTargetArgs.AllowedOutputExtensionsInPackageBuildOutputFolder = InitOutputExtensions(request.AllowedOutputExtensionsInPackageBuildOutputFolder); packArgs.PackTargetArgs.AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder = InitOutputExtensions(request.AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder); - packArgs.PackTargetArgs.TargetPathsToAssemblies = InitLibFiles(request.BuildOutputInPackage); - packArgs.PackTargetArgs.TargetPathsToSymbols = InitLibFiles(request.TargetPathsToSymbols); + packArgs.PackTargetArgs.TargetPathsToAssemblies = InitLibFiles(request.BuildOutputInPackage, packArgs.Logger); + packArgs.PackTargetArgs.TargetPathsToSymbols = InitLibFiles(request.TargetPathsToSymbols, packArgs.Logger); packArgs.PackTargetArgs.AssemblyName = request.AssemblyName; packArgs.PackTargetArgs.IncludeBuildOutput = request.IncludeBuildOutput; packArgs.PackTargetArgs.BuildOutputFolder = request.BuildOutputFolders; @@ -396,7 +405,7 @@ public bool BuildPackage(PackCommandRunner runner) return runner.RunPackageBuild(); } - private IEnumerable InitLibFiles(IMSBuildItem[] libFiles) + private IEnumerable InitLibFiles(IMSBuildItem[] libFiles, ILogger logger) { var assemblies = new List(); if (libFiles == null) @@ -404,13 +413,12 @@ private IEnumerable InitLibFiles(IMSBuildItem[] libFiles) return assemblies; } - foreach (var assembly in libFiles) { var finalOutputPath = assembly.GetProperty("FinalOutputPath"); // Fallback to using Identity if FinalOutputPath is not set. - // See bug https://github.com/NuGet/Home/issues/5408 + // See bug https://github.com/NuGet/Home/issues/5408 if (string.IsNullOrEmpty(finalOutputPath)) { finalOutputPath = assembly.GetProperty(IdentityProperty); @@ -437,6 +445,19 @@ private IEnumerable InitLibFiles(IMSBuildItem[] libFiles) throw new PackagingException(NuGetLogCode.NU5027, string.Format(CultureInfo.CurrentCulture, Strings.InvalidTargetFramework, finalOutputPath)); } + NuGetFramework framework = NuGetFramework.Parse(targetFramework); + var isNet5EraTfm = framework.Version.Major >= 5 && StringComparer.OrdinalIgnoreCase.Equals(FrameworkConstants.FrameworkIdentifiers.NetCoreApp, framework.Framework); + if (isNet5EraTfm) + { + var dotIndex = targetFramework.IndexOf('.'); + var dashIndex = targetFramework.IndexOf('-'); + var frameworkVersionHasDot = (dashIndex > -1 && dotIndex > -1 && dotIndex < dashIndex) || (dashIndex == -1 && dotIndex > -1); + if (!frameworkVersionHasDot) + { + logger.LogWarning(string.Format(CultureInfo.CurrentCulture, Strings.MissingRequiredDot, NuGetLogCode.NU5502, targetFramework)); + } + } + assemblies.Add(new OutputLibFile() { FinalOutputPath = finalOutputPath, @@ -480,6 +501,28 @@ private ICollection ParsePackageTypes(IPackTaskRequest request) + { + if (request.PackItem == null) + { + throw new PackagingException(NuGetLogCode.NU5028, Strings.NoPackItemProvided); + } + + string assetsFilePath = Path.Combine(request.RestoreOutputPath, LockFileFormat.AssetsFileName); + + if (!File.Exists(assetsFilePath)) + { + throw new InvalidOperationException(string.Format( + CultureInfo.CurrentCulture, + Strings.AssetsFileNotFound, + assetsFilePath)); + } + // The assets file is necessary for project and package references. Pack should not do any traversal, + // so we leave that work up to restore (which produces the assets file). + var lockFileFormat = new LockFileFormat(); + return lockFileFormat.Read(assetsFilePath); + } + private void InitCurrentDirectoryAndFileName(IPackTaskRequest request, PackArgs packArgs) { if (request.PackItem == null) @@ -655,7 +698,7 @@ private IEnumerable GetContentMetadata(IMSBuildItem packageFile var newTargetPath = Path.Combine(targetPath, identity); // We need to do this because evaluated identity in the above line of code can be an empty string // in the case when the original identity string was the absolute path to a file in project directory, and is in - // the same directory as the csproj file. + // the same directory as the csproj file. newTargetPath = PathUtility.EnsureTrailingSlash(newTargetPath); newTargetPaths.Add(newTargetPath); } @@ -813,7 +856,7 @@ private static void InitializeProjectDependencies( var versionToUse = new VersionRange(targetLibrary.Version); - // Use the project reference version obtained at build time if it exists, otherwise fallback to the one in assets file. + // Use the project reference version obtained at build time if it exists, otherwise fallback to the one in assets file. if (projectRefToVersionMap.TryGetValue(projectReference.ProjectPath, out var projectRefVersion)) { versionToUse = VersionRange.Parse(projectRefVersion, allowFloating: false); @@ -872,7 +915,7 @@ private static void InitializePackageDependencies( // Add each package dependency. foreach (var packageDependency in packageDependencies) { - // If we have a floating package dependency like 1.2.3-xyz-*, we + // If we have a floating package dependency like 1.2.3-xyz-*, we // use the version of the package that restore resolved it to. if (packageDependency.LibraryRange.VersionRange.IsFloating) { diff --git a/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.Designer.cs b/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.Designer.cs index fbedbeb9b1b..31ba15a1508 100644 --- a/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.Designer.cs @@ -10,7 +10,6 @@ namespace NuGet.Build.Tasks.Pack { using System; - using System.Reflection; /// @@ -20,7 +19,7 @@ namespace NuGet.Build.Tasks.Pack { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Strings { @@ -40,7 +39,7 @@ internal Strings() { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NuGet.Build.Tasks.Pack.Strings", typeof(Strings).GetTypeInfo().Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NuGet.Build.Tasks.Pack.Strings", typeof(Strings).Assembly); resourceMan = temp; } return resourceMan; @@ -160,6 +159,15 @@ internal static string InvalidPackageVersion { } } + /// + /// Looks up a localized string similar to Platform version is missing from '{0}'. + /// + internal static string InvalidPlatformVersion { + get { + return ResourceManager.GetString("InvalidPlatformVersion", resourceCulture); + } + } + /// /// Looks up a localized string similar to Invalid target framework for the file '{0}'.. /// @@ -178,6 +186,15 @@ internal static string IsPackableFalseError { } } + /// + /// Looks up a localized string similar to {0}: Dots in TargetFramework versions are required. The missing dot in '{1}' might cause future problems.. + /// + internal static string MissingRequiredDot { + get { + return ResourceManager.GetString("MissingRequiredDot", resourceCulture); + } + } + /// /// Looks up a localized string similar to No project was provided to the PackTask.. /// diff --git a/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.resx b/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.resx index f1a43c014ed..355182ded2a 100644 --- a/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.resx +++ b/src/NuGet.Core/NuGet.Build.Tasks.Pack/Strings.resx @@ -159,12 +159,20 @@ PackageVersion string specified '{0}' is invalid. {0} is the version. + + Platform version is missing from '{0}' + {0} is the target framework string. + Invalid target framework for the file '{0}'. This project cannot be packaged because packaging has been disabled. Add <IsPackable>true</IsPackable> to the project file to enable producing a package from this project. + + {0}: Dots in TargetFramework versions are required. The missing dot in '{1}' might cause future problems. + {0} is the NuGetLogCode, {1} is the target framework string. + No project was provided to the PackTask. @@ -172,4 +180,4 @@ The PackageLicenseUrl is being deprecated and cannot be used in conjunction with the PackageLicenseFile or PackageLicenseExpression. Please don't localize PackageLicenseUrl, PackageLicenseFile and PackageLicenseExpression. - + \ No newline at end of file diff --git a/src/NuGet.Core/NuGet.Commands/CommandArgs/PackArgs.cs b/src/NuGet.Core/NuGet.Commands/CommandArgs/PackArgs.cs index 0f9acf252d3..1f02da301df 100644 --- a/src/NuGet.Core/NuGet.Commands/CommandArgs/PackArgs.cs +++ b/src/NuGet.Core/NuGet.Commands/CommandArgs/PackArgs.cs @@ -42,6 +42,7 @@ public class PackArgs public bool Tool { get; set; } public string Version { get; set; } public bool Deterministic { get; set; } + public IDictionary AliasFolderNameMapping { get; set; } public WarningProperties WarningProperties { get; set; } public MSBuildPackTargetArgs PackTargetArgs { get; set; } public Dictionary Properties diff --git a/src/NuGet.Core/NuGet.Commands/CommandRunners/PackCommandRunner.cs b/src/NuGet.Core/NuGet.Commands/CommandRunners/PackCommandRunner.cs index 44054e640c6..7d608132008 100644 --- a/src/NuGet.Core/NuGet.Commands/CommandRunners/PackCommandRunner.cs +++ b/src/NuGet.Core/NuGet.Commands/CommandRunners/PackCommandRunner.cs @@ -318,6 +318,13 @@ private void InitCommonPackageBuilderProperties(PackageBuilder builder) builder.MinClientVersion = _packArgs.MinClientVersion; } + if (_packArgs.AliasFolderNameMapping != null) + { +#pragma warning disable CS0618 // This API is not meant to be used outside of the NuGet SDK. + builder.AliasFolderNameMapping = _packArgs.AliasFolderNameMapping; +#pragma warning restore CS0618 + } + CheckForUnsupportedFrameworks(builder); ExcludeFiles(builder.Files); @@ -992,7 +999,7 @@ private static string ResolvePath(IPackageFile packageFile, string basePath) private bool BuildSymbolsPackage(string path) { PackageBuilder symbolsBuilder = CreatePackageBuilderFromNuspec(path); - if (_packArgs.SymbolPackageFormat == SymbolPackageFormat.Snupkg) // Snupkgs can only have 1 PackageType. + if (_packArgs.SymbolPackageFormat == SymbolPackageFormat.Snupkg) // Snupkgs can only have 1 PackageType. { symbolsBuilder.PackageTypes.Clear(); symbolsBuilder.PackageTypes.Add(PackageType.SymbolsPackage); diff --git a/src/NuGet.Core/NuGet.Commands/GlobalSuppressions.cs b/src/NuGet.Core/NuGet.Commands/GlobalSuppressions.cs index a36117eb9ac..362fe7ab774 100644 --- a/src/NuGet.Core/NuGet.Commands/GlobalSuppressions.cs +++ b/src/NuGet.Core/NuGet.Commands/GlobalSuppressions.cs @@ -267,3 +267,4 @@ [assembly: SuppressMessage("Build", "CA1307:The behavior of 'string.GetHashCode()' could vary based on the current user's locale settings. Replace this call in 'Microsoft.Extensions.Internal.HashCodeCombiner.Add(string)' with a call to 'string.GetHashCode(System.StringComparison)'.", Justification = "", Scope = "member", Target = "~M:Microsoft.Extensions.Internal.HashCodeCombiner.Add(System.String)")] [assembly: SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "API already shipped", Scope = "member", Target = "~M:NuGet.Commands.RestoreSummary.Log(NuGet.Common.ILogger,System.Collections.Generic.IEnumerable{NuGet.Commands.RestoreSummary},System.Boolean)")] [assembly: SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "API already shipped", Scope = "member", Target = "~M:NuGet.Commands.RestoreSummary.Log(NuGet.Common.ILogger,System.Collections.Generic.IReadOnlyList{NuGet.Commands.RestoreSummary},System.Boolean)")] +[assembly: SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "In order to preserve the external API, we can't pass this value in through a constructor, and instead we add it post-construction.", Scope = "member", Target = "~P:NuGet.Commands.PackArgs.AliasFolderNameMapping")] diff --git a/src/NuGet.Core/NuGet.Commands/MSBuildProjectFactory.cs b/src/NuGet.Core/NuGet.Commands/MSBuildProjectFactory.cs index 5a940bd97ce..0911070236f 100644 --- a/src/NuGet.Core/NuGet.Commands/MSBuildProjectFactory.cs +++ b/src/NuGet.Core/NuGet.Commands/MSBuildProjectFactory.cs @@ -80,6 +80,10 @@ public PackageBuilder CreateBuilder(string basePath, NuGetVersion version, strin Files.Clear(); builder.Files.Clear(); +#pragma warning disable CS0618 // This API is not meant to be used outside the NuGet SDK. + builder.AliasFolderNameMapping = PackArgs.AliasFolderNameMapping; +#pragma warning restore CS0618 + AddOutputFiles(builder); // Add content files if there are any. They could come from a project or nuspec file diff --git a/src/NuGet.Core/NuGet.Commands/PublicAPI/net472/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Commands/PublicAPI/net472/PublicAPI.Unshipped.txt index 48f39c597df..c073cad04eb 100644 --- a/src/NuGet.Core/NuGet.Commands/PublicAPI/net472/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Commands/PublicAPI/net472/PublicAPI.Unshipped.txt @@ -1,3 +1,5 @@ NuGet.Commands.VerifyArgs.PackagePaths.get -> System.Collections.Generic.IReadOnlyList NuGet.Commands.VerifyArgs.PackagePaths.set -> void -static NuGet.Commands.MSBuildProjectFrameworkUtility.GetProjectFramework(string projectFilePath, string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion) -> NuGet.Frameworks.NuGetFramework \ No newline at end of file +NuGet.Commands.PackArgs.AliasFolderNameMapping.get -> System.Collections.Generic.IDictionary +NuGet.Commands.PackArgs.AliasFolderNameMapping.set -> void +static NuGet.Commands.MSBuildProjectFrameworkUtility.GetProjectFramework(string projectFilePath, string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion) -> NuGet.Frameworks.NuGetFramework diff --git a/src/NuGet.Core/NuGet.Commands/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Commands/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt index 7b35bec2079..c073cad04eb 100644 --- a/src/NuGet.Core/NuGet.Commands/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Commands/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt @@ -1,3 +1,5 @@ NuGet.Commands.VerifyArgs.PackagePaths.get -> System.Collections.Generic.IReadOnlyList NuGet.Commands.VerifyArgs.PackagePaths.set -> void +NuGet.Commands.PackArgs.AliasFolderNameMapping.get -> System.Collections.Generic.IDictionary +NuGet.Commands.PackArgs.AliasFolderNameMapping.set -> void static NuGet.Commands.MSBuildProjectFrameworkUtility.GetProjectFramework(string projectFilePath, string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion) -> NuGet.Frameworks.NuGetFramework diff --git a/src/NuGet.Core/NuGet.Commands/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Commands/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index 7b35bec2079..c073cad04eb 100644 --- a/src/NuGet.Core/NuGet.Commands/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Commands/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -1,3 +1,5 @@ NuGet.Commands.VerifyArgs.PackagePaths.get -> System.Collections.Generic.IReadOnlyList NuGet.Commands.VerifyArgs.PackagePaths.set -> void +NuGet.Commands.PackArgs.AliasFolderNameMapping.get -> System.Collections.Generic.IDictionary +NuGet.Commands.PackArgs.AliasFolderNameMapping.set -> void static NuGet.Commands.MSBuildProjectFrameworkUtility.GetProjectFramework(string projectFilePath, string targetFrameworkMoniker, string targetPlatformMoniker, string targetPlatformMinVersion) -> NuGet.Frameworks.NuGetFramework diff --git a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs index c0b5b8bfe9b..280ff25fa1e 100644 --- a/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs +++ b/src/NuGet.Core/NuGet.Commands/RestoreCommand/RestoreCommand.cs @@ -181,6 +181,8 @@ public async Task ExecuteAsync(CancellationToken token) _success = false; } + _success &= HasValidPlatformVersions(); + // evaluate packages.lock.json file var packagesLockFilePath = PackagesLockFileUtilities.GetNuGetLockFilePath(_request.Project); var isLockFileValid = false; @@ -404,6 +406,23 @@ public async Task ExecuteAsync(CancellationToken token) } } + private bool HasValidPlatformVersions() + { + IEnumerable versionlessPlatforms = _request.Project.TargetFrameworks.Select(tfm => tfm.FrameworkName).Where(fw => !string.IsNullOrEmpty(fw.Platform) && (fw.PlatformVersion == FrameworkConstants.EmptyVersion)); + if (versionlessPlatforms.Any()) + { + foreach (NuGetFramework fw in versionlessPlatforms) + { + _logger.Log(RestoreLogMessage.CreateError(NuGetLogCode.NU1012, string.Format(CultureInfo.CurrentCulture, Strings.Error_PlatformVersionNotPresent, fw.Framework, fw.Platform))); + } + return false; + } + else + { + return true; + } + } + private async Task AreCentralVersionRequirementsSatisfiedAsync() { // The dependencies should not have versions explicitelly defined if cpvm is enabled. @@ -627,7 +646,7 @@ private bool ValidatePackagesSha512(PackagesLockFile lockFile, LockFile assetsFi { if (!noOp) { - // Clean up to preserve the pre no-op behavior. This should not be used, but we want to be cautious. + // Clean up to preserve the pre no-op behavior. This should not be used, but we want to be cautious. _request.LockFilePath = null; _request.Project.RestoreMetadata.CacheFilePath = null; } @@ -727,7 +746,7 @@ private LockFile BuildAssetsFile( /// /// Check if the given graphs are valid and log errors/warnings. /// If fatal errors are encountered the rest of the errors/warnings - /// are not logged. This is to avoid flooding the log with long + /// are not logged. This is to avoid flooding the log with long /// dependency chains for every package. /// private async Task ValidateRestoreGraphsAsync(IEnumerable graphs, ILogger logger) @@ -1108,7 +1127,7 @@ private List GetProjectReferences(RemoteWalkContext co else { // External references were passed, but the top level project wasn't found. - // This is always due to an internal issue and typically caused by errors + // This is always due to an internal issue and typically caused by errors // building the project closure. Debug.Fail("RestoreRequest.ExternalProjects contains references, but does not contain the top level references. Add the project we are restoring for."); throw new InvalidOperationException($"Missing external reference metadata for {_request.Project.Name}"); diff --git a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs index ef8dac6a044..6f09f699b42 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.Commands/Strings.Designer.cs @@ -10,8 +10,8 @@ namespace NuGet.Commands { using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,15 +23,15 @@ namespace NuGet.Commands { [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Strings { - + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Strings() { } - + /// /// Returns the cached ResourceManager instance used by this class. /// @@ -45,7 +45,7 @@ internal Strings() { return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. @@ -59,7 +59,7 @@ internal Strings() { resourceCulture = value; } } - + /// /// Looks up a localized string similar to Add file '{0}' to package as '{1}'. /// @@ -68,7 +68,7 @@ internal static string AddFileToPackage { return ResourceManager.GetString("AddFileToPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to The argument cannot be null or empty.. /// @@ -77,7 +77,7 @@ internal static string ArgumentCannotBeNullOrEmpty { return ResourceManager.GetString("ArgumentCannotBeNullOrEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Building project '{0}' for target framework '{1}'.. /// @@ -86,7 +86,7 @@ internal static string BuildingProjectTargetingFramework { return ResourceManager.GetString("BuildingProjectTargetingFramework", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' cannot be used in conjunction with other values.. /// @@ -95,7 +95,7 @@ internal static string CannotBeUsedWithOtherValues { return ResourceManager.GetString("CannotBeUsedWithOtherValues", resourceCulture); } } - + /// /// Looks up a localized string similar to The project {0} is using CentralPackageVersionManagement, a NuGet preview feature.. /// @@ -104,7 +104,7 @@ internal static string CentralPackageVersionManagementInPreview { return ResourceManager.GetString("CentralPackageVersionManagementInPreview", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}File path: {1}. /// @@ -113,7 +113,7 @@ internal static string ClientCertificatesFileCertFilePath { return ResourceManager.GetString("ClientCertificatesFileCertFilePath", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Password: -. /// @@ -122,7 +122,7 @@ internal static string ClientCertificatesFileCertNoPassword { return ResourceManager.GetString("ClientCertificatesFileCertNoPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Password: ****. /// @@ -131,7 +131,7 @@ internal static string ClientCertificatesFileCertWithPassword { return ResourceManager.GetString("ClientCertificatesFileCertWithPassword", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Certificates status: {1}. /// @@ -140,7 +140,7 @@ internal static string ClientCertificatesItemCertificateError { return ResourceManager.GetString("ClientCertificatesItemCertificateError", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Certificate: {1}. /// @@ -149,7 +149,7 @@ internal static string ClientCertificatesItemCertificateMessage { return ResourceManager.GetString("ClientCertificatesItemCertificateMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}{1} [{2}]. /// @@ -158,7 +158,7 @@ internal static string ClientCertificatesLogTitle { return ResourceManager.GetString("ClientCertificatesLogTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Find by: {1}. /// @@ -167,7 +167,7 @@ internal static string ClientCertificatesStoreCertFindBy { return ResourceManager.GetString("ClientCertificatesStoreCertFindBy", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Find value: {1}. /// @@ -176,7 +176,7 @@ internal static string ClientCertificatesStoreCertFindValue { return ResourceManager.GetString("ClientCertificatesStoreCertFindValue", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Store location: {1}. /// @@ -185,7 +185,7 @@ internal static string ClientCertificatesStoreCertStoreLocation { return ResourceManager.GetString("ClientCertificatesStoreCertStoreLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to {0}Store name: {1}. /// @@ -194,7 +194,7 @@ internal static string ClientCertificatesStoreCertStoreName { return ResourceManager.GetString("ClientCertificatesStoreCertStoreName", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificate configured for the package source '{0}' was successfully added.. /// @@ -203,7 +203,7 @@ internal static string ClientCertificateSuccessfullyAdded { return ResourceManager.GetString("ClientCertificateSuccessfullyAdded", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificate configured for the package source '{0}' was successfully removed.. /// @@ -212,7 +212,7 @@ internal static string ClientCertificateSuccessfullyRemoved { return ResourceManager.GetString("ClientCertificateSuccessfullyRemoved", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificate configured for the package source '{0}' was successfully updated.. /// @@ -221,7 +221,7 @@ internal static string ClientCertificateSuccessfullyUpdated { return ResourceManager.GetString("ClientCertificateSuccessfullyUpdated", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to add trusted author. The package is not author signed.. /// @@ -230,7 +230,7 @@ internal static string Error_AuthorTrustExpectedAuthorSignature { return ResourceManager.GetString("Error_AuthorTrustExpectedAuthorSignature", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build using '{0} {1}'.. /// @@ -239,7 +239,7 @@ internal static string Error_BuildFailed { return ResourceManager.GetString("Error_BuildFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find version of msbuild.. /// @@ -248,7 +248,7 @@ internal static string Error_CannotFindMsbuild { return ResourceManager.GetString("Error_CannotFindMsbuild", resourceCulture); } } - + /// /// Looks up a localized string similar to Trusted owners are not supported in trusted author items.. /// @@ -257,7 +257,7 @@ internal static string Error_CannotTrustOwnersForAuthor { return ResourceManager.GetString("Error_CannotTrustOwnersForAuthor", resourceCulture); } } - + /// /// Looks up a localized string similar to The packages {0} are implicitly referenced. You do not typically need to reference them from your project or in your central package versions management file. For more information, see https://aka.ms/sdkimplicitrefs. /// @@ -266,7 +266,7 @@ internal static string Error_CentralPackageVersions_AutoreferencedReferencesNotA return ResourceManager.GetString("Error_CentralPackageVersions_AutoreferencedReferencesNotAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to Centrally defined floating package versions are not allowed.. /// @@ -284,7 +284,7 @@ internal static string Error_CentralPackageVersions_MissingPackageVersion { return ResourceManager.GetString("Error_CentralPackageVersions_MissingPackageVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Projects that use central package version management should not define the version on the PackageReference items but on the PackageVersion items: {0}.. /// @@ -293,7 +293,7 @@ internal static string Error_CentralPackageVersions_VersionsNotAllowed { return ResourceManager.GetString("Error_CentralPackageVersions_VersionsNotAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificate configured for the package source '{0}' already exists.. /// @@ -302,7 +302,7 @@ internal static string Error_ClientCertificateAlreadyExist { return ResourceManager.GetString("Error_ClientCertificateAlreadyExist", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificate configured for the package source '{0}' does not exist. /// @@ -311,7 +311,7 @@ internal static string Error_ClientCertificateNotExist { return ResourceManager.GetString("Error_ClientCertificateNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificates were not found.. /// @@ -320,7 +320,7 @@ internal static string Error_ClientCertificatesNotFound { return ResourceManager.GetString("Error_ClientCertificatesNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Client certificate configured for the package source '{0}' cannot be modified due to a type mismatch.. /// @@ -329,7 +329,7 @@ internal static string Error_ClientCertificateTypeMismatch { return ResourceManager.GetString("Error_ClientCertificateTypeMismatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not add the trusted signer: {0}. /// @@ -338,7 +338,7 @@ internal static string Error_CouldNotAdd { return ResourceManager.GetString("Error_CouldNotAdd", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not list the trusted signers: {0}. /// @@ -347,7 +347,7 @@ internal static string Error_CouldNotList { return ResourceManager.GetString("Error_CouldNotList", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not list the client certificates: {0}. /// @@ -356,7 +356,7 @@ internal static string Error_CouldNotListClientCertificates { return ResourceManager.GetString("Error_CouldNotListClientCertificates", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not remove the trusted signer: {0}. /// @@ -365,7 +365,7 @@ internal static string Error_CouldNotRemove { return ResourceManager.GetString("Error_CouldNotRemove", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not remove the client certificate: {0}. /// @@ -374,7 +374,7 @@ internal static string Error_CouldNotRemoveClientCertificate { return ResourceManager.GetString("Error_CouldNotRemoveClientCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not sync the trusted repository: {0}. /// @@ -383,7 +383,7 @@ internal static string Error_CouldNotSync { return ResourceManager.GetString("Error_CouldNotSync", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not update the client certificate: {0}. /// @@ -392,7 +392,7 @@ internal static string Error_CouldNotUpdateClientCertificate { return ResourceManager.GetString("Error_CouldNotUpdateClientCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to The repository with the service index '{0}' does not list any trusted certificates.. /// @@ -401,7 +401,7 @@ internal static string Error_EmptyCertificateListInRepository { return ResourceManager.GetString("Error_EmptyCertificateListInRepository", resourceCulture); } } - + /// /// Looks up a localized string similar to A source file was added with an empty path.. /// @@ -410,7 +410,7 @@ internal static string Error_EmptySourceFilePath { return ResourceManager.GetString("Error_EmptySourceFilePath", resourceCulture); } } - + /// /// Looks up a localized string similar to The project directory for the source file '{0}' could not be found.. /// @@ -419,7 +419,7 @@ internal static string Error_EmptySourceFileProjectDirectory { return ResourceManager.GetString("Error_EmptySourceFileProjectDirectory", resourceCulture); } } - + /// /// Looks up a localized string similar to The package {0} {1} has a package type {2} that is incompatible with this project.. /// @@ -428,7 +428,7 @@ internal static string Error_IncompatiblePackageType { return ResourceManager.GetString("Error_IncompatiblePackageType", resourceCulture); } } - + /// /// Looks up a localized string similar to Specify a nuspec, project.json, or project file to use. /// @@ -437,7 +437,7 @@ internal static string Error_InputFileNotSpecified { return ResourceManager.GetString("Error_InputFileNotSpecified", resourceCulture); } } - + /// /// Looks up a localized string similar to PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.. /// @@ -446,7 +446,7 @@ internal static string Error_InvalidATF { return ResourceManager.GetString("Error_InvalidATF", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid certificate information from the service index '{0}'.. /// @@ -455,7 +455,7 @@ internal static string Error_InvalidCertificateInformationFromServer { return ResourceManager.GetString("Error_InvalidCertificateInformationFromServer", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid combination of arguments.. /// @@ -464,7 +464,7 @@ internal static string Error_InvalidCombinationOfArguments { return ResourceManager.GetString("Error_InvalidCombinationOfArguments", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid input '{0}'. The file type was not recognized.. /// @@ -473,7 +473,7 @@ internal static string Error_InvalidCommandLineInput { return ResourceManager.GetString("Error_InvalidCommandLineInput", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid input '{0}'. Valid file names are 'packages.config' or 'packages.*.config'.. /// @@ -482,7 +482,7 @@ internal static string Error_InvalidCommandLineInputConfig { return ResourceManager.GetString("Error_InvalidCommandLineInputConfig", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid input '{0}'. Valid file names are 'project.json' or '*.project.json'.. /// @@ -491,7 +491,7 @@ internal static string Error_InvalidCommandLineInputJson { return ResourceManager.GetString("Error_InvalidCommandLineInputJson", resourceCulture); } } - + /// /// Looks up a localized string similar to Package version constraints for '{0}' return a version range that is empty.. /// @@ -500,7 +500,7 @@ internal static string Error_InvalidDependencyVersionConstraints { return ResourceManager.GetString("Error_InvalidDependencyVersionConstraints", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid restore input where RestorePackagesWithLockFile property is set to false but a packages lock file exists at {0}.. /// @@ -509,7 +509,7 @@ internal static string Error_InvalidLockFileInput { return ResourceManager.GetString("Error_InvalidLockFileInput", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid project-package combination for {0} {1}. DotnetToolReference project style can only contain references of the DotnetTool type. /// @@ -518,7 +518,7 @@ internal static string Error_InvalidProjectPackageCombo { return ResourceManager.GetString("Error_InvalidProjectPackageCombo", resourceCulture); } } - + /// /// Looks up a localized string similar to The provided SymbolPackageFormat value {0} is invalid. Allowed values : 'snupkg', 'symbols.nupkg'.. /// @@ -527,7 +527,7 @@ internal static string Error_InvalidSymbolPackageFormat { return ResourceManager.GetString("Error_InvalidSymbolPackageFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build package because of an unsupported targetFramework value on '{0}'.. /// @@ -536,7 +536,7 @@ internal static string Error_InvalidTargetFramework { return ResourceManager.GetString("Error_InvalidTargetFramework", resourceCulture); } } - + /// /// Looks up a localized string similar to Source parameter was not specified.. /// @@ -545,7 +545,7 @@ internal static string Error_MissingSourceParameter { return ResourceManager.GetString("Error_MissingSourceParameter", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} contains more than one path. /// @@ -563,7 +563,7 @@ internal static string Error_NoMatchingCertificate { return ResourceManager.GetString("Error_NoMatchingCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find package {0}. No packages exist with this id in source(s): {1}. /// @@ -572,7 +572,7 @@ internal static string Error_NoPackageVersionsExist { return ResourceManager.GetString("Error_NoPackageVersionsExist", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find package {0} with version {1}. /// @@ -581,7 +581,7 @@ internal static string Error_NoPackageVersionsExistInRange { return ResourceManager.GetString("Error_NoPackageVersionsExistInRange", resourceCulture); } } - + /// /// Looks up a localized string similar to No signature to be trusted was specified for the package '{0}'. Specify either Author or Repository.. /// @@ -590,7 +590,7 @@ internal static string Error_NoSignatureTrustedForPackage { return ResourceManager.GetString("Error_NoSignatureTrustedForPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to get package sources information.. /// @@ -599,7 +599,7 @@ internal static string Error_NoSourcesInformation { return ResourceManager.GetString("Error_NoSourcesInformation", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find a stable package {0} with version {1}. /// @@ -608,7 +608,7 @@ internal static string Error_NoStablePackageVersionsExist { return ResourceManager.GetString("Error_NoStablePackageVersionsExist", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is not a supported hash algorithm.. /// @@ -617,7 +617,7 @@ internal static string Error_NotSupportedHashAlgorithm { return ResourceManager.GetString("Error_NotSupportedHashAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build package. Ensure '{0}' includes assembly files. For help on building symbols package, visit {1}.. /// @@ -626,7 +626,7 @@ internal static string Error_PackageCommandNoFilesForLibPackage { return ResourceManager.GetString("Error_PackageCommandNoFilesForLibPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build package. Ensure '{0}' includes source and symbol files. For help on building symbols package, visit {1}.. /// @@ -635,7 +635,7 @@ internal static string Error_PackageCommandNoFilesForSymbolsPackage { return ResourceManager.GetString("Error_PackageCommandNoFilesForSymbolsPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is not an exact version like '[1.0.0]'. Only exact versions are allowed with PackageDownload.. /// @@ -644,7 +644,7 @@ internal static string Error_PackageDownload_OnlyExactVersionsAreAllowed { return ResourceManager.GetString("Error_PackageDownload_OnlyExactVersionsAreAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to The package is not signed.. /// @@ -653,7 +653,7 @@ internal static string Error_PackageNotSigned { return ResourceManager.GetString("Error_PackageNotSigned", resourceCulture); } } - + /// /// Looks up a localized string similar to Package content hash validation failed for {0}. The package is different than the last restore.. /// @@ -662,7 +662,7 @@ internal static string Error_PackageValidationFailed { return ResourceManager.GetString("Error_PackageValidationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build package. {0}. /// @@ -671,7 +671,16 @@ internal static string Error_PackFailed { return ResourceManager.GetString("Error_PackFailed", resourceCulture); } } - + + /// + /// Looks up a localized string similar to '{0}' needs to contain a platform version.. + /// + internal static string Error_PlatformVersionNotPresent { + get { + return ResourceManager.GetString("Error_PlatformVersionNotPresent", resourceCulture); + } + } + /// /// Looks up a localized string similar to Error occurred when processing file '{0}': {1}. /// @@ -680,7 +689,7 @@ internal static string Error_ProcessingNuspecFile { return ResourceManager.GetString("Error_ProcessingNuspecFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find project '{0}'. Check that the project reference is valid and that the project file exists.. /// @@ -689,7 +698,7 @@ internal static string Error_ProjectDoesNotExist { return ResourceManager.GetString("Error_ProjectDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to The runtime.json specified in the project '{0}' could not be parsed. {1}. /// @@ -698,7 +707,7 @@ internal static string Error_ProjectRuntimeJsonIsUnreadable { return ResourceManager.GetString("Error_ProjectRuntimeJsonIsUnreadable", resourceCulture); } } - + /// /// Looks up a localized string similar to The runtime.json specified in the project '{0}' could not be found.. /// @@ -707,7 +716,7 @@ internal static string Error_ProjectRuntimeJsonNotFound { return ResourceManager.GetString("Error_ProjectRuntimeJsonNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Project {0} must have a single package reference(s).. /// @@ -716,7 +725,7 @@ internal static string Error_ProjectWithIncorrectDependenciesCount { return ResourceManager.GetString("Error_ProjectWithIncorrectDependenciesCount", resourceCulture); } } - + /// /// Looks up a localized string similar to Property '{0}' should not be null or empty.. /// @@ -725,7 +734,7 @@ internal static string Error_PropertyCannotBeNullOrEmpty { return ResourceManager.GetString("Error_PropertyCannotBeNullOrEmpty", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to add trusted repository. The package is not repository signed or countersigned.. /// @@ -734,7 +743,7 @@ internal static string Error_RepoTrustExpectedRepoSignature { return ResourceManager.GetString("Error_RepoTrustExpectedRepoSignature", resourceCulture); } } - + /// /// Looks up a localized string similar to The packages lock file is inconsistent with the project dependencies so restore can't be run in locked mode. Disable the RestoreLockedMode MSBuild property or pass an explicit --force-evaluate option to run restore to update the lock file.. /// @@ -743,7 +752,7 @@ internal static string Error_RestoreInLockedMode { return ResourceManager.GetString("Error_RestoreInLockedMode", resourceCulture); } } - + /// /// Looks up a localized string similar to The repository service index '{0}' is not a valid HTTPS url.. /// @@ -752,7 +761,7 @@ internal static string Error_ServiceIndexShouldBeHttps { return ResourceManager.GetString("Error_ServiceIndexShouldBeHttps", resourceCulture); } } - + /// /// Looks up a localized string similar to Property SourceProvider is null.. /// @@ -761,7 +770,7 @@ internal static string Error_SourceProviderIsNull { return ResourceManager.GetString("Error_SourceProviderIsNull", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid tools package {0} {1}. Tools packages cannot contain more than one PackageType.. /// @@ -770,7 +779,7 @@ internal static string Error_ToolsPackageWithExtraPackageTypes { return ResourceManager.GetString("Error_ToolsPackageWithExtraPackageTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to A trusted author cannot have owners.. /// @@ -779,7 +788,7 @@ internal static string Error_TrustedAuthorNoOwners { return ResourceManager.GetString("Error_TrustedAuthorNoOwners", resourceCulture); } } - + /// /// Looks up a localized string similar to A trusted repository with the service index '{0}' already exists.. /// @@ -788,7 +797,7 @@ internal static string Error_TrustedRepoAlreadyExists { return ResourceManager.GetString("Error_TrustedRepoAlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to A trusted repository '{0}' does not exist.. /// @@ -797,7 +806,7 @@ internal static string Error_TrustedRepositoryDoesNotExist { return ResourceManager.GetString("Error_TrustedRepositoryDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to A trusted signer '{0}' already exists.. /// @@ -806,7 +815,7 @@ internal static string Error_TrustedSignerAlreadyExists { return ResourceManager.GetString("Error_TrustedSignerAlreadyExists", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find project information for '{0}'. If you are using Visual Studio, this may be because the project is unloaded or not part of the current solution so run a restore from the command-line. Otherwise, the project file may be invalid or missing targets required for restore.. /// @@ -815,7 +824,7 @@ internal static string Error_UnableToFindProjectInfo { return ResourceManager.GetString("Error_UnableToFindProjectInfo", resourceCulture); } } - + /// /// Looks up a localized string similar to No build found in {0}. Use the -Build option or build the project.. /// @@ -824,7 +833,7 @@ internal static string Error_UnableToLocateBuildOutput { return ResourceManager.GetString("Error_UnableToLocateBuildOutput", resourceCulture); } } - + /// /// Looks up a localized string similar to The folder '{0}' does not contain a project to restore.. /// @@ -833,7 +842,7 @@ internal static string Error_UnableToLocateRestoreTarget { return ResourceManager.GetString("Error_UnableToLocateRestoreTarget", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to find a project to restore in the folder '{0}'.. /// @@ -842,7 +851,7 @@ internal static string Error_UnableToLocateRestoreTarget_Because { return ResourceManager.GetString("Error_UnableToLocateRestoreTarget_Because", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to sign package.. /// @@ -851,7 +860,7 @@ internal static string Error_UnableToSignPackage { return ResourceManager.GetString("Error_UnableToSignPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Source '{0}' does not exist or cannot be retrived.. /// @@ -860,7 +869,7 @@ internal static string Error_UnavailableSource { return ResourceManager.GetString("Error_UnavailableSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Package '{0}' specifies an invalid build action '{1}' for file '{2}'.. /// @@ -869,7 +878,7 @@ internal static string Error_UnknownBuildAction { return ResourceManager.GetString("Error_UnknownBuildAction", resourceCulture); } } - + /// /// Looks up a localized string similar to The find by search type '{0}' is not recognized.. /// @@ -878,7 +887,7 @@ internal static string Error_UnknownClientCertificatesFindBy { return ResourceManager.GetString("Error_UnknownClientCertificatesFindBy", resourceCulture); } } - + /// /// Looks up a localized string similar to The store location '{0}' is not recognized.. /// @@ -887,7 +896,7 @@ internal static string Error_UnknownClientCertificatesStoreLocation { return ResourceManager.GetString("Error_UnknownClientCertificatesStoreLocation", resourceCulture); } } - + /// /// Looks up a localized string similar to The source name '{0}' is not recognized.. /// @@ -896,7 +905,7 @@ internal static string Error_UnknownClientCertificatesStoreName { return ResourceManager.GetString("Error_UnknownClientCertificatesStoreName", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot determine client certificate store type. /// @@ -905,7 +914,7 @@ internal static string Error_UnknownClientCertificateStoreType { return ResourceManager.GetString("Error_UnknownClientCertificateStoreType", resourceCulture); } } - + /// /// Looks up a localized string similar to The trust target '{0}' is unsupported.. /// @@ -914,7 +923,7 @@ internal static string Error_UnsupportedTrustTarget { return ResourceManager.GetString("Error_UnsupportedTrustTarget", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to output resolved nuspec file because it would overwrite the original at '{0}'. /// @@ -923,7 +932,7 @@ internal static string Error_WriteResolvedNuSpecOverwriteOriginal { return ResourceManager.GetString("Error_WriteResolvedNuSpecOverwriteOriginal", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid input '{0}'. XProj support has been removed. Support for XProj and standalone project.json files has been removed, to continue working with legacy projects use NuGet 3.5.x from https://nuget.org/downloads. /// @@ -932,7 +941,7 @@ internal static string Error_XPROJNotAllowed { return ResourceManager.GetString("Error_XPROJNotAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to build '{0}'.. /// @@ -941,7 +950,7 @@ internal static string FailedToBuildProject { return ResourceManager.GetString("FailedToBuildProject", resourceCulture); } } - + /// /// Looks up a localized string similar to File '{0}' is not added because the package already contains file '{1}'. /// @@ -950,7 +959,7 @@ internal static string FileNotAddedToPackage { return ResourceManager.GetString("FileNotAddedToPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Found {0} version(s) in {1} [ Nearest version: {2} ]. /// @@ -959,7 +968,7 @@ internal static string FoundVersionsInSource { return ResourceManager.GetString("FoundVersionsInSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Found {0} version(s) in {1}. /// @@ -968,7 +977,7 @@ internal static string FoundVersionsInSourceWithoutMatch { return ResourceManager.GetString("FoundVersionsInSourceWithoutMatch", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid restore input. {0}. /// @@ -977,7 +986,7 @@ internal static string InvalidRestoreInput { return ResourceManager.GetString("InvalidRestoreInput", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid restore input. {0} Input files: {1}.. /// @@ -986,7 +995,7 @@ internal static string InvalidRestoreInputWithFiles { return ResourceManager.GetString("InvalidRestoreInputWithFiles", resourceCulture); } } - + /// /// Looks up a localized string similar to The specified source '{0}' is invalid. Provide a valid source.. /// @@ -995,7 +1004,7 @@ internal static string InvalidSource { return ResourceManager.GetString("InvalidSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Local resources cleared.. /// @@ -1004,7 +1013,7 @@ internal static string LocalsCommand_ClearedSuccessful { return ResourceManager.GetString("LocalsCommand_ClearedSuccessful", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing local resources failed: Unable to delete one or more files.. /// @@ -1013,7 +1022,7 @@ internal static string LocalsCommand_ClearFailed { return ResourceManager.GetString("LocalsCommand_ClearFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing NuGet cache: {0}. /// @@ -1022,7 +1031,7 @@ internal static string LocalsCommand_ClearingNuGetCache { return ResourceManager.GetString("LocalsCommand_ClearingNuGetCache", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing NuGet global packages folder: {0}. /// @@ -1031,7 +1040,7 @@ internal static string LocalsCommand_ClearingNuGetGlobalPackagesFolder { return ResourceManager.GetString("LocalsCommand_ClearingNuGetGlobalPackagesFolder", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing NuGet HTTP cache: {0}. /// @@ -1040,7 +1049,7 @@ internal static string LocalsCommand_ClearingNuGetHttpCache { return ResourceManager.GetString("LocalsCommand_ClearingNuGetHttpCache", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing NuGet plugins cache: {0}. /// @@ -1049,7 +1058,7 @@ internal static string LocalsCommand_ClearingNuGetPluginsCache { return ResourceManager.GetString("LocalsCommand_ClearingNuGetPluginsCache", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing NuGet Temp cache: {0}. /// @@ -1058,7 +1067,7 @@ internal static string LocalsCommand_ClearingNuGetTempCache { return ResourceManager.GetString("LocalsCommand_ClearingNuGetTempCache", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to delete '{0}'.. /// @@ -1067,7 +1076,7 @@ internal static string LocalsCommand_FailedToDeletePath { return ResourceManager.GetString("LocalsCommand_FailedToDeletePath", resourceCulture); } } - + /// /// Looks up a localized string similar to usage: NuGet locals <all | http-cache | global-packages | temp | plugins-cache> [--clear | -c | --list | -l] ///For more information, visit https://docs.nuget.org/docs/reference/command-line-reference. @@ -1077,7 +1086,7 @@ internal static string LocalsCommand_Help { return ResourceManager.GetString("LocalsCommand_Help", resourceCulture); } } - + /// /// Looks up a localized string similar to An invalid local resource name was provided. Provide one of the following values: http-cache, temp, global-packages, all.. /// @@ -1086,7 +1095,7 @@ internal static string LocalsCommand_InvalidLocalResourceName { return ResourceManager.GetString("LocalsCommand_InvalidLocalResourceName", resourceCulture); } } - + /// /// Looks up a localized string similar to The location of local resource '{0}' is undefined.. /// @@ -1095,7 +1104,7 @@ internal static string LocalsCommand_LocalResourcePathNotSet { return ResourceManager.GetString("LocalsCommand_LocalResourcePathNotSet", resourceCulture); } } - + /// /// Looks up a localized string similar to Local resources partially cleared.. /// @@ -1104,7 +1113,7 @@ internal static string LocalsCommand_LocalsPartiallyCleared { return ResourceManager.GetString("LocalsCommand_LocalsPartiallyCleared", resourceCulture); } } - + /// /// Looks up a localized string similar to All projects are up-to-date for restore.. /// @@ -1113,7 +1122,7 @@ internal static string Log_AllProjectsUpToDate { return ResourceManager.GetString("Log_AllProjectsUpToDate", resourceCulture); } } - + /// /// Looks up a localized string similar to The expected assets file for {0} does not exist, no-op is not possible. Continuing restore.. /// @@ -1122,7 +1131,7 @@ internal static string Log_AssetsFileNotOnDisk { return ResourceManager.GetString("Log_AssetsFileNotOnDisk", resourceCulture); } } - + /// /// Looks up a localized string similar to Checking compatibility of packages on {0}.. /// @@ -1131,7 +1140,7 @@ internal static string Log_CheckingCompatibility { return ResourceManager.GetString("Log_CheckingCompatibility", resourceCulture); } } - + /// /// Looks up a localized string similar to Checking compatibility for {0} {1} with {2}.. /// @@ -1140,7 +1149,7 @@ internal static string Log_CheckingPackageCompatibility { return ResourceManager.GetString("Log_CheckingPackageCompatibility", resourceCulture); } } - + /// /// Looks up a localized string similar to Committing restore.... /// @@ -1149,7 +1158,7 @@ internal static string Log_Committing { return ResourceManager.GetString("Log_Committing", resourceCulture); } } - + /// /// Looks up a localized string similar to NuGet Config files used:. /// @@ -1158,7 +1167,7 @@ internal static string Log_ConfigFileSummary { return ResourceManager.GetString("Log_ConfigFileSummary", resourceCulture); } } - + /// /// Looks up a localized string similar to The package {0} was converted to original case in the packages directory.. /// @@ -1167,7 +1176,7 @@ internal static string Log_ConvertedPackageToOriginalCase { return ResourceManager.GetString("Log_ConvertedPackageToOriginalCase", resourceCulture); } } - + /// /// Looks up a localized string similar to Detected package downgrade: {0} from {1} to centrally defined {2}. Update the centrally managed package version to a higher version.. /// @@ -1176,7 +1185,7 @@ internal static string Log_CPVM_DowngradeError { return ResourceManager.GetString("Log_CPVM_DowngradeError", resourceCulture); } } - + /// /// Looks up a localized string similar to Cycle detected.. /// @@ -1185,7 +1194,7 @@ internal static string Log_CycleDetected { return ResourceManager.GetString("Log_CycleDetected", resourceCulture); } } - + /// /// Looks up a localized string similar to Dependency specified was {0} {1} but ended up with {2} {3}.. /// @@ -1194,7 +1203,7 @@ internal static string Log_DependencyBumpedUp { return ResourceManager.GetString("Log_DependencyBumpedUp", resourceCulture); } } - + /// /// Looks up a localized string similar to Detected package downgrade: {0} from {1} to {2}. Reference the package directly from the project to select a different version.. /// @@ -1203,7 +1212,7 @@ internal static string Log_DowngradeWarning { return ResourceManager.GetString("Log_DowngradeWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Errors in {0}. /// @@ -1212,7 +1221,7 @@ internal static string Log_ErrorSummary { return ResourceManager.GetString("Log_ErrorSummary", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to resolve conflicts for {0}.. /// @@ -1221,7 +1230,7 @@ internal static string Log_FailedToResolveConflicts { return ResourceManager.GetString("Log_FailedToResolveConflicts", resourceCulture); } } - + /// /// Looks up a localized string similar to Feeds used:. /// @@ -1230,7 +1239,7 @@ internal static string Log_FeedsUsedSummary { return ResourceManager.GetString("Log_FeedsUsedSummary", resourceCulture); } } - + /// /// Looks up a localized string similar to Found project root directory: {0}.. /// @@ -1239,7 +1248,7 @@ internal static string Log_FoundProjectRoot { return ResourceManager.GetString("Log_FoundProjectRoot", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} ({1}). /// @@ -1248,7 +1257,7 @@ internal static string Log_FrameworkDisplay { return ResourceManager.GetString("Log_FrameworkDisplay", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} ({1}) / {2}. /// @@ -1257,7 +1266,7 @@ internal static string Log_FrameworkRIDDisplay { return ResourceManager.GetString("Log_FrameworkRIDDisplay", resourceCulture); } } - + /// /// Looks up a localized string similar to Generating MSBuild file {0}.. /// @@ -1266,7 +1275,7 @@ internal static string Log_GeneratingMsBuildFile { return ResourceManager.GetString("Log_GeneratingMsBuildFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Package '{0}' was restored using '{1}' instead of the project target framework '{2}'. This package may not be fully compatible with your project.. /// @@ -1275,7 +1284,7 @@ internal static string Log_ImportsFallbackWarning { return ResourceManager.GetString("Log_ImportsFallbackWarning", resourceCulture); } } - + /// /// Looks up a localized string similar to Installed:. /// @@ -1284,7 +1293,7 @@ internal static string Log_InstalledSummary { return ResourceManager.GetString("Log_InstalledSummary", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} package(s) to {1}. /// @@ -1293,7 +1302,7 @@ internal static string Log_InstalledSummaryCount { return ResourceManager.GetString("Log_InstalledSummaryCount", resourceCulture); } } - + /// /// Looks up a localized string similar to Installing {0} {1}.. /// @@ -1302,7 +1311,7 @@ internal static string Log_InstallingPackage { return ResourceManager.GetString("Log_InstallingPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} {1} is specified in the Lock File target for {2} but is not present in the top-level Libraries list.. /// @@ -1311,7 +1320,7 @@ internal static string Log_LockFileMissingLibraryForTargetLibrary { return ResourceManager.GetString("Log_LockFileMissingLibraryForTargetLibrary", resourceCulture); } } - + /// /// Looks up a localized string similar to The lock file for {0} at location {1} does not exist, no-op is not possible. Continuing restore.. /// @@ -1320,7 +1329,7 @@ internal static string Log_LockFileNotOnDisk { return ResourceManager.GetString("Log_LockFileNotOnDisk", resourceCulture); } } - + /// /// Looks up a localized string similar to The lock file is out-of-date relative to the project file. Regenerating the lock file and re-locking.. /// @@ -1329,7 +1338,7 @@ internal static string Log_LockFileOutOfDate { return ResourceManager.GetString("Log_LockFileOutOfDate", resourceCulture); } } - + /// /// Looks up a localized string similar to Merging in runtimes defined in {0}.. /// @@ -1338,7 +1347,7 @@ internal static string Log_MergingRuntimes { return ResourceManager.GetString("Log_MergingRuntimes", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} {1} provides a compile-time reference assembly for {2} on {3}, but there is no compatible run-time assembly.. /// @@ -1347,7 +1356,7 @@ internal static string Log_MissingImplementationFx { return ResourceManager.GetString("Log_MissingImplementationFx", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} {1} provides a compile-time reference assembly for {2} on {3}, but there is no run-time assembly compatible with {4}.. /// @@ -1356,7 +1365,7 @@ internal static string Log_MissingImplementationFxRuntime { return ResourceManager.GetString("Log_MissingImplementationFxRuntime", resourceCulture); } } - + /// /// Looks up a localized string similar to Not all packages are on disk for: {0}. /// @@ -1365,7 +1374,7 @@ internal static string Log_MissingPackagesOnDisk { return ResourceManager.GetString("Log_MissingPackagesOnDisk", resourceCulture); } } - + /// /// Looks up a localized string similar to Added file '{0}'.. /// @@ -1374,7 +1383,7 @@ internal static string Log_PackageCommandAddedFile { return ResourceManager.GetString("Log_PackageCommandAddedFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Attempting to build symbols package for '{0}'.. /// @@ -1383,7 +1392,7 @@ internal static string Log_PackageCommandAttemptingToBuildSymbolsPackage { return ResourceManager.GetString("Log_PackageCommandAttemptingToBuildSymbolsPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to Install {0} to output path '{1}'. /// @@ -1392,7 +1401,7 @@ internal static string Log_PackageCommandInstallPackageToOutputPath { return ResourceManager.GetString("Log_PackageCommandInstallPackageToOutputPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully created package '{0}'.. /// @@ -1401,7 +1410,7 @@ internal static string Log_PackageCommandSuccess { return ResourceManager.GetString("Log_PackageCommandSuccess", resourceCulture); } } - + /// /// Looks up a localized string similar to Package content hash validation failed for {0}. Expected: {1} Actual: {2}. /// @@ -1410,7 +1419,7 @@ internal static string Log_PackageContentHashValidationFailed { return ResourceManager.GetString("Log_PackageContentHashValidationFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Package {0} {1} is not compatible with {2}.. /// @@ -1419,7 +1428,7 @@ internal static string Log_PackageNotCompatibleWithFx { return ResourceManager.GetString("Log_PackageNotCompatibleWithFx", resourceCulture); } } - + /// /// Looks up a localized string similar to Package {0} {1} does not support any target frameworks.. /// @@ -1428,7 +1437,7 @@ internal static string Log_PackageNotCompatibleWithFx_NoSupports { return ResourceManager.GetString("Log_PackageNotCompatibleWithFx_NoSupports", resourceCulture); } } - + /// /// Looks up a localized string similar to Package {0} {1} supports:. /// @@ -1437,7 +1446,7 @@ internal static string Log_PackageNotCompatibleWithFx_Supports { return ResourceManager.GetString("Log_PackageNotCompatibleWithFx_Supports", resourceCulture); } } - + /// /// Looks up a localized string similar to All packages and projects are compatible with {0}.. /// @@ -1446,7 +1455,7 @@ internal static string Log_PackagesAndProjectsAreCompatible { return ResourceManager.GetString("Log_PackagesAndProjectsAreCompatible", resourceCulture); } } - + /// /// Looks up a localized string similar to One or more packages are incompatible with {0}.. /// @@ -1455,7 +1464,7 @@ internal static string Log_PackagesIncompatible { return ResourceManager.GetString("Log_PackagesIncompatible", resourceCulture); } } - + /// /// Looks up a localized string similar to The project {0} does not specify any target frameworks in {1}.. /// @@ -1464,7 +1473,7 @@ internal static string Log_ProjectDoesNotSpecifyTargetFrameworks { return ResourceManager.GetString("Log_ProjectDoesNotSpecifyTargetFrameworks", resourceCulture); } } - + /// /// Looks up a localized string similar to Project {0} is not compatible with {1}.. /// @@ -1473,7 +1482,7 @@ internal static string Log_ProjectNotCompatibleWithFx { return ResourceManager.GetString("Log_ProjectNotCompatibleWithFx", resourceCulture); } } - + /// /// Looks up a localized string similar to Project {0} does not support any target frameworks.. /// @@ -1482,7 +1491,7 @@ internal static string Log_ProjectNotCompatibleWithFx_NoSupports { return ResourceManager.GetString("Log_ProjectNotCompatibleWithFx_NoSupports", resourceCulture); } } - + /// /// Looks up a localized string similar to Project {0} supports:. /// @@ -1491,7 +1500,7 @@ internal static string Log_ProjectNotCompatibleWithFx_Supports { return ResourceManager.GetString("Log_ProjectNotCompatibleWithFx_Supports", resourceCulture); } } - + /// /// Looks up a localized string similar to One or more projects are incompatible with {0}.. /// @@ -1500,7 +1509,7 @@ internal static string Log_ProjectsIncompatible { return ResourceManager.GetString("Log_ProjectsIncompatible", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} of {1} projects are up-to-date for restore.. /// @@ -1509,7 +1518,7 @@ internal static string Log_ProjectUpToDateSummary { return ResourceManager.GetString("Log_ProjectUpToDateSummary", resourceCulture); } } - + /// /// Looks up a localized string similar to The props file for {0} at location {1} does not exist, no-op is not possible. Continuing restore.. /// @@ -1518,7 +1527,7 @@ internal static string Log_PropsFileNotOnDisk { return ResourceManager.GetString("Log_PropsFileNotOnDisk", resourceCulture); } } - + /// /// Looks up a localized string similar to Reading project file {0}.. /// @@ -1527,7 +1536,7 @@ internal static string Log_ReadingProject { return ResourceManager.GetString("Log_ReadingProject", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to satisfy conflicting requests for '{0}': {1} Framework: {2}. /// @@ -1536,7 +1545,7 @@ internal static string Log_ResolverConflict { return ResourceManager.GetString("Log_ResolverConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to Resolving conflicts for {0}.... /// @@ -1545,7 +1554,7 @@ internal static string Log_ResolvingConflicts { return ResourceManager.GetString("Log_ResolvingConflicts", resourceCulture); } } - + /// /// Looks up a localized string similar to Restored {0} (in {1}).. /// @@ -1554,7 +1563,7 @@ internal static string Log_RestoreComplete { return ResourceManager.GetString("Log_RestoreComplete", resourceCulture); } } - + /// /// Looks up a localized string similar to Restored {0} (in {1}).. /// @@ -1563,7 +1572,7 @@ internal static string Log_RestoreCompleteDotnetTool { return ResourceManager.GetString("Log_RestoreCompleteDotnetTool", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to restore {0} (in {1}).. /// @@ -1572,7 +1581,7 @@ internal static string Log_RestoreFailed { return ResourceManager.GetString("Log_RestoreFailed", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to restore {0} (in {1}).. /// @@ -1581,7 +1590,7 @@ internal static string Log_RestoreFailedDotnetTool { return ResourceManager.GetString("Log_RestoreFailedDotnetTool", resourceCulture); } } - + /// /// Looks up a localized string similar to The restore inputs for '{0}' have changed. Continuing restore.. /// @@ -1590,7 +1599,7 @@ internal static string Log_RestoreNoOpDGChanged { return ResourceManager.GetString("Log_RestoreNoOpDGChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to The restore inputs for '{0}' have not changed. No further actions are required to complete the restore.. /// @@ -1599,7 +1608,7 @@ internal static string Log_RestoreNoOpFinish { return ResourceManager.GetString("Log_RestoreNoOpFinish", resourceCulture); } } - + /// /// Looks up a localized string similar to Restoring packages for {0}.... /// @@ -1608,7 +1617,7 @@ internal static string Log_RestoringPackages { return ResourceManager.GetString("Log_RestoringPackages", resourceCulture); } } - + /// /// Looks up a localized string similar to Restoring packages for {0} to determine compatibility.... /// @@ -1617,7 +1626,7 @@ internal static string Log_RestoringPackagesForCompat { return ResourceManager.GetString("Log_RestoringPackagesForCompat", resourceCulture); } } - + /// /// Looks up a localized string similar to Running non-parallel restore.. /// @@ -1626,7 +1635,7 @@ internal static string Log_RunningNonParallelRestore { return ResourceManager.GetString("Log_RunningNonParallelRestore", resourceCulture); } } - + /// /// Looks up a localized string similar to Running restore with {0} concurrent jobs.. /// @@ -1635,7 +1644,7 @@ internal static string Log_RunningParallelRestore { return ResourceManager.GetString("Log_RunningParallelRestore", resourceCulture); } } - + /// /// Looks up a localized string similar to Scanning packages for runtime.json files.... /// @@ -1644,7 +1653,7 @@ internal static string Log_ScanningForRuntimeJson { return ResourceManager.GetString("Log_ScanningForRuntimeJson", resourceCulture); } } - + /// /// Looks up a localized string similar to Assets file has not changed. Skipping assets file writing. Path: {0}. /// @@ -1653,7 +1662,7 @@ internal static string Log_SkippingAssetsFile { return ResourceManager.GetString("Log_SkippingAssetsFile", resourceCulture); } } - + /// /// Looks up a localized string similar to No-Op restore. The cache will not be updated. Path: {0}. /// @@ -1662,7 +1671,7 @@ internal static string Log_SkippingCacheFile { return ResourceManager.GetString("Log_SkippingCacheFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Skipping compatibility checks of the ridless graph for DotnetToolReference project type. This graph is not used. . /// @@ -1671,7 +1680,7 @@ internal static string Log_SkippingCompatibiilityCheckOnRidlessGraphForDotnetToo return ResourceManager.GetString("Log_SkippingCompatibiilityCheckOnRidlessGraphForDotnetToolReferenceProject", resourceCulture); } } - + /// /// Looks up a localized string similar to Skipping runtime dependency walk, no runtimes defined in project.json.. /// @@ -1680,7 +1689,7 @@ internal static string Log_SkippingRuntimeWalk { return ResourceManager.GetString("Log_SkippingRuntimeWalk", resourceCulture); } } - + /// /// Looks up a localized string similar to The targets file for {0} at location {1} does not exist, no-op is not possible. Continuing restore.. /// @@ -1689,7 +1698,7 @@ internal static string Log_TargetsFileNotOnDisk { return ResourceManager.GetString("Log_TargetsFileNotOnDisk", resourceCulture); } } - + /// /// Looks up a localized string similar to Tool assets file has not changed. Skipping assets file write. Path: {0}. /// @@ -1698,7 +1707,7 @@ internal static string Log_ToolSkippingAssetsFile { return ResourceManager.GetString("Log_ToolSkippingAssetsFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Writing tool assets file to disk. Path: {0}. /// @@ -1707,7 +1716,7 @@ internal static string Log_ToolWritingAssetsFile { return ResourceManager.GetString("Log_ToolWritingAssetsFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Writing tool cache file to disk. Path: {0}. /// @@ -1716,7 +1725,7 @@ internal static string Log_ToolWritingCacheFile { return ResourceManager.GetString("Log_ToolWritingCacheFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Unknown Compatibility Profile: {0}. /// @@ -1725,7 +1734,7 @@ internal static string Log_UnknownCompatibilityProfile { return ResourceManager.GetString("Log_UnknownCompatibilityProfile", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to resolve '{0}' for '{1}'.. /// @@ -1734,7 +1743,7 @@ internal static string Log_UnresolvedDependency { return ResourceManager.GetString("Log_UnresolvedDependency", resourceCulture); } } - + /// /// Looks up a localized string similar to Using packages directory: {0}.. /// @@ -1743,7 +1752,7 @@ internal static string Log_UsingPackagesDirectory { return ResourceManager.GetString("Log_UsingPackagesDirectory", resourceCulture); } } - + /// /// Looks up a localized string similar to Using source {0}.. /// @@ -1752,7 +1761,7 @@ internal static string Log_UsingSource { return ResourceManager.GetString("Log_UsingSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Version conflict detected for {0}. Install/reference {1} directly to project {2} to resolve this issue.. /// @@ -1761,7 +1770,7 @@ internal static string Log_VersionConflict { return ResourceManager.GetString("Log_VersionConflict", resourceCulture); } } - + /// /// Looks up a localized string similar to Writing assets file to disk. Path: {0}. /// @@ -1770,7 +1779,7 @@ internal static string Log_WritingAssetsFile { return ResourceManager.GetString("Log_WritingAssetsFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Writing cache file to disk. Path: {0}. /// @@ -1779,7 +1788,7 @@ internal static string Log_WritingCacheFile { return ResourceManager.GetString("Log_WritingCacheFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Writing packages lock file at disk. Path: {0}. /// @@ -1788,7 +1797,7 @@ internal static string Log_WritingPackagesLockFile { return ResourceManager.GetString("Log_WritingPackagesLockFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing required property '{0}'.. /// @@ -1797,7 +1806,7 @@ internal static string MissingRequiredProperty { return ResourceManager.GetString("MissingRequiredProperty", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing required property '{0}' for project type '{1}'.. /// @@ -1806,7 +1815,7 @@ internal static string MissingRequiredPropertyForProjectType { return ResourceManager.GetString("MissingRequiredPropertyForProjectType", resourceCulture); } } - + /// /// Looks up a localized string similar to Packages containing MSBuild targets and props files cannot be fully installed in projects targeting multiple frameworks. The MSBuild targets and props files have been ignored.. /// @@ -1815,7 +1824,7 @@ internal static string MSBuildWarning_MultiTarget { return ResourceManager.GetString("MSBuildWarning_MultiTarget", resourceCulture); } } - + /// /// Looks up a localized string similar to There are no client certificates.. /// @@ -1824,7 +1833,7 @@ internal static string NoClientCertificates { return ResourceManager.GetString("NoClientCertificates", resourceCulture); } } - + /// /// Looks up a localized string similar to There are no client certificates configured for the package source '{0}'.. /// @@ -1833,7 +1842,7 @@ internal static string NoClientCertificatesMatching { return ResourceManager.GetString("NoClientCertificatesMatching", resourceCulture); } } - + /// /// Looks up a localized string similar to Properties '{0}':'{1}' and '{2}':'{3}' do not match.. /// @@ -1842,7 +1851,7 @@ internal static string NonMatchingProperties { return ResourceManager.GetString("NonMatchingProperties", resourceCulture); } } - + /// /// Looks up a localized string similar to There are no trusted signers.. /// @@ -1851,7 +1860,7 @@ internal static string NoTrustedSigners { return ResourceManager.GetString("NoTrustedSigners", resourceCulture); } } - + /// /// Looks up a localized string similar to No trusted signers with the name: '{0}' were found.. /// @@ -1860,7 +1869,7 @@ internal static string NoTrustedSignersMatching { return ResourceManager.GetString("NoTrustedSignersMatching", resourceCulture); } } - + /// /// Looks up a localized string similar to https://docs.nuget.org/. /// @@ -1869,7 +1878,7 @@ internal static string NuGetDocs { return ResourceManager.GetString("NuGetDocs", resourceCulture); } } - + /// /// Looks up a localized string similar to File from dependency is not changed. File '{0}' is not added.. /// @@ -1878,7 +1887,7 @@ internal static string PackageCommandFileFromDependencyIsChanged { return ResourceManager.GetString("PackageCommandFileFromDependencyIsChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to File from dependency is not changed. File '{0}' is not added.. /// @@ -1887,7 +1896,7 @@ internal static string PackageCommandFileFromDependencyIsNotChanged { return ResourceManager.GetString("PackageCommandFileFromDependencyIsNotChanged", resourceCulture); } } - + /// /// Looks up a localized string similar to Packing files from '{0}'.. /// @@ -1896,7 +1905,7 @@ internal static string PackagingFilesFromOutputPath { return ResourceManager.GetString("PackagingFilesFromOutputPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Persisting restore input to '{0}'.. /// @@ -1905,7 +1914,7 @@ internal static string PersistDGFile { return ResourceManager.GetString("PersistDGFile", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid input combination. Property '{0}' is not allowed.. /// @@ -1914,7 +1923,7 @@ internal static string PropertyNotAllowed { return ResourceManager.GetString("PropertyNotAllowed", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid input combination. Property '{0}' is not allowed for project type '{1}'.. /// @@ -1923,7 +1932,7 @@ internal static string PropertyNotAllowedForProjectType { return ResourceManager.GetString("PropertyNotAllowedForProjectType", resourceCulture); } } - + /// /// Looks up a localized string similar to Registered client certificates:. /// @@ -1932,7 +1941,7 @@ internal static string RegsiteredClientCertificates { return ResourceManager.GetString("RegsiteredClientCertificates", resourceCulture); } } - + /// /// Looks up a localized string similar to Registered trusted signers:. /// @@ -1941,7 +1950,7 @@ internal static string RegsiteredTrustedSigners { return ResourceManager.GetString("RegsiteredTrustedSigners", resourceCulture); } } - + /// /// Looks up a localized string similar to All. /// @@ -1950,7 +1959,7 @@ internal static string ReservedPackageNameAll { return ResourceManager.GetString("ReservedPackageNameAll", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} (via {1}). /// @@ -1959,7 +1968,7 @@ internal static string ResolverRequest_ToStringFormat { return ResourceManager.GetString("ResolverRequest_ToStringFormat", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate file '{0}' not found. For a list of accepted ways to provide a certificate, visit https://docs.nuget.org/docs/reference/command-line-reference. /// @@ -1968,7 +1977,7 @@ internal static string SignCommandCertificateFileNotFound { return ResourceManager.GetString("SignCommandCertificateFileNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate store '{0}' not found. For a list of accepted ways to provide a certificate, visit https://docs.nuget.org/docs/reference/command-line-reference. /// @@ -1977,7 +1986,7 @@ internal static string SignCommandCertificateStoreNotFound { return ResourceManager.GetString("SignCommandCertificateStoreNotFound", resourceCulture); } } - + /// /// Looks up a localized string similar to Select a valid certificate. /// @@ -1986,7 +1995,7 @@ internal static string SignCommandDialogMessage { return ResourceManager.GetString("SignCommandDialogMessage", resourceCulture); } } - + /// /// Looks up a localized string similar to NuGet Sign Certificate Selection. /// @@ -1995,7 +2004,7 @@ internal static string SignCommandDialogTitle { return ResourceManager.GetString("SignCommandDialogTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to Signing package(s) with certificate:. /// @@ -2004,7 +2013,7 @@ internal static string SignCommandDisplayCertificate { return ResourceManager.GetString("SignCommandDisplayCertificate", resourceCulture); } } - + /// /// Looks up a localized string similar to Timestamping package(s) with:. /// @@ -2013,7 +2022,7 @@ internal static string SignCommandDisplayTimestamper { return ResourceManager.GetString("SignCommandDisplayTimestamper", resourceCulture); } } - + /// /// Looks up a localized string similar to The following certificate cannot be used for signing a package as it does not have Code Signing enhanced key usage:. /// @@ -2022,7 +2031,7 @@ internal static string SignCommandInvalidCertEku { return ResourceManager.GetString("SignCommandInvalidCertEku", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate file '{0}' is invalid. For a list of accepted ways to provide a certificate, visit https://docs.nuget.org/docs/reference/command-line-reference. /// @@ -2031,7 +2040,7 @@ internal static string SignCommandInvalidCertException { return ResourceManager.GetString("SignCommandInvalidCertException", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid password was provided for the certificate file '{0}'. Provide a valid password using the '-{1}' option. /// @@ -2040,7 +2049,7 @@ internal static string SignCommandInvalidPasswordException { return ResourceManager.GetString("SignCommandInvalidPasswordException", resourceCulture); } } - + /// /// Looks up a localized string similar to Multiple certificates were found that meet all the given criteria. Use the '-{0}' option with the hash of the desired certificate.. /// @@ -2049,7 +2058,7 @@ internal static string SignCommandMultipleCertException { return ResourceManager.GetString("SignCommandMultipleCertException", resourceCulture); } } - + /// /// Looks up a localized string similar to No certificates were found that meet all the given criteria. For a list of accepted ways to provide a certificate, visit https://docs.nuget.org/docs/reference/command-line-reference. /// @@ -2058,7 +2067,7 @@ internal static string SignCommandNoCertException { return ResourceManager.GetString("SignCommandNoCertException", resourceCulture); } } - + /// /// Looks up a localized string similar to Signed package(s) output path:. /// @@ -2067,7 +2076,7 @@ internal static string SignCommandOutputPath { return ResourceManager.GetString("SignCommandOutputPath", resourceCulture); } } - + /// /// Looks up a localized string similar to Package(s) signed successfully.. /// @@ -2076,7 +2085,7 @@ internal static string SignCommandSuccess { return ResourceManager.GetString("SignCommandSuccess", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source . /// @@ -2085,7 +2094,7 @@ internal static string Source_DefaultNamePrefix { return ResourceManager.GetString("Source_DefaultNamePrefix", resourceCulture); } } - + /// /// Looks up a localized string similar to invalid value for --format: {0}. Allowed values: 'detailed' or 'short'. /// @@ -2094,7 +2103,7 @@ internal static string Source_InvalidFormatValue { return ResourceManager.GetString("Source_InvalidFormatValue", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source name 'All' is a reserved name.. /// @@ -2103,7 +2112,7 @@ internal static string SourcesCommandAllNameIsReserved { return ResourceManager.GetString("SourcesCommandAllNameIsReserved", resourceCulture); } } - + /// /// Looks up a localized string similar to Clearing existing authentication types settings for package source '{0}'.. /// @@ -2112,7 +2121,7 @@ internal static string SourcesCommandClearingExistingAuthTypes { return ResourceManager.GetString("SourcesCommandClearingExistingAuthTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to Both UserName and Password must be specified.. /// @@ -2121,7 +2130,7 @@ internal static string SourcesCommandCredentialsRequired { return ResourceManager.GetString("SourcesCommandCredentialsRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Both UserName and Password must be specified if ValidAuthenticationTypes is specified.. /// @@ -2130,7 +2139,7 @@ internal static string SourcesCommandCredentialsRequiredWithAuthTypes { return ResourceManager.GetString("SourcesCommandCredentialsRequiredWithAuthTypes", resourceCulture); } } - + /// /// Looks up a localized string similar to Disabled. /// @@ -2139,7 +2148,7 @@ internal static string SourcesCommandDisabled { return ResourceManager.GetString("SourcesCommandDisabled", resourceCulture); } } - + /// /// Looks up a localized string similar to Enabled. /// @@ -2148,7 +2157,7 @@ internal static string SourcesCommandEnabled { return ResourceManager.GetString("SourcesCommandEnabled", resourceCulture); } } - + /// /// Looks up a localized string similar to The source specified is invalid. Provide a valid source.. /// @@ -2157,7 +2166,7 @@ internal static string SourcesCommandInvalidSource { return ResourceManager.GetString("SourcesCommandInvalidSource", resourceCulture); } } - + /// /// Looks up a localized string similar to The name specified cannot be empty. Provide a valid name.. /// @@ -2166,7 +2175,7 @@ internal static string SourcesCommandNameRequired { return ResourceManager.GetString("SourcesCommandNameRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find any package source(s) matching name: {0}.. /// @@ -2175,7 +2184,7 @@ internal static string SourcesCommandNoMatchingSourcesFound { return ResourceManager.GetString("SourcesCommandNoMatchingSourcesFound", resourceCulture); } } - + /// /// Looks up a localized string similar to No sources found.. /// @@ -2184,7 +2193,7 @@ internal static string SourcesCommandNoSources { return ResourceManager.GetString("SourcesCommandNoSources", resourceCulture); } } - + /// /// Looks up a localized string similar to Registered Sources:. /// @@ -2193,7 +2202,7 @@ internal static string SourcesCommandRegisteredSources { return ResourceManager.GetString("SourcesCommandRegisteredSources", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source with Name: {0} added successfully.. /// @@ -2202,7 +2211,7 @@ internal static string SourcesCommandSourceAddedSuccessfully { return ResourceManager.GetString("SourcesCommandSourceAddedSuccessfully", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source with Name: {0} disabled successfully.. /// @@ -2211,7 +2220,7 @@ internal static string SourcesCommandSourceDisabledSuccessfully { return ResourceManager.GetString("SourcesCommandSourceDisabledSuccessfully", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source with Name: {0} enabled successfully.. /// @@ -2220,7 +2229,7 @@ internal static string SourcesCommandSourceEnabledSuccessfully { return ResourceManager.GetString("SourcesCommandSourceEnabledSuccessfully", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source with Name: {0} removed successfully.. /// @@ -2229,7 +2238,7 @@ internal static string SourcesCommandSourceRemovedSuccessfully { return ResourceManager.GetString("SourcesCommandSourceRemovedSuccessfully", resourceCulture); } } - + /// /// Looks up a localized string similar to The source specified cannot be empty. Provide a valid source.. /// @@ -2238,7 +2247,7 @@ internal static string SourcesCommandSourceRequired { return ResourceManager.GetString("SourcesCommandSourceRequired", resourceCulture); } } - + /// /// Looks up a localized string similar to The name specified has already been added to the list of available package sources. Provide a unique name.. /// @@ -2247,7 +2256,7 @@ internal static string SourcesCommandUniqueName { return ResourceManager.GetString("SourcesCommandUniqueName", resourceCulture); } } - + /// /// Looks up a localized string similar to The source specified has already been added to the list of available package sources. Provide a unique source.. /// @@ -2256,7 +2265,7 @@ internal static string SourcesCommandUniqueSource { return ResourceManager.GetString("SourcesCommandUniqueSource", resourceCulture); } } - + /// /// Looks up a localized string similar to Package source "{0}" was successfully updated.. /// @@ -2265,7 +2274,7 @@ internal static string SourcesCommandUpdateSuccessful { return ResourceManager.GetString("SourcesCommandUpdateSuccessful", resourceCulture); } } - + /// /// Looks up a localized string similar to The original target frameworks value must match the aliases. Original target frameworks: {0}, aliases: {1}.. /// @@ -2274,7 +2283,7 @@ internal static string SpecValidation_OriginalTargetFrameworksMustMatchAliases { return ResourceManager.GetString("SpecValidation_OriginalTargetFrameworksMustMatchAliases", resourceCulture); } } - + /// /// Looks up a localized string similar to Duplicate frameworks found: '{0}'.. /// @@ -2283,7 +2292,7 @@ internal static string SpecValidationDuplicateFrameworks { return ResourceManager.GetString("SpecValidationDuplicateFrameworks", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid target framework '{0}'.. /// @@ -2292,7 +2301,7 @@ internal static string SpecValidationInvalidFramework { return ResourceManager.GetString("SpecValidationInvalidFramework", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing dependency on '{0}'.. /// @@ -2301,7 +2310,7 @@ internal static string SpecValidationMissingDependency { return ResourceManager.GetString("SpecValidationMissingDependency", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing project '{0}'.. /// @@ -2310,7 +2319,7 @@ internal static string SpecValidationMissingProject { return ResourceManager.GetString("SpecValidationMissingProject", resourceCulture); } } - + /// /// Looks up a localized string similar to No target frameworks specified.. /// @@ -2319,7 +2328,7 @@ internal static string SpecValidationNoFrameworks { return ResourceManager.GetString("SpecValidationNoFrameworks", resourceCulture); } } - + /// /// Looks up a localized string similar to UAP projects must contain exactly one target framework.. /// @@ -2328,7 +2337,7 @@ internal static string SpecValidationUAPSingleFramework { return ResourceManager.GetString("SpecValidationUAPSingleFramework", resourceCulture); } } - + /// /// Looks up a localized string similar to Restore request does not contain any projects to restore.. /// @@ -2337,7 +2346,7 @@ internal static string SpecValidationZeroRestoreRequests { return ResourceManager.GetString("SpecValidationZeroRestoreRequests", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully updated the trusted signer '{0}'.. /// @@ -2346,7 +2355,7 @@ internal static string SuccessfullUpdatedTrustedSigner { return ResourceManager.GetString("SuccessfullUpdatedTrustedSigner", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully added a trusted author '{0}'.. /// @@ -2355,7 +2364,7 @@ internal static string SuccessfullyAddedTrustedAuthor { return ResourceManager.GetString("SuccessfullyAddedTrustedAuthor", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully added a trusted repository '{0}'.. /// @@ -2364,7 +2373,7 @@ internal static string SuccessfullyAddedTrustedRepository { return ResourceManager.GetString("SuccessfullyAddedTrustedRepository", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully removed the trusted signer '{0}'.. /// @@ -2373,7 +2382,7 @@ internal static string SuccessfullyRemovedTrustedSigner { return ResourceManager.GetString("SuccessfullyRemovedTrustedSigner", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully synchronized the trusted repository '{0}'.. /// @@ -2382,7 +2391,7 @@ internal static string SuccessfullySynchronizedTrustedRepository { return ResourceManager.GetString("SuccessfullySynchronizedTrustedRepository", resourceCulture); } } - + /// /// Looks up a localized string similar to Certificate fingerprint(s):. /// @@ -2391,7 +2400,7 @@ internal static string TrustedSignerLogCertificates { return ResourceManager.GetString("TrustedSignerLogCertificates", resourceCulture); } } - + /// /// Looks up a localized string similar to [U] {0} - {1}. /// @@ -2400,7 +2409,7 @@ internal static string TrustedSignerLogCertificateSummaryAllowUntrustedRoot { return ResourceManager.GetString("TrustedSignerLogCertificateSummaryAllowUntrustedRoot", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} - {1}. /// @@ -2409,7 +2418,7 @@ internal static string TrustedSignerLogCertificateSummaryUnallowUntrustedRoot { return ResourceManager.GetString("TrustedSignerLogCertificateSummaryUnallowUntrustedRoot", resourceCulture); } } - + /// /// Looks up a localized string similar to Trusted owners: {0}. /// @@ -2418,7 +2427,7 @@ internal static string TrustedSignerLogOwners { return ResourceManager.GetString("TrustedSignerLogOwners", resourceCulture); } } - + /// /// Looks up a localized string similar to Service Index: {0}. /// @@ -2427,7 +2436,7 @@ internal static string TrustedSignerLogServiceIndex { return ResourceManager.GetString("TrustedSignerLogServiceIndex", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} [{1}]. /// @@ -2436,7 +2445,7 @@ internal static string TrustedSignerLogTitle { return ResourceManager.GetString("TrustedSignerLogTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to extract metadata from '{0}'.. /// @@ -2445,7 +2454,7 @@ internal static string UnableToExtractAssemblyMetadata { return ResourceManager.GetString("UnableToExtractAssemblyMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find '{0}'. Make sure the project has been built.. /// @@ -2454,7 +2463,7 @@ internal static string UnableToFindBuildOutput { return ResourceManager.GetString("UnableToFindBuildOutput", resourceCulture); } } - + /// /// Looks up a localized string similar to The hash algorithm is unsupported: '{0}'.. /// @@ -2463,7 +2472,7 @@ internal static string UnsupportedHashAlgorithm { return ResourceManager.GetString("UnsupportedHashAlgorithm", resourceCulture); } } - + /// /// Looks up a localized string similar to Skipping restore for project '{0}'. The project file may be invalid or missing targets required for restore.. /// @@ -2472,7 +2481,7 @@ internal static string UnsupportedProject { return ResourceManager.GetString("UnsupportedProject", resourceCulture); } } - + /// /// Looks up a localized string similar to Using '{0}' for metadata.. /// @@ -2481,7 +2490,7 @@ internal static string UsingNuspecForMetadata { return ResourceManager.GetString("UsingNuspecForMetadata", resourceCulture); } } - + /// /// Looks up a localized string similar to Found packages.config. Using packages listed as dependencies. /// @@ -2490,7 +2499,7 @@ internal static string UsingPackagesConfigForDependencies { return ResourceManager.GetString("UsingPackagesConfigForDependencies", resourceCulture); } } - + /// /// Looks up a localized string similar to Package signature validation failed.. /// @@ -2499,7 +2508,7 @@ internal static string VerifyCommand_Failed { return ResourceManager.GetString("VerifyCommand_Failed", resourceCulture); } } - + /// /// Looks up a localized string similar to Finished with {0} errors and {1} warnings.. /// @@ -2508,7 +2517,7 @@ internal static string VerifyCommand_FinishedWithErrors { return ResourceManager.GetString("VerifyCommand_FinishedWithErrors", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is not a valid package file.. /// @@ -2517,7 +2526,7 @@ internal static string VerifyCommand_PackageIsNotValid { return ResourceManager.GetString("VerifyCommand_PackageIsNotValid", resourceCulture); } } - + /// /// Looks up a localized string similar to Successfully verified package '{0}'.. /// @@ -2526,7 +2535,7 @@ internal static string VerifyCommand_Success { return ResourceManager.GetString("VerifyCommand_Success", resourceCulture); } } - + /// /// Looks up a localized string similar to Verification type not supported. Use only one of the following supported types: -All, -Signatures. /// @@ -2535,7 +2544,7 @@ internal static string VerifyCommand_VerificationTypeNotSupported { return ResourceManager.GetString("VerifyCommand_VerificationTypeNotSupported", resourceCulture); } } - + /// /// Looks up a localized string similar to Verifying {0}. /// @@ -2544,7 +2553,7 @@ internal static string VerifyCommand_VerifyingPackage { return ResourceManager.GetString("VerifyCommand_VerifyingPackage", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' key already exists in Properties collection. Overriding value.. /// @@ -2553,7 +2562,7 @@ internal static string Warning_DuplicatePropertyKey { return ResourceManager.GetString("Warning_DuplicatePropertyKey", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' was included in the project but doesn't exist. Skipping.... /// @@ -2562,7 +2571,7 @@ internal static string Warning_FileDoesNotExist { return ResourceManager.GetString("Warning_FileDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to File '{0}' was not added to the package. Files and folders starting with '.' or ending with '.nupkg' are excluded by default. To include this file, use -NoDefaultExcludes from the commandline. /// @@ -2571,7 +2580,7 @@ internal static string Warning_FileExcludedByDefault { return ResourceManager.GetString("Warning_FileExcludedByDefault", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} depends on {1} but {2} was not found. An approximate best match of {3} was resolved.. /// @@ -2580,7 +2589,7 @@ internal static string Warning_MinVersionDoesNotExist { return ResourceManager.GetString("Warning_MinVersionDoesNotExist", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} does not provide an inclusive lower bound for dependency {1}. An approximate best match of {2} was resolved.. /// @@ -2589,7 +2598,7 @@ internal static string Warning_MinVersionNonInclusive { return ResourceManager.GetString("Warning_MinVersionNonInclusive", resourceCulture); } } - + /// /// Looks up a localized string similar to Packages containing MSBuild targets and props files cannot be fully installed in projects targeting multiple frameworks. The MSBuild targets and props files have been ignored.. /// @@ -2598,7 +2607,7 @@ internal static string Warning_MultiTarget { return ResourceManager.GetString("Warning_MultiTarget", resourceCulture); } } - + /// /// Looks up a localized string similar to Description: {0}. /// @@ -2607,7 +2616,7 @@ internal static string Warning_PackageCommandIssueDescription { return ResourceManager.GetString("Warning_PackageCommandIssueDescription", resourceCulture); } } - + /// /// Looks up a localized string similar to Solution: {0}. /// @@ -2616,7 +2625,7 @@ internal static string Warning_PackageCommandIssueSolution { return ResourceManager.GetString("Warning_PackageCommandIssueSolution", resourceCulture); } } - + /// /// Looks up a localized string similar to Issue: {0}. /// @@ -2625,7 +2634,7 @@ internal static string Warning_PackageCommandIssueTitle { return ResourceManager.GetString("Warning_PackageCommandIssueTitle", resourceCulture); } } - + /// /// Looks up a localized string similar to Issue found with package '{0}'.. /// @@ -2634,7 +2643,7 @@ internal static string Warning_PackageCommandPackageIssueSummary { return ResourceManager.GetString("Warning_PackageCommandPackageIssueSummary", resourceCulture); } } - + /// /// Looks up a localized string similar to Project dependency {0} does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.. /// @@ -2643,7 +2652,7 @@ internal static string Warning_ProjectDependencyMissingLowerBound { return ResourceManager.GetString("Warning_ProjectDependencyMissingLowerBound", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' was included in the project but the path could not be resolved. Skipping.... /// @@ -2652,7 +2661,7 @@ internal static string Warning_UnresolvedFilePath { return ResourceManager.GetString("Warning_UnresolvedFilePath", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} was not specified. Using '{1}'.. /// @@ -2661,7 +2670,7 @@ internal static string Warning_UnspecifiedField { return ResourceManager.GetString("Warning_UnspecifiedField", resourceCulture); } } - + /// /// Looks up a localized string similar to Detected package version outside of dependency constraint: {0} requires {1} but version {2} was resolved.. /// diff --git a/src/NuGet.Core/NuGet.Commands/Strings.resx b/src/NuGet.Core/NuGet.Commands/Strings.resx index 6fe849ff6aa..012e0b770c1 100644 --- a/src/NuGet.Core/NuGet.Commands/Strings.resx +++ b/src/NuGet.Core/NuGet.Commands/Strings.resx @@ -1,17 +1,17 @@ - @@ -1114,4 +1114,8 @@ For more information, visit https://docs.nuget.org/docs/reference/command-line-r {0} contains more than one path + + '{0}' needs to contain a platform version. + {0} should be the NuGetFramework + \ No newline at end of file diff --git a/src/NuGet.Core/NuGet.Common/Errors/NuGetLogCode.cs b/src/NuGet.Core/NuGet.Common/Errors/NuGetLogCode.cs index 5945bf8675d..1a0ef8e916e 100644 --- a/src/NuGet.Core/NuGet.Common/Errors/NuGetLogCode.cs +++ b/src/NuGet.Core/NuGet.Common/Errors/NuGetLogCode.cs @@ -102,6 +102,11 @@ public enum NuGetLogCode /// NU1011 = 1011, + /// + /// Target Framework has a platform component, but the platform version could not be inferred. + /// + NU1012 = 1012, + /// /// Unable to resolve package, generic message for unknown type constraints. /// @@ -857,5 +862,15 @@ public enum NuGetLogCode /// Undefined package warning /// NU5500 = 5500, + + /// + /// InvalidUndottedFrameworkWarning + /// + NU5501 = 5501, + + /// + /// MissingRequiredDot + /// + NU5502 = 5502, } } diff --git a/src/NuGet.Core/NuGet.Common/PublicAPI/net45/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Common/PublicAPI/net45/PublicAPI.Unshipped.txt index 980fe9f40fc..149735087b8 100644 --- a/src/NuGet.Core/NuGet.Common/PublicAPI/net45/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Common/PublicAPI/net45/PublicAPI.Unshipped.txt @@ -1,2 +1,5 @@ NuGet.Common.NuGetLogCode.NU1010 = 1010 -> NuGet.Common.NuGetLogCode NuGet.Common.NuGetLogCode.NU1011 = 1011 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU1012 = 1012 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU5501 = 5501 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU5502 = 5502 -> NuGet.Common.NuGetLogCode diff --git a/src/NuGet.Core/NuGet.Common/PublicAPI/net472/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Common/PublicAPI/net472/PublicAPI.Unshipped.txt index a70b68898e4..149735087b8 100644 --- a/src/NuGet.Core/NuGet.Common/PublicAPI/net472/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Common/PublicAPI/net472/PublicAPI.Unshipped.txt @@ -1,3 +1,5 @@ NuGet.Common.NuGetLogCode.NU1010 = 1010 -> NuGet.Common.NuGetLogCode NuGet.Common.NuGetLogCode.NU1011 = 1011 -> NuGet.Common.NuGetLogCode - +NuGet.Common.NuGetLogCode.NU1012 = 1012 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU5501 = 5501 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU5502 = 5502 -> NuGet.Common.NuGetLogCode diff --git a/src/NuGet.Core/NuGet.Common/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Common/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index a70b68898e4..149735087b8 100644 --- a/src/NuGet.Core/NuGet.Common/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Common/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -1,3 +1,5 @@ NuGet.Common.NuGetLogCode.NU1010 = 1010 -> NuGet.Common.NuGetLogCode NuGet.Common.NuGetLogCode.NU1011 = 1011 -> NuGet.Common.NuGetLogCode - +NuGet.Common.NuGetLogCode.NU1012 = 1012 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU5501 = 5501 -> NuGet.Common.NuGetLogCode +NuGet.Common.NuGetLogCode.NU5502 = 5502 -> NuGet.Common.NuGetLogCode diff --git a/src/NuGet.Core/NuGet.Packaging/Core/FrameworkNameValidatorUtility.cs b/src/NuGet.Core/NuGet.Packaging/Core/FrameworkNameValidatorUtility.cs index a177563d9fd..2d0f5f4aa30 100644 --- a/src/NuGet.Core/NuGet.Packaging/Core/FrameworkNameValidatorUtility.cs +++ b/src/NuGet.Core/NuGet.Packaging/Core/FrameworkNameValidatorUtility.cs @@ -5,7 +5,11 @@ using System.Runtime.Versioning; using System.Text; using System.Threading.Tasks; +using NuGet.Client; +using NuGet.ContentModel; using NuGet.Frameworks; +using NuGet.Packaging.Core; +using NuGet.RuntimeModel; namespace NuGet.Packaging.Rules { @@ -34,6 +38,60 @@ internal static bool IsValidFrameworkName(string path) return fx != null && fx.Framework != NuGetFramework.UnsupportedFramework.Framework; } + internal static bool IsDottedFrameworkVersion(string path) + { + foreach (string knownFolder in PackagingConstants.Folders.SupportFrameworks) + { + string folderPrefix = knownFolder + System.IO.Path.DirectorySeparatorChar; + if (path.Length > folderPrefix.Length && + path.StartsWith(folderPrefix, StringComparison.OrdinalIgnoreCase)) + { + var managedCodeConventions = new ManagedCodeConventions(new RuntimeGraph()); + var collection = new ContentItemCollection(); + collection.Load(new string[] { path }); + + var targetedItems = ContentExtractor.GetContentForPattern(collection, managedCodeConventions.Patterns.AnyTargettedFile); + + var targetedFrameworks = ContentExtractor.GetGroupFrameworks(targetedItems).ToArray(); + + if (targetedFrameworks.Length > 0) + { + NuGetFramework framework = targetedFrameworks[0]; + try + { + if (framework == null) + { + return true; + } + + string targetFrameworkString = Path.GetDirectoryName(path).Split(Path.DirectorySeparatorChar).ElementAt(1); + + var isNet5EraTfm = framework.Version.Major >= 5 && StringComparer.OrdinalIgnoreCase.Equals(FrameworkConstants.FrameworkIdentifiers.NetCoreApp, framework.Framework); + + if (isNet5EraTfm) + { + var dotIndex = targetFrameworkString.IndexOf('.'); + var dashIndex = targetFrameworkString.IndexOf('-'); + var frameworkVersionHasDots = (dashIndex > -1 && dotIndex > -1 && dotIndex < dashIndex) || (dashIndex == -1 && dotIndex > -1); + return frameworkVersionHasDots; + } + else + { + return true; + } + } + catch (ArgumentException) + { + // if the parsing fails, we treat it as if this file + // doesn't have target framework. + return false; + } + } + } + } + return false; + } + internal static bool IsValidCultureName(PackageArchiveReader builder, string name) { // starting from NuGet 1.8, we support localized packages, which diff --git a/src/NuGet.Core/NuGet.Packaging/GlobalSuppressions.cs b/src/NuGet.Core/NuGet.Packaging/GlobalSuppressions.cs index 75988843f1f..76a414aa51e 100644 --- a/src/NuGet.Core/NuGet.Packaging/GlobalSuppressions.cs +++ b/src/NuGet.Core/NuGet.Packaging/GlobalSuppressions.cs @@ -309,3 +309,5 @@ [assembly: SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "API already shipped", Scope = "member", Target = "~M:NuGet.Packaging.PackageExtractor.InstallFromSourceAsync(System.String,NuGet.Packaging.Core.PackageIdentity,System.Func{System.IO.Stream,System.Threading.Tasks.Task},NuGet.Packaging.VersionFolderPathResolver,NuGet.Packaging.PackageExtractionContext,System.Threading.CancellationToken,System.Guid)~System.Threading.Tasks.Task{System.Boolean}")] [assembly: SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "API already shipped", Scope = "member", Target = "~M:NuGet.Packaging.PackageExtractor.InstallFromSourceAsync(NuGet.Packaging.Core.PackageIdentity,NuGet.Packaging.IPackageDownloader,NuGet.Packaging.VersionFolderPathResolver,NuGet.Packaging.PackageExtractionContext,System.Threading.CancellationToken,System.Guid)~System.Threading.Tasks.Task{System.Boolean}")] [assembly: SuppressMessage("ApiDesign", "RS0027:Public API with optional parameter(s) should have the most parameters amongst its public overloads.", Justification = "API already shipped", Scope = "member", Target = "~M:NuGet.Packaging.PackageArchiveReader.#ctor(System.String,NuGet.Frameworks.IFrameworkNameProvider,NuGet.Frameworks.IFrameworkCompatibilityProvider)")] +[assembly: SuppressMessage("Globalization", "CA1307:Specify StringComparison", Justification = "", Scope = "member", Target = "~M:NuGet.Packaging.Rules.FrameworkNameValidatorUtility.IsDottedFrameworkVersion(System.String)~System.Boolean")] +[assembly: SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "AliasFolderNameMapping has to be added after construction, so this can't be read-only.", Scope = "member", Target = "~P:NuGet.Packaging.PackageBuilder.AliasFolderNameMapping")] diff --git a/src/NuGet.Core/NuGet.Packaging/PackageCreation/Authoring/PackageBuilder.cs b/src/NuGet.Core/NuGet.Packaging/PackageCreation/Authoring/PackageBuilder.cs index 37d151cb480..99acb309f0e 100644 --- a/src/NuGet.Core/NuGet.Packaging/PackageCreation/Authoring/PackageBuilder.cs +++ b/src/NuGet.Core/NuGet.Packaging/PackageCreation/Authoring/PackageBuilder.cs @@ -35,6 +35,9 @@ public class PackageBuilder : IPackageMetadata /// public const int MaxIconFileSize = 1024 * 1024; + [Obsolete("This API is not meant to be used outside of NuGet itself.")] + public IDictionary AliasFolderNameMapping { get; set; } + public PackageBuilder(string path, Func propertyProvider, bool includeEmptyDirectories) : this(path, propertyProvider, includeEmptyDirectories, deterministic: false) { @@ -226,7 +229,7 @@ public ISet Tags } /// - /// Exposes the additional properties extracted by the metadata + /// Exposes the additional properties extracted by the metadata /// extractor or received from the command line. /// public Dictionary Properties @@ -823,7 +826,7 @@ public void AddFiles(string basePath, string source, string destination, string Files.AddRange(searchFiles); } - internal static IEnumerable ResolveSearchPattern(string basePath, string searchPath, string targetPath, bool includeEmptyDirectories) + internal IEnumerable ResolveSearchPattern(string basePath, string searchPath, string targetPath, bool includeEmptyDirectories) { string normalizedBasePath; IEnumerable searchResults = PathResolver.PerformWildcardSearch(basePath, searchPath, includeEmptyDirectories, out normalizedBasePath); @@ -847,7 +850,7 @@ internal static IEnumerable ResolveSearchPattern(string bas /// For recursive wildcard paths, we preserve the path portion beginning with the wildcard. /// For non-recursive wildcard paths, we use the file name from the actual file path on disk. /// - internal static string ResolvePackagePath(string searchDirectory, string searchPattern, string fullPath, string targetPath) + internal string ResolvePackagePath(string searchDirectory, string searchPattern, string fullPath, string targetPath) { string packagePath; bool isDirectorySearch = PathResolver.IsDirectoryPath(searchPattern); @@ -865,13 +868,78 @@ internal static string ResolvePackagePath(string searchDirectory, string searchP { // If the search does not contain wild cards, and the target path shares the same extension, copy it // e.g. --> Content\css\ie.css - return targetPath; + packagePath = targetPath; + targetPath = null; } else { packagePath = Path.GetFileName(fullPath); } - return Path.Combine(targetPath ?? String.Empty, packagePath); + + string path = Path.Combine(targetPath ?? string.Empty, packagePath); + + // Translate the tfm alias to its actual framework if necessary. + foreach (string knownFolder in PackagingConstants.Folders.Known) + { + string folderPrefix = knownFolder + Path.DirectorySeparatorChar; + if (path.Length > folderPrefix.Length && + path.StartsWith(folderPrefix, StringComparison.OrdinalIgnoreCase)) + { + string frameworkPart = null; + if (knownFolder == PackagingConstants.Folders.ContentFiles && path.Count(sep => sep == Path.DirectorySeparatorChar) > 2) + { + // ContentFiles might have an extra level of nesting for the + // language, so we have to skip over _that_ in order + // to get to the framework itself. + var languageEndIndex = path.IndexOf(System.IO.Path.DirectorySeparatorChar, folderPrefix.Length + 1); + frameworkPart = path.Substring(folderPrefix.Length + (languageEndIndex - folderPrefix.Length)); + } + else + { + frameworkPart = path.Substring(folderPrefix.Length); + } + + string aliasString = Path.GetDirectoryName(frameworkPart).Split(Path.DirectorySeparatorChar).First(); + + if (string.IsNullOrEmpty(aliasString)) + { + break; + } + + string frameworkString = null; + + NuGetFramework framework = null; + +#pragma warning disable CS0618 // This API is only ever meant to be used temporarily inside NuGet itself, not outside of our SDK + if (AliasFolderNameMapping != null && AliasFolderNameMapping.TryGetValue(aliasString, out frameworkString)) +#pragma warning restore CS0618 + { + path = folderPrefix + frameworkString + Path.DirectorySeparatorChar + path.Substring(folderPrefix.Length + aliasString.Length + 1); + framework = NuGetFramework.Parse(frameworkString); + } + else + { + try + { + framework = NuGetFramework.Parse(aliasString); + } + catch + { + } + } + + + if (framework != null && framework.HasPlatform && framework.PlatformVersion == FrameworkConstants.EmptyVersion) + { + throw new PackagingException(NuGetLogCode.NU1012, string.Format(CultureInfo.CurrentCulture, NuGetResources.InvalidPlatformVersion, aliasString)); + } + + + break; + } + } + + return path; } /// diff --git a/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.Designer.cs b/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.Designer.cs index e3a91e2c913..c70209628bb 100644 --- a/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.Designer.cs +++ b/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.Designer.cs @@ -150,6 +150,15 @@ internal static string InvalidPackageId { } } + /// + /// Looks up a localized string similar to Target Framework '{0}' has a platform component, but the platform could not be inferred. This is likely a problem with NuGet itself.. + /// + internal static string InvalidPlatformVersion { + get { + return ResourceManager.GetString("InvalidPlatformVersion", resourceCulture); + } + } + /// /// Looks up a localized string similar to <dependencies> element must not contain both <group> and <dependency> child elements.. /// diff --git a/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.resx b/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.resx index d7809fd4e98..6960db1f1f0 100644 --- a/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.resx +++ b/src/NuGet.Core/NuGet.Packaging/PackageCreation/Resources/NuGetResources.resx @@ -212,4 +212,8 @@ The element 'icon' cannot be empty. Please, don't localize icon + + Target Framework '{0}' has a platform component, but the platform could not be inferred. This is likely a problem with NuGet itself. + 0 - the target platform + \ No newline at end of file diff --git a/src/NuGet.Core/NuGet.Packaging/PackagingConstants.cs b/src/NuGet.Core/NuGet.Packaging/PackagingConstants.cs index 3a4cb7c2ffd..3b11e3294d0 100644 --- a/src/NuGet.Core/NuGet.Packaging/PackagingConstants.cs +++ b/src/NuGet.Core/NuGet.Packaging/PackagingConstants.cs @@ -1,6 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Collections.Generic; + namespace NuGet.Packaging { public static class PackagingConstants @@ -44,6 +46,17 @@ public static class Folders Analyzers, Source }; + + internal static IReadOnlyList SupportFrameworks { get; } = new string[] { + Build, + BuildCrossTargeting, + BuildTransitive, + Tools, + ContentFiles, + Lib, + Runtimes, + Ref, + }; } /// diff --git a/src/NuGet.Core/NuGet.Packaging/PublicAPI/net472/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Packaging/PublicAPI/net472/PublicAPI.Unshipped.txt index e69de29bb2d..f6bdf53a320 100644 --- a/src/NuGet.Core/NuGet.Packaging/PublicAPI/net472/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Packaging/PublicAPI/net472/PublicAPI.Unshipped.txt @@ -0,0 +1,3 @@ +NuGet.Packaging.PackageBuilder.AliasFolderNameMapping.get -> System.Collections.Generic.IDictionary +NuGet.Packaging.PackageBuilder.AliasFolderNameMapping.set -> void +static NuGet.Packaging.Rules.AnalysisResources.InvalidUndottedFrameworkWarning.get -> string diff --git a/src/NuGet.Core/NuGet.Packaging/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Packaging/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt index e69de29bb2d..f6bdf53a320 100644 --- a/src/NuGet.Core/NuGet.Packaging/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Packaging/PublicAPI/netcoreapp5.0/PublicAPI.Unshipped.txt @@ -0,0 +1,3 @@ +NuGet.Packaging.PackageBuilder.AliasFolderNameMapping.get -> System.Collections.Generic.IDictionary +NuGet.Packaging.PackageBuilder.AliasFolderNameMapping.set -> void +static NuGet.Packaging.Rules.AnalysisResources.InvalidUndottedFrameworkWarning.get -> string diff --git a/src/NuGet.Core/NuGet.Packaging/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/NuGet.Core/NuGet.Packaging/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index e69de29bb2d..f6bdf53a320 100644 --- a/src/NuGet.Core/NuGet.Packaging/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/NuGet.Core/NuGet.Packaging/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -0,0 +1,3 @@ +NuGet.Packaging.PackageBuilder.AliasFolderNameMapping.get -> System.Collections.Generic.IDictionary +NuGet.Packaging.PackageBuilder.AliasFolderNameMapping.set -> void +static NuGet.Packaging.Rules.AnalysisResources.InvalidUndottedFrameworkWarning.get -> string diff --git a/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.Designer.cs b/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.Designer.cs index afd1d72aeb5..33e606dae23 100644 --- a/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.Designer.cs +++ b/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.Designer.cs @@ -195,6 +195,15 @@ public static string InvalidPrereleaseDependencyWarning { } } + /// + /// Looks up a localized string similar to The folder '{0}' under 'lib' should include dots in its version number(s). This is required as of .NET 5.0. Please rename it to include the dots as needed ('net50' to 'net5.0').. + /// + public static string InvalidUndottedFrameworkWarning { + get { + return ResourceManager.GetString("InvalidUndottedFrameworkWarning", resourceCulture); + } + } + /// /// Looks up a localized string similar to The package version '{0}' uses SemVer 2.0.0 or components of SemVer 1.0.0 that are not supported on legacy clients. Change the package version to a SemVer 1.0.0 string. If the version contains a release label it must start with a letter. This message can be ignored if the package is not intended for older clients.. /// diff --git a/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.resx b/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.resx index 195687798dc..a05d945cbed 100644 --- a/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.resx +++ b/src/NuGet.Core/NuGet.Packaging/Rules/AnalysisResources.resx @@ -169,6 +169,9 @@ A stable release of a package should not have a prerelease dependency. Either modify the version spec of dependency "{0}" or update the version field in the nuspec. + + The folder '{0}' under 'lib' should include dots in its version number(s). This is required as of .NET 5.0. Please rename it to include the dots as needed ('net50' to 'net5.0'). + The package version '{0}' uses SemVer 2.0.0 or components of SemVer 1.0.0 that are not supported on legacy clients. Change the package version to a SemVer 1.0.0 string. If the version contains a release label it must start with a letter. This message can be ignored if the package is not intended for older clients. diff --git a/src/NuGet.Core/NuGet.Packaging/Rules/InvalidUndottedFrameworkRule.cs b/src/NuGet.Core/NuGet.Packaging/Rules/InvalidUndottedFrameworkRule.cs new file mode 100644 index 00000000000..2d2b36459ba --- /dev/null +++ b/src/NuGet.Core/NuGet.Packaging/Rules/InvalidUndottedFrameworkRule.cs @@ -0,0 +1,49 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using NuGet.Common; + +namespace NuGet.Packaging.Rules +{ + internal class InvalidUndottedFrameworkRule : IPackageRule + { + public string MessageFormat { get; } + + public InvalidUndottedFrameworkRule(string messageFormat) + { + MessageFormat = messageFormat; + } + + public IEnumerable Validate(PackageArchiveReader builder) + { + var set = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (string knownFolder in PackagingConstants.Folders.SupportFrameworks) + { + foreach (var file in builder.GetFiles().Select(t => PathUtility.GetPathWithDirectorySeparator(t))) + { + var parts = file.Split(Path.DirectorySeparatorChar); + if (parts.Length >= 3 && parts[0].Equals(knownFolder, StringComparison.OrdinalIgnoreCase)) + { + set.Add(file); + } + } + } + + return set.Where(s => !FrameworkNameValidatorUtility.IsDottedFrameworkVersion(s)) + .Select(CreatePackageIssue); + } + + private PackagingLogMessage CreatePackageIssue(string target) + { + return PackagingLogMessage.CreateWarning( + string.Format(CultureInfo.CurrentCulture, MessageFormat, target), + NuGetLogCode.NU5501); + } + } +} + diff --git a/src/NuGet.Core/NuGet.Packaging/Rules/RuleSet.cs b/src/NuGet.Core/NuGet.Packaging/Rules/RuleSet.cs index 6edff2007b1..60cf532a0c6 100644 --- a/src/NuGet.Core/NuGet.Packaging/Rules/RuleSet.cs +++ b/src/NuGet.Core/NuGet.Packaging/Rules/RuleSet.cs @@ -11,6 +11,7 @@ public static class RuleSet private static readonly ReadOnlyCollection _packageCreationRules = new ReadOnlyCollection( new IPackageRule[] { new InvalidFrameworkFolderRule(AnalysisResources.InvalidFrameworkWarning), + new InvalidUndottedFrameworkRule(AnalysisResources.InvalidUndottedFrameworkWarning), new MisplacedAssemblyUnderLibRule(AnalysisResources.AssemblyDirectlyUnderLibWarning), new MisplacedAssemblyOutsideLibRule(AnalysisResources.AssemblyOutsideLibWarning), new MisplacedScriptFileRule(AnalysisResources.ScriptOutsideToolsWarning), diff --git a/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs b/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs index 9b1e57c70ae..15ec779a484 100644 --- a/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs +++ b/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs @@ -10,6 +10,7 @@ using FluentAssertions; using Newtonsoft.Json.Linq; using NuGet.Commands.Test; +using NuGet.Common; using NuGet.Configuration; using NuGet.Frameworks; using NuGet.LibraryModel; @@ -2989,6 +2990,71 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( } } + [Fact] + public async Task RestoreCommand_WhenPlatformVersionIsEmpty_ThrowsError() + { + using (var pathContext = new SimpleTestPathContext()) + using (var context = new SourceCacheContext()) + { + var configJson = JObject.Parse(@" + { + ""frameworks"": { + ""net5.0-windows"": { + ""dependencies"": { + ""A"": { + ""version"" : ""1.0.0"", + } + } + } + } + }"); + + // Arrange + var packageA = new SimpleTestPackageContext("a", "1.0.0"); + packageA.Files.Clear(); + packageA.AddFile("lib/net5.0-windows/a.dll"); + + await SimpleTestPackageUtility.CreateFolderFeedV3Async( + pathContext.PackageSource, + PackageSaveMode.Defaultv3, + packageA); + + var sources = new List + { + new PackageSource(pathContext.PackageSource) + }; + var logger = new TestLogger(); + + var projectDirectory = Path.Combine(pathContext.SolutionRoot, "TestProject"); + var cachingSourceProvider = new CachingSourceProvider(new PackageSourceProvider(NullSettings.Instance)); + + var spec = JsonPackageSpecReader.GetPackageSpec(configJson.ToString(), "TestProject", Path.Combine(projectDirectory, "project.csproj")).WithTestRestoreMetadata(); + var dgSpec = new DependencyGraphSpec(); + dgSpec.AddProject(spec); + dgSpec.AddRestore(spec.Name); + + var request = new TestRestoreRequest(spec, sources, pathContext.UserPackagesFolder, logger) + { + ProjectStyle = ProjectStyle.PackageReference, + DependencyGraphSpec = dgSpec, + AllowNoOp = true, + }; + var command = new RestoreCommand(request); + + // Act + var result = await command.ExecuteAsync(); + await result.CommitAsync(logger, CancellationToken.None); + + // Assert + Assert.False(result.Success); + Assert.Equal(1, logger.ErrorMessages.Count); + logger.ErrorMessages.TryDequeue(out var errorMessage); + Assert.True(errorMessage.Contains("platform version")); + var messagesForNU1012 = result.LockFile.LogMessages.Where(m => m.Code == NuGetLogCode.NU1012); + Assert.Equal(1, messagesForNU1012.Count()); + } + } + private static byte[] GetTestUtilityResource(string name) { return ResourceTestUtility.GetResourceBytes( diff --git a/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/PackTaskLogicTests.cs b/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/PackTaskLogicTests.cs index 00f99a1fef8..02950d23150 100644 --- a/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/PackTaskLogicTests.cs +++ b/test/NuGet.Core.Tests/NuGet.Build.Tasks.Pack.Test/PackTaskLogicTests.cs @@ -9,6 +9,7 @@ using NuGet.Commands; using NuGet.Frameworks; using NuGet.Packaging; +using NuGet.Packaging.Core; using NuGet.Test.Utility; using Xunit; @@ -64,6 +65,400 @@ public void PackTaskLogic_ProducesBasicPackage() } } + [Fact] + public void PackTaskLogic_ProducesPackageUsingNuspec() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + // Arrange + string nuspec = @" + + + bar + 0.0.0 + bartitle + kat + true + MIT + desc + release notes + msft + foo bar + + + + + + + + + +"; + string nuspecPath = Path.Combine(testDir, ".nuspec"); + File.WriteAllText(nuspecPath, nuspec); + + var tc = new TestContext(testDir); + tc.Request.NuspecFile = nuspecPath; + tc.Request.NuspecBasePath = testDir; + + var net50DllDir = Path.Combine(testDir, "lib", "net5.0"); + var net50DllPath = Path.Combine(net50DllDir, "a.dll"); + + Directory.CreateDirectory(net50DllDir); + File.WriteAllBytes(net50DllPath, new byte[0]); + + var net50WinDllDir = Path.Combine(testDir, "lib", "net5.0-windows7.0"); + var net50WinDllPath = Path.Combine(net50WinDllDir, "a.dll"); + + Directory.CreateDirectory(net50WinDllDir); + File.WriteAllBytes(net50WinDllPath, new byte[0]); + + // Act + tc.BuildPackage(); + + // Assert + string nupkgPath = Path.Combine(testDir, "bar.0.0.0.nupkg"); + using (var nupkgReader = new PackageArchiveReader(nupkgPath)) + { + var nuspecReader = nupkgReader.NuspecReader; + + // Validate the .nuspec. + Assert.Equal("bar", nuspecReader.GetId()); + Assert.Equal("0.0.0", nuspecReader.GetVersion().ToFullString()); + Assert.Equal("kat", nuspecReader.GetAuthors()); + Assert.Equal("", nuspecReader.GetOwners()); + Assert.Equal("desc", nuspecReader.GetDescription()); + Assert.True(nuspecReader.GetRequireLicenseAcceptance()); + + // Validate the assets. + var libItems = nupkgReader.GetLibItems().ToList(); + Assert.Equal(2, libItems.Count); + Assert.Equal(FrameworkConstants.CommonFrameworks.Net50, libItems[0].TargetFramework); + Assert.Equal(new[] { "lib/net5.0/a.dll" }, libItems[0].Items); + Assert.Equal(NuGetFramework.Parse("net5.0-windows7.0"), libItems[1].TargetFramework); + Assert.Equal(new[] { "lib/net5.0-windows7.0/a.dll" }, libItems[1].Items); + + var dependencyGroups = nuspecReader.GetDependencyGroups().ToList(); + var dependencyGroup = dependencyGroups.First(); + var dependencyGroupFramework = dependencyGroup.TargetFramework.Framework; + var dependentPackages = dependencyGroup.Packages.ToList(); + var centralTransitiveDependentPackage = dependentPackages + .Where(p => p.Id.Equals("Newtonsoft.Json", StringComparison.OrdinalIgnoreCase)) + .FirstOrDefault(); + Assert.Equal(2, dependencyGroups.Count); + Assert.Equal(".NETCoreApp", dependencyGroupFramework); + } + } + } + + [Fact] + public void PackTaskLogic_InfersFrameworkPlatformVersionFromAlias() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + var tc = new TestContext(testDir, "net5.0-windows"); + + var assetsJson = @"{ + ""version"": 3, + ""targets"": { + ""net5.0"": {}, + ""net5.0-windows7.0"": {} + }, + ""libraries"": {}, + ""projectFileDependencyGroups"": { + ""net5.0"": [], + ""net5.0-windows7.0"": [] + }, + ""project"": { + ""version"": ""0.0.0"", + ""restore"": { + ""projectName"": ""bar"", + ""projectStyle"": ""PackageReference"", + ""crossTargeting"": true, + ""fallbackFolders"": [ + ""C:\\Microsoft\\Xamarin\\NuGet\\"" + ], + ""originalTargetFrameworks"": [ + ""net5.0"", + ""net5.0-windows"" + ], + ""sources"": { + ""https://api.nuget.org/v3/index.json"": {}, + }, + ""frameworks"": { + ""net5.0"": { + ""targetAlias"": ""net5.0"", + ""projectReferences"": {} + }, + ""net5.0-windows7.0"": { + ""targetAlias"": ""net5.0-windows"", + ""projectReferences"": {} + } + }, + ""warningProperties"": { + ""warnAsError"": [ + ""NU1605"" + ] + } + }, + ""frameworks"": { + ""net5.0"": { + ""targetAlias"": ""net5.0"", + ""imports"": [ + ""net461"", + ""net462"", + ""net47"", + ""net471"", + ""net472"", + ""net48"" + ], + ""assetTargetFallback"": true, + ""warn"": true, + ""frameworkReferences"": { + ""Microsoft.NETCore.App"": { + ""privateAssets"": ""all"" + } + }, + }, + ""net5.0-windows7.0"": { + ""targetAlias"": ""net5.0-windows"", + ""imports"": [ + ""net461"", + ""net462"", + ""net47"", + ""net471"", + ""net472"", + ""net48"" + ], + ""assetTargetFallback"": true, + ""warn"": true, + ""frameworkReferences"": { + ""Microsoft.NETCore.App"": { + ""privateAssets"": ""all"" + } + }, + } + } + } + }"; + File.WriteAllText(Path.Combine(testDir, "obj", "project.assets.json"), assetsJson); + + // Act + tc.BuildPackage(); + + // Assert + using (var nupkgReader = new PackageArchiveReader(tc.NupkgPath)) + { + var nuspecReader = nupkgReader.NuspecReader; + + // Validate the assets. + var libItems = nupkgReader.GetLibItems().ToList(); + Assert.Equal(1, libItems.Count); + Assert.Equal(NuGetFramework.Parse("net5.0-windows7.0"), libItems[0].TargetFramework); + Assert.Equal(new[] { "lib/net5.0-windows7.0/a.dll" }, libItems[0].Items); + } + } + } + + [Fact] + public void PackTaskLogic_WhenTPVIsMissing_Errors() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + var tc = new TestContext(testDir, "net5.0-windows"); + + // Act & Assert + Assert.Throws(() => tc.BuildPackage()); + } + } + + [Fact] + public void PackTaskLogic_WhenTPVIsMissing_Errors_UsingNuspec() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + string nuspec = @" + + + bar + 0.0.0 + bartitle + kat + true + MIT + desc + release notes + msft + foo bar + + + + + + +"; + string nuspecPath = Path.Combine(testDir, "bar.nuspec"); + File.WriteAllText(nuspecPath, nuspec); + + var tc = new TestContext(testDir); + tc.Request.NuspecFile = nuspecPath; + tc.Request.NuspecBasePath = testDir; + + var net50WinDllDir = Path.Combine(testDir, "lib", "net5.0-windows"); + var net50WinDllPath = Path.Combine(net50WinDllDir, "a.dll"); + + Directory.CreateDirectory(net50WinDllDir); + File.WriteAllBytes(net50WinDllPath, new byte[0]); + + // Act & Assert + Assert.Throws(() => tc.BuildPackage()); + } + } + + [Fact] + public void PackTaskLogic_WarnsMissingDot() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + var tc = new TestContext(testDir, "net50"); + + // Act + tc.BuildPackage(); + + // Assert + var logger = (TestLogger)tc.Request.Logger; + var messages = logger.WarningMessages.ToArray(); + Assert.True(messages[0].Contains("net50")); + Assert.True(messages[0].Contains("missing dot")); + } + } + + [Fact] + public void PackTaskLogic_WhenDotInPlatformOnly_WarnsMissingDot() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + var tc = new TestContext(testDir, "net50-windows7.0"); + + // Act + tc.BuildPackage(); + + // Assert + var logger = (TestLogger)tc.Request.Logger; + var messages = logger.WarningMessages.ToArray(); + Assert.True(messages[0].Contains("net50-windows7.0")); + Assert.True(messages[0].Contains("missing dot")); + } + } + + [Fact] + public void PackTaskLogic_WarnsMissingDot_UsingNuspec() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + // Arrange + string nuspec = @" + + + bar + 0.0.0 + bartitle + kat + true + MIT + desc + release notes + msft + foo bar + + + + + + +"; + string nuspecPath = Path.Combine(testDir, "bar.nuspec"); + File.WriteAllText(nuspecPath, nuspec); + + var tc = new TestContext(testDir); + tc.Request.NuspecFile = nuspecPath; + tc.Request.NuspecBasePath = testDir; + + var net50WinDllDir = Path.Combine(testDir, "lib", "net50"); + var net50WinDllPath = Path.Combine(net50WinDllDir, "a.dll"); + + Directory.CreateDirectory(net50WinDllDir); + File.WriteAllBytes(net50WinDllPath, new byte[0]); + + // Act + tc.BuildPackage(); + + // Assert + var logger = (TestLogger)tc.Request.Logger; + var messages = logger.WarningMessages.ToArray(); + Assert.True(messages[0].Contains("net50")); + Assert.True(messages[0].Contains("include dots")); + } + } + + [Fact] + public void PackTaskLogic_WhenDotInPlatformOnly_WarnsMissingDot_UsingNuspec() + { + // Arrange + using (var testDir = TestDirectory.Create()) + { + // Arrange + string nuspec = @" + + + bar + 0.0.0 + bartitle + kat + true + MIT + desc + release notes + msft + foo bar + + + + + + +"; + string nuspecPath = Path.Combine(testDir, "bar.nuspec"); + File.WriteAllText(nuspecPath, nuspec); + + var tc = new TestContext(testDir); + tc.Request.NuspecFile = nuspecPath; + tc.Request.NuspecBasePath = testDir; + + var net50WinDllDir = Path.Combine(testDir, "lib", "net50-windows7.0"); + var net50WinDllPath = Path.Combine(net50WinDllDir, "a.dll"); + + Directory.CreateDirectory(net50WinDllDir); + File.WriteAllBytes(net50WinDllPath, new byte[0]); + + // Act + tc.BuildPackage(); + + // Assert + var logger = (TestLogger)tc.Request.Logger; + var messages = logger.WarningMessages.ToArray(); + Assert.True(messages[0].Contains("net50-windows7.0")); + Assert.True(messages[0].Contains("include dots")); + } + } + [Fact] public void PackTaskLogic_SplitsTags() { @@ -625,11 +1020,16 @@ public void PackTaskLogic_EmbedInteropAssembly() private class TestContext { - public TestContext(TestDirectory testDir) + public TestContext(TestDirectory testdir) + : this(testdir, "net45") + { + } + + public TestContext(TestDirectory testDir, string tfm) { var fullPath = Path.Combine(testDir, "project.csproj"); var rootDir = Path.GetPathRoot(testDir); - var dllDir = Path.Combine(testDir, "bin", "Debug", "net45"); + var dllDir = Path.Combine(testDir, "bin", "Debug", tfm); var dllPath = Path.Combine(dllDir, "a.dll"); Directory.CreateDirectory(dllDir); @@ -664,11 +1064,11 @@ public TestContext(TestDirectory testDir) IncludeBuildOutput = true, RestoreOutputPath = Path.Combine(testDir, "obj"), ContinuePackingAfterGeneratingNuspec = true, - TargetFrameworks = new[] { "net45" }, + TargetFrameworks = new[] { tfm }, BuildOutputInPackage = new[] { new MSBuildItem(dllPath, new Dictionary { {"FinalOutputPath", dllPath }, - {"TargetFramework", "net45" } + {"TargetFramework", tfm } })}, Logger = new TestLogger(), SymbolPackageFormat = "symbols.nupkg",