コード例 #1
0
        private CommandSpec GetPackageCommandSpecUsingMuxer(CommandResolverArguments arguments,
                                                            ToolCommandName toolCommandName)
        {
            if (!_toolManifest.TryFind(toolCommandName, out var toolManifestPackage))
            {
                return(null);
            }

            if (_localToolsResolverCache.TryLoad(
                    new RestoredCommandIdentifier(
                        toolManifestPackage.PackageId,
                        toolManifestPackage.Version,
                        NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()),
                        Constants.AnyRid,
                        toolCommandName),
                    _nugetGlobalPackagesFolder,
                    out var restoredCommand))
            {
                if (!_fileSystem.File.Exists(restoredCommand.Executable.Value))
                {
                    throw new GracefulException(string.Format(LocalizableStrings.NeedRunToolRestore,
                                                              toolCommandName.ToString()));
                }

                return(MuxerCommandSpecMaker.CreatePackageCommandSpecUsingMuxer(
                           restoredCommand.Executable.Value,
                           arguments.CommandArguments));
            }

            return(null);
        }
コード例 #2
0
        public CommandSpec Resolve(CommandResolverArguments arguments)
        {
            if (string.IsNullOrEmpty(arguments.CommandName))
            {
                return(null);
            }

            var packageId = new DirectoryInfo(Path.Combine(_dotnetToolPath, arguments.CommandName));

            if (!packageId.Exists)
            {
                return(null);
            }

            var version = packageId.GetDirectories()[0];
            var dll     = version.GetDirectories("tools")[0]
                          .GetDirectories()[0] // TFM
                          .GetDirectories()[0] // RID
                          .GetFiles($"{arguments.CommandName}.dll")[0];

            return(MuxerCommandSpecMaker.CreatePackageCommandSpecUsingMuxer(
                       dll.FullName,
                       arguments.CommandArguments));
        }