public void WhenRidNotSupportedOnWindowsItIsImplicit(string tfm) { var tempDir = _testAssetsManager.CreateTestDirectory(identifier: tfm).Path; var templateFinder = new ShellShimTemplateFinder(new MockNuGetPackageDownloader(), new DirectoryPath(tempDir), null); var path = templateFinder.ResolveAppHostSourceDirectoryAsync(null, NuGetFramework.Parse(tfm), Architecture.Arm64).Result; path.Should().Contain(tfm.Equals("net5.0") ? "AppHostTemplate" : "win-x64"); }
public override int Execute() { if (!string.IsNullOrEmpty(_configFilePath) && !File.Exists(_configFilePath)) { throw new GracefulException( string.Format( LocalizableStrings.NuGetConfigurationFileDoesNotExist, Path.GetFullPath(_configFilePath))); } VersionRange versionRange = _parseResult.GetVersionRange(); DirectoryPath?toolPath = null; if (!string.IsNullOrEmpty(_toolPath)) { toolPath = new DirectoryPath(_toolPath); } string appHostSourceDirectory = _shellShimTemplateFinder.ResolveAppHostSourceDirectoryAsync(_architectureOption, _framework).Result; (IToolPackageStore toolPackageStore, IToolPackageStoreQuery toolPackageStoreQuery, IToolPackageInstaller toolPackageInstaller) = _createToolPackageStoresAndInstaller(toolPath, _forwardRestoreArguments); IShellShimRepository shellShimRepository = _createShellShimRepository(appHostSourceDirectory, toolPath); // Prevent installation if any version of the package is installed if (toolPackageStoreQuery.EnumeratePackageVersions(_packageId).FirstOrDefault() != null) { _errorReporter.WriteLine(string.Format(LocalizableStrings.ToolAlreadyInstalled, _packageId).Red()); return(1); } FilePath?configFile = null; if (!string.IsNullOrEmpty(_configFilePath)) { configFile = new FilePath(_configFilePath); } try { IToolPackage package = null; using (var scope = new TransactionScope( TransactionScopeOption.Required, TimeSpan.Zero)) { package = toolPackageInstaller.InstallPackage( new PackageLocation(nugetConfig: configFile, additionalFeeds: _source), packageId: _packageId, versionRange: versionRange, targetFramework: _framework, verbosity: _verbosity); foreach (var command in package.Commands) { shellShimRepository.CreateShim(command.Executable, command.Name, package.PackagedShims); } scope.Complete(); } foreach (string w in package.Warnings) { _reporter.WriteLine(w.Yellow()); } if (_global) { _environmentPathInstruction.PrintAddPathInstructionIfPathDoesNotExist(); } _reporter.WriteLine( string.Format( LocalizableStrings.InstallationSucceeded, string.Join(", ", package.Commands.Select(c => c.Name)), package.Id, package.Version.ToNormalizedString()).Green()); return(0); } catch (Exception ex) when(InstallToolCommandLowLevelErrorConverter.ShouldConvertToUserFacingError(ex)) { throw new GracefulException( messages: InstallToolCommandLowLevelErrorConverter.GetUserFacingMessages(ex, _packageId), verboseMessages: new[] { ex.ToString() }, isUserError: false); } }