merge
This commit is contained in:
commit
58bf70a476
100 changed files with 845 additions and 376 deletions
|
@ -9,6 +9,7 @@ using Microsoft.DotNet.Cli;
|
|||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.DotNet.Tools.Cache
|
||||
{
|
||||
|
@ -31,9 +32,9 @@ namespace Microsoft.DotNet.Tools.Cache
|
|||
app.ArgumentSeparatorHelpText = HelpMessageStrings.MSBuildAdditionalArgsHelpText;
|
||||
app.HelpOption("-h|--help");
|
||||
|
||||
CommandOption projectArgument = app.Option(
|
||||
CommandOption projectArguments = app.Option(
|
||||
$"-e|--entries <{LocalizableStrings.ProjectEntries}>", LocalizableStrings.ProjectEntryDescription,
|
||||
CommandOptionType.SingleValue);
|
||||
CommandOptionType.MultipleValue);
|
||||
|
||||
CommandOption frameworkOption = app.Option(
|
||||
$"-f|--framework <{LocalizableStrings.FrameworkOption}>", LocalizableStrings.FrameworkOptionDescription,
|
||||
|
@ -70,13 +71,19 @@ namespace Microsoft.DotNet.Tools.Cache
|
|||
{
|
||||
msbuildArgs = new List<string>();
|
||||
|
||||
if (string.IsNullOrEmpty(projectArgument.Value()))
|
||||
if (!projectArguments.HasValue())
|
||||
{
|
||||
throw new InvalidOperationException(LocalizableStrings.SpecifyEntries);
|
||||
throw new InvalidOperationException(LocalizableStrings.SpecifyEntries).DisplayAsError();
|
||||
}
|
||||
|
||||
msbuildArgs.Add("/t:ComposeCache");
|
||||
msbuildArgs.Add(projectArgument.Value());
|
||||
msbuildArgs.Add(projectArguments.Values[0]);
|
||||
var additionalProjectsargs = projectArguments.Values.Skip(1);
|
||||
|
||||
if (additionalProjectsargs.Count() > 0)
|
||||
{
|
||||
msbuildArgs.Add($"/p:AdditionalProjects={string.Join("%3B", additionalProjectsargs)}");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(frameworkOption.Value()))
|
||||
{
|
||||
|
@ -106,12 +113,12 @@ namespace Microsoft.DotNet.Tools.Cache
|
|||
|
||||
if (skipOptimizationOption.HasValue())
|
||||
{
|
||||
msbuildArgs.Add($"/p:SkipOptimization={skipOptimizationOption.HasValue()}");
|
||||
msbuildArgs.Add($"/p:SkipOptimization=true");
|
||||
}
|
||||
|
||||
if (preserveWorkingDir.HasValue())
|
||||
{
|
||||
msbuildArgs.Add($"/p:PreserveComposeWorkingDir={preserveWorkingDir.HasValue()}");
|
||||
msbuildArgs.Add($"/p:PreserveComposeWorkingDir=true");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(verbosityOption.Value()))
|
||||
|
|
|
@ -131,6 +131,7 @@ namespace Microsoft.DotNet.Tools.Migrate
|
|||
}
|
||||
|
||||
var csprojFilesToAdd = new HashSet<string>();
|
||||
var xprojFilesToRemove = new HashSet<string>();
|
||||
|
||||
var slnPathWithTrailingSlash = PathUtility.EnsureTrailingSlash(slnFile.BaseDirectory);
|
||||
foreach (var report in migrationReport.ProjectMigrationReports)
|
||||
|
@ -140,35 +141,35 @@ namespace Microsoft.DotNet.Tools.Migrate
|
|||
slnPathWithTrailingSlash,
|
||||
reportPathWithTrailingSlash);
|
||||
|
||||
var xprojPath = Path.Combine(relativeReportPath, report.ProjectName + ".xproj");
|
||||
var xprojProjectsReferencedBySolution = slnFile.Projects.Where(p => p.FilePath == xprojPath);
|
||||
|
||||
var migratedProjectName = report.ProjectName + ".csproj";
|
||||
if (xprojProjectsReferencedBySolution.Count() == 1)
|
||||
{
|
||||
var slnProject = xprojProjectsReferencedBySolution.Single();
|
||||
slnProject.FilePath = Path.Combine(
|
||||
Path.GetDirectoryName(slnProject.FilePath),
|
||||
migratedProjectName);
|
||||
slnProject.TypeGuid = ProjectTypeGuids.CSharpProjectTypeGuid;
|
||||
}
|
||||
else
|
||||
{
|
||||
var csprojPath = Path.Combine(relativeReportPath, migratedProjectName);
|
||||
var solutionContainsCsprojPriorToMigration = slnFile.Projects
|
||||
.Where(p => p.FilePath == csprojPath)
|
||||
.Any();
|
||||
var csprojPath = Path.Combine(relativeReportPath, migratedProjectName);
|
||||
var solutionContainsCsprojPriorToMigration = slnFile.Projects
|
||||
.Where(p => p.FilePath == csprojPath)
|
||||
.Any();
|
||||
|
||||
if (!solutionContainsCsprojPriorToMigration)
|
||||
{
|
||||
csprojFilesToAdd.Add(Path.Combine(report.ProjectDirectory, migratedProjectName));
|
||||
}
|
||||
if (!solutionContainsCsprojPriorToMigration)
|
||||
{
|
||||
csprojFilesToAdd.Add(Path.Combine(report.ProjectDirectory, migratedProjectName));
|
||||
}
|
||||
|
||||
foreach (var preExisting in report.PreExistingCsprojDependencies)
|
||||
{
|
||||
csprojFilesToAdd.Add(Path.Combine(report.ProjectDirectory, preExisting));
|
||||
}
|
||||
|
||||
var projectDirectory = new DirectoryInfo(report.ProjectDirectory);
|
||||
foreach (var xprojFileName in projectDirectory.EnumerateFiles("*.xproj"))
|
||||
{
|
||||
var xprojPath = Path.Combine(relativeReportPath, xprojFileName.Name);
|
||||
var solutionContainsXprojFileToRemove = slnFile.Projects
|
||||
.Where(p => p.FilePath == xprojPath)
|
||||
.Any();
|
||||
|
||||
if (solutionContainsXprojFileToRemove)
|
||||
{
|
||||
xprojFilesToRemove.Add(Path.Combine(report.ProjectDirectory, xprojFileName.Name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Version version;
|
||||
|
@ -185,7 +186,12 @@ namespace Microsoft.DotNet.Tools.Migrate
|
|||
|
||||
foreach (var csprojFile in csprojFilesToAdd)
|
||||
{
|
||||
AddProject(slnFile.FullPath, csprojFile);
|
||||
RunDotnetSlnCommand(slnFile.FullPath, csprojFile, "add");
|
||||
}
|
||||
|
||||
foreach (var xprojFile in xprojFilesToRemove)
|
||||
{
|
||||
RunDotnetSlnCommand(slnFile.FullPath, xprojFile, "remove");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -209,19 +215,19 @@ namespace Microsoft.DotNet.Tools.Migrate
|
|||
slnFile.RemoveEmptySolutionFolders();
|
||||
}
|
||||
|
||||
private void AddProject(string slnPath, string csprojPath)
|
||||
private void RunDotnetSlnCommand(string slnPath, string projPath, string commandName)
|
||||
{
|
||||
List<string> args = new List<string>()
|
||||
var args = new List<string>()
|
||||
{
|
||||
"sln",
|
||||
slnPath,
|
||||
"add",
|
||||
csprojPath,
|
||||
commandName,
|
||||
projPath,
|
||||
};
|
||||
|
||||
var dotnetPath = Path.Combine(AppContext.BaseDirectory, "dotnet.dll");
|
||||
var addCommand = new ForwardingApp(dotnetPath, args);
|
||||
addCommand.Execute();
|
||||
var command = new ForwardingApp(dotnetPath, args);
|
||||
command.Execute();
|
||||
}
|
||||
|
||||
private void MoveProjectJsonArtifactsToBackup(MigrationReport migrationReport)
|
||||
|
|
|
@ -35,6 +35,9 @@ namespace Microsoft.DotNet.Tools.Publish
|
|||
|
||||
var appliedPublishOption = result["dotnet"]["publish"];
|
||||
|
||||
CommandOption filterProjOption = app.Option(
|
||||
$"--filter <{LocalizableStrings.FilterProjOption}>", LocalizableStrings.FilterProjOptionDescription,
|
||||
CommandOptionType.MultipleValue);
|
||||
msbuildArgs.AddRange(appliedPublishOption.OptionValuesToBeForwarded());
|
||||
|
||||
msbuildArgs.AddRange(appliedPublishOption.Arguments);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue