|
7 | 7 | using Microsoft.DotNet.Cli.ToolPackage; |
8 | 8 | using Microsoft.DotNet.Cli.Utils; |
9 | 9 | using Microsoft.Extensions.EnvironmentAbstractions; |
| 10 | +using NuGet.DependencyResolver; |
10 | 11 | using NuGet.Frameworks; |
11 | 12 |
|
12 | 13 | namespace Microsoft.DotNet.Cli.CommandFactory.CommandResolution; |
@@ -82,22 +83,39 @@ private CommandSpec GetPackageCommandSpecUsingMuxer(CommandResolverArguments arg |
82 | 83 | NuGetFramework.Parse(BundledTargetFramework.GetTargetFrameworkMoniker()), |
83 | 84 | Constants.AnyRid, |
84 | 85 | toolCommandName), |
85 | | - out var restoredCommand)) |
| 86 | + out var toolCommand)) |
86 | 87 | { |
87 | | - if (!_fileSystem.File.Exists(restoredCommand.Executable.Value)) |
| 88 | + if (!_fileSystem.File.Exists(toolCommand.Executable.Value)) |
88 | 89 | { |
89 | 90 | throw new GracefulException(string.Format(CliStrings.NeedRunToolRestore, |
90 | 91 | toolCommandName.ToString())); |
91 | 92 | } |
92 | 93 |
|
93 | | - if (toolManifestPackage.RollForward || allowRollForward) |
| 94 | + if (toolCommand.Runner == "dotnet") |
94 | 95 | { |
95 | | - arguments.CommandArguments = ["--allow-roll-forward", .. arguments.CommandArguments]; |
| 96 | + if (toolManifestPackage.RollForward || allowRollForward) |
| 97 | + { |
| 98 | + arguments.CommandArguments = ["--allow-roll-forward", .. arguments.CommandArguments]; |
| 99 | + } |
| 100 | + |
| 101 | + return MuxerCommandSpecMaker.CreatePackageCommandSpecUsingMuxer( |
| 102 | + toolCommand.Executable.Value, |
| 103 | + arguments.CommandArguments); |
96 | 104 | } |
| 105 | + else if (toolCommand.Runner == "executable") |
| 106 | + { |
| 107 | + var escapedArgs = ArgumentEscaper.EscapeAndConcatenateArgArrayForProcessStart( |
| 108 | + arguments.CommandArguments); |
97 | 109 |
|
98 | | - return MuxerCommandSpecMaker.CreatePackageCommandSpecUsingMuxer( |
99 | | - restoredCommand.Executable.Value, |
100 | | - arguments.CommandArguments); |
| 110 | + return new CommandSpec( |
| 111 | + toolCommand.Executable.Value, |
| 112 | + escapedArgs); |
| 113 | + } |
| 114 | + else |
| 115 | + { |
| 116 | + throw new GracefulException(string.Format(CliStrings.ToolSettingsUnsupportedRunner, |
| 117 | + toolCommand.Name, toolCommand.Runner)); |
| 118 | + } |
101 | 119 | } |
102 | 120 | else |
103 | 121 | { |
|
0 commit comments