Fix P2P migration

Fixes #4269 by deep cloning the MsbuildTemplateProject for each P2P reference. Add test which migrates and builds P2P references.
This commit is contained in:
Sridhar Periyasamy 2016-10-03 10:58:32 -07:00
parent 09e8877bd4
commit a396630576
27 changed files with 201 additions and 54 deletions

View file

@ -35,6 +35,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration
Exception exc = null;
IEnumerable<ProjectDependency> projectDependencies = null;
var tempMSBuildProjectTemplate = rootSettings.MSBuildProjectTemplate.DeepClone();
try
{
projectDependencies = ResolveTransitiveClosureProjectDependencies(
@ -54,7 +56,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
}
MigrateProject(rootSettings);
if (skipProjectReferences)
{
return;
@ -66,7 +68,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
var settings = new MigrationSettings(projectDir,
projectDir,
rootSettings.SdkPackageVersion,
rootSettings.MSBuildProjectTemplate);
tempMSBuildProjectTemplate.DeepClone());
MigrateProject(settings);
}
}
@ -93,7 +95,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
var projectDependencies = _projectDependencyFinder.ResolveProjectDependencies(rootProject, xprojFile);
Queue<ProjectDependency> projectsQueue = new Queue<ProjectDependency>(projectDependencies);
while(projectsQueue.Count() != 0)
while (projectsQueue.Count() != 0)
{
var projectDependency = projectsQueue.Dequeue();
@ -107,7 +109,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
var projectDir = Path.GetDirectoryName(projectDependency.ProjectFilePath);
projectDependencies = _projectDependencyFinder.ResolveProjectDependencies(projectDir);
foreach(var project in projectDependencies)
foreach (var project in projectDependencies)
{
projectsQueue.Enqueue(project);
}
@ -138,7 +140,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
{
var projectContexts = ProjectContext.CreateContextForEachFramework(migrationSettings.ProjectDirectory);
var xprojFile = migrationSettings.ProjectXProjFilePath ?? _projectDependencyFinder.FindXprojFile(migrationSettings.ProjectDirectory);
ProjectRootElement xproj = null;
if (xprojFile != null)
{