Addressing code review comments by Adding an enum, renaming the PackageConstants and making the Sdk.Web version the same as the Sdk version.
This commit is contained in:
parent
c3b57f2e72
commit
b45a3ba698
7 changed files with 82 additions and 61 deletions
|
@ -1,7 +0,0 @@
|
|||
namespace Microsoft.DotNet.ProjectJsonMigration
|
||||
{
|
||||
internal class ConstantPackageVersions
|
||||
{
|
||||
public const string WebSdkPackageVersion = "1.0.0-alpha-20161026-2";
|
||||
}
|
||||
}
|
|
@ -3,9 +3,9 @@
|
|||
|
||||
namespace Microsoft.DotNet.ProjectJsonMigration
|
||||
{
|
||||
internal class ConstantPackageNames
|
||||
internal class PackageConstants
|
||||
{
|
||||
public const string CSdkPackageName = "Microsoft.NET.Sdk";
|
||||
public const string CWebSdkPackageName = "Microsoft.NET.Sdk.Web";
|
||||
public const string SdkPackageName = "Microsoft.NET.Sdk";
|
||||
public const string WebSdkPackageName = "Microsoft.NET.Sdk.Web";
|
||||
}
|
||||
}
|
|
@ -9,20 +9,20 @@ using Microsoft.DotNet.Internal.ProjectModel;
|
|||
|
||||
namespace Microsoft.DotNet.ProjectJsonMigration
|
||||
{
|
||||
internal static class ProjectTypeDetector
|
||||
internal static class ProjectExtensions
|
||||
{
|
||||
public static string TryDetectProjectType(Project project)
|
||||
public static ProjectType GetProjectType(this Project project)
|
||||
{
|
||||
string projectType = null;
|
||||
if (IsWebProject(project))
|
||||
var projectType = ProjectType.Console;
|
||||
if (project.IsWebProject())
|
||||
{
|
||||
projectType = "web";
|
||||
projectType = ProjectType.Web;
|
||||
}
|
||||
|
||||
return projectType;
|
||||
}
|
||||
|
||||
private static bool IsWebProject(Project project)
|
||||
private static bool IsWebProject(this Project project)
|
||||
{
|
||||
if(project.IsTestProject)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
|
|||
|
||||
var isExecutable = project.GetCompilerOptions(null, "Debug").EmitEntryPoint.GetValueOrDefault();
|
||||
if (isExecutable
|
||||
&& HasAnyPackageContainingName(project, ".AspNetCore."))
|
||||
&& project.HasAnyPackageContainingName(".AspNetCore."))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
|
|||
return false;
|
||||
}
|
||||
|
||||
private static bool HasAnyPackageContainingName(Project project, string nameSegment)
|
||||
private static bool HasAnyPackageContainingName(this Project project, string nameSegment)
|
||||
{
|
||||
var containsPackageName = HasAnyPackageContainingName(
|
||||
new ReadOnlyCollection<ProjectLibraryDependency>(project.Dependencies),
|
8
src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs
Normal file
8
src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs
Normal file
|
@ -0,0 +1,8 @@
|
|||
namespace Microsoft.DotNet.ProjectJsonMigration
|
||||
{
|
||||
internal enum ProjectType
|
||||
{
|
||||
Console,
|
||||
Web
|
||||
}
|
||||
}
|
|
@ -44,12 +44,15 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
PackageDependencyInfoTransform.Transform(
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = ConstantPackageNames.CSdkPackageName,
|
||||
Name = PackageConstants.SdkPackageName,
|
||||
Version = migrationSettings.SdkPackageVersion,
|
||||
PrivateAssets = "All"
|
||||
}), noFrameworkPackageReferenceItemGroup, mergeExisting: false);
|
||||
|
||||
AddProjectTypeSpecificDependencies(migrationRuleInputs, noFrameworkPackageReferenceItemGroup);
|
||||
AddProjectTypeSpecificDependencies(
|
||||
migrationRuleInputs,
|
||||
migrationSettings,
|
||||
noFrameworkPackageReferenceItemGroup);
|
||||
|
||||
// Migrate Direct Deps first
|
||||
MigrateDependencies(
|
||||
|
@ -80,26 +83,30 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
|
||||
private void AddProjectTypeSpecificDependencies(
|
||||
MigrationRuleInputs migrationRuleInputs,
|
||||
MigrationSettings migrationSettings,
|
||||
ProjectItemGroupElement noFrameworkPackageReferenceItemGroup)
|
||||
{
|
||||
var type = ProjectTypeDetector.TryDetectProjectType(
|
||||
migrationRuleInputs.DefaultProjectContext.ProjectFile);
|
||||
var type = migrationRuleInputs.DefaultProjectContext.ProjectFile.GetProjectType();
|
||||
switch (type)
|
||||
{
|
||||
case "web":
|
||||
case ProjectType.Web:
|
||||
_transformApplicator.Execute(
|
||||
PackageDependencyInfoTransform.Transform(
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = ConstantPackageNames.CWebSdkPackageName,
|
||||
Version = ConstantPackageVersions.WebSdkPackageVersion,
|
||||
Name = PackageConstants.WebSdkPackageName,
|
||||
Version = migrationSettings.SdkPackageVersion,
|
||||
PrivateAssets = "All"
|
||||
}), noFrameworkPackageReferenceItemGroup, mergeExisting: false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void MigrateImports(ProjectPropertyGroupElement commonPropertyGroup, TargetFrameworkInformation targetFramework)
|
||||
private void MigrateImports(
|
||||
ProjectPropertyGroupElement commonPropertyGroup,
|
||||
TargetFrameworkInformation targetFramework)
|
||||
{
|
||||
var transform = ImportsTransformation.Transform(targetFramework);
|
||||
|
||||
|
@ -191,7 +198,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
}
|
||||
}
|
||||
|
||||
_transformApplicator.Execute(transform.Transform(packageDependency), itemGroup, mergeExisting: true);
|
||||
_transformApplicator.Execute(
|
||||
transform.Transform(packageDependency),
|
||||
itemGroup,
|
||||
mergeExisting: true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -211,7 +221,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
private void InjectAssemblyReferenceIfNotPresent(string dependencyName,
|
||||
IList<ProjectLibraryDependency> packageDependencies)
|
||||
{
|
||||
if (!packageDependencies.Any(dep => string.Equals(dep.Name, dependencyName, StringComparison.OrdinalIgnoreCase)))
|
||||
if (!packageDependencies.Any(dep =>
|
||||
string.Equals(dep.Name, dependencyName, StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
packageDependencies.Add(new ProjectLibraryDependency
|
||||
{
|
||||
|
@ -261,12 +272,16 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
return flagString;
|
||||
}
|
||||
|
||||
private IEnumerable<string> GetAllProjectReferenceNames(Project project, NuGetFramework framework, ProjectRootElement xproj)
|
||||
private IEnumerable<string> GetAllProjectReferenceNames(
|
||||
Project project,
|
||||
NuGetFramework framework,
|
||||
ProjectRootElement xproj)
|
||||
{
|
||||
var csprojReferenceItems = _projectDependencyFinder.ResolveXProjProjectDependencies(xproj);
|
||||
var migratedXProjDependencyPaths = csprojReferenceItems.SelectMany(p => p.Includes());
|
||||
var migratedXProjDependencyNames = new HashSet<string>(migratedXProjDependencyPaths.Select(p => Path.GetFileNameWithoutExtension(
|
||||
PathUtility.GetPathWithDirectorySeparator(p))));
|
||||
var migratedXProjDependencyNames =
|
||||
new HashSet<string>(migratedXProjDependencyPaths.Select(p =>
|
||||
Path.GetFileNameWithoutExtension(PathUtility.GetPathWithDirectorySeparator(p))));
|
||||
var projectDependencies = _projectDependencyFinder.ResolveDirectProjectDependenciesForFramework(
|
||||
project,
|
||||
framework,
|
||||
|
@ -275,38 +290,43 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
return projectDependencies.Select(p => p.Name).Concat(migratedXProjDependencyNames);
|
||||
}
|
||||
|
||||
private AddItemTransform<ProjectLibraryDependency> FrameworkDependencyTransform => new AddItemTransform<ProjectLibraryDependency>(
|
||||
"Reference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true);
|
||||
private AddItemTransform<ProjectLibraryDependency> FrameworkDependencyTransform =>
|
||||
new AddItemTransform<ProjectLibraryDependency>(
|
||||
"Reference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true);
|
||||
|
||||
private Func<AddItemTransform<ProjectLibraryDependency>> PackageDependencyTransform => () => new AddItemTransform<ProjectLibraryDependency>(
|
||||
"PackageReference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true)
|
||||
.WithMetadata("Version", r => r.LibraryRange.VersionRange.OriginalString);
|
||||
private Func<AddItemTransform<ProjectLibraryDependency>> PackageDependencyTransform =>
|
||||
() => new AddItemTransform<ProjectLibraryDependency>(
|
||||
"PackageReference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true)
|
||||
.WithMetadata("Version", r => r.LibraryRange.VersionRange.OriginalString);
|
||||
|
||||
private AddItemTransform<PackageDependencyInfo> PackageDependencyInfoTransform => new AddItemTransform<PackageDependencyInfo>(
|
||||
"PackageReference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true)
|
||||
.WithMetadata("Version", r => r.Version)
|
||||
.WithMetadata("PrivateAssets", r => r.PrivateAssets, r => !string.IsNullOrEmpty(r.PrivateAssets));
|
||||
private AddItemTransform<PackageDependencyInfo> PackageDependencyInfoTransform =>
|
||||
new AddItemTransform<PackageDependencyInfo>(
|
||||
"PackageReference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true)
|
||||
.WithMetadata("Version", r => r.Version)
|
||||
.WithMetadata("PrivateAssets", r => r.PrivateAssets, r => !string.IsNullOrEmpty(r.PrivateAssets));
|
||||
|
||||
private AddItemTransform<ProjectLibraryDependency> ToolTransform => new AddItemTransform<ProjectLibraryDependency>(
|
||||
"DotNetCliToolReference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true)
|
||||
.WithMetadata("Version", r => r.LibraryRange.VersionRange.OriginalString);
|
||||
private AddItemTransform<ProjectLibraryDependency> ToolTransform =>
|
||||
new AddItemTransform<ProjectLibraryDependency>(
|
||||
"DotNetCliToolReference",
|
||||
dep => dep.Name,
|
||||
dep => "",
|
||||
dep => true)
|
||||
.WithMetadata("Version", r => r.LibraryRange.VersionRange.OriginalString);
|
||||
|
||||
private AddPropertyTransform<TargetFrameworkInformation> ImportsTransformation => new AddPropertyTransform<TargetFrameworkInformation>(
|
||||
"PackageTargetFallback",
|
||||
t => $"$(PackageTargetFallback);{string.Join(";", t.Imports)}",
|
||||
t => t.Imports.OrEmptyIfNull().Any());
|
||||
private AddPropertyTransform<TargetFrameworkInformation> ImportsTransformation =>
|
||||
new AddPropertyTransform<TargetFrameworkInformation>(
|
||||
"PackageTargetFallback",
|
||||
t => $"$(PackageTargetFallback);{string.Join(";", t.Imports)}",
|
||||
t => t.Imports.OrEmptyIfNull().Any());
|
||||
|
||||
private class PackageDependencyInfo
|
||||
{
|
||||
|
|
|
@ -72,7 +72,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
{
|
||||
var packageRefs = outputMSBuildProject
|
||||
.Items
|
||||
.Where(i => i.ItemType == "PackageReference" && i.Include != ConstantPackageNames.CSdkPackageName)
|
||||
.Where(i => i.ItemType == "PackageReference" && i.Include != PackageConstants.SdkPackageName)
|
||||
.ToList();
|
||||
|
||||
foreach (var packageRef in packageRefs)
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace Microsoft.DotNet.Tools.Migrate
|
|||
return projectRootElement
|
||||
.Items
|
||||
.Where(i => i.ItemType == "PackageReference")
|
||||
.First(i => i.Include == ConstantPackageNames.CSdkPackageName)
|
||||
.First(i => i.Include == PackageConstants.SdkPackageName)
|
||||
.GetMetadataWithName("version").Value;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue