public List <DependencyPackageMigrationInfo> GetPackageMigrations(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var    list           = new List <DependencyPackageMigrationInfo>();
            string toolingVersion = targetToolingVersion.ToString().ToLowerInvariant();

            var package = new DependencyPackageMigrationInfo("Microsoft.Extensions.Configuration.FileExtensions", "1.0.0-rc2-final");

            package.OldNames.Add("Microsoft.Extensions.Configuration.FileProviderExtensions");
            list.Add(package);


            // If Microsoft.Extensions.PlatformAbstractions package is referenced, it was split out in RC2 so add the new package as well, in case you were using classes from it.
            if (projectContext.ToProjectJsonWrapper().HasDependency("Microsoft.Extensions.PlatformAbstractions"))
            {
                package = new DependencyPackageMigrationInfo("Microsoft.Extensions.DependencyModel", "1.0.0-rc2-final");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }

            // only add the following new nuget packlages if the project is a web project. We use a heuristic - if MVC is there as a dependency then its a web project.
            if (projectContext.ToProjectJsonWrapper().IsMvcProject())
            {
                package = new DependencyPackageMigrationInfo("Microsoft.Extensions.Options.ConfigurationExtensions", $"1.0.0-rc2-final");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }



            return(list);
        }
        public List <DependencyPackageMigrationInfo> GetPackageMigrations(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var    list           = new List <DependencyPackageMigrationInfo>();
            string toolingVersion = ToolingVersion.Preview1.ToString().ToLowerInvariant();


            // file providers were renamed.
            var package = new DependencyPackageMigrationInfo("Microsoft.Extensions.FileProviders.Abstractions", "1.0.0-rc2-final");

            package.OldNames.Add("Microsoft.AspNet.FileProviders");
            package.MigrationAction = PackageMigrationAction.Update;
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.Extensions.FileProviders.Composite", "1.0.0-rc2-final");
            package.OldNames.Add("Microsoft.AspNet.FileProviders.Composite");
            package.MigrationAction = PackageMigrationAction.Update;
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.Extensions.FileProviders.Embedded", "1.0.0-rc2-final");
            package.OldNames.Add("Microsoft.AspNet.FileProviders.Embedded");
            package.MigrationAction = PackageMigrationAction.Update;
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.Extensions.FileProviders.Physical", "1.0.0-rc2-final");
            package.OldNames.Add("Microsoft.AspNet.FileProviders.Physical");
            package.MigrationAction = PackageMigrationAction.Update;
            list.Add(package);


            return(list);
        }
        public List <ToolPackageMigrationInfo> GetPackageMigrations(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var    list           = new List <ToolPackageMigrationInfo>();
            string toolingVersion = targetToolingVersion.ToString().ToLowerInvariant();

            // Updates the old web command if it is found, to be the new tool.
            var package = new ToolPackageMigrationInfo("Microsoft.AspNetCore.Server.IISIntegration.Tools", $"1.0.0-{toolingVersion}-final");

            package.OldNames.Add("web");
            package.Imports.Add("portable-net45+win8+dnxcore50");
            package.MigrationAction = PackageMigrationAction.Update;
            list.Add(package);


            // Adds / updates the user secrets tool - if the project.json has a userSecretsId present.
            if (projectContext.ProjectJsonObject["userSecretsId"] != null)
            {
                package = new ToolPackageMigrationInfo("Microsoft.Extensions.SecretManager.Tools", $"1.0.0-{toolingVersion}-final");
                package.Imports.Add("portable-net45+win8+dnxcore50");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }

            // Updates the old ef command if it is found, to be the new tool.
            package = new ToolPackageMigrationInfo("Microsoft.EntityFrameworkCore.Tools", $"1.0.0-{toolingVersion}-final");
            package.OldNames.Add("ef");
            package.Imports.Add("portable-net45+win8+dnxcore50");
            package.Imports.Add("portable-net45+win8");
            package.MigrationAction = PackageMigrationAction.Update;
            list.Add(package);


            // only add the razor tools tool if project allready references razor tools package as a dependency (either as new or old name) in case we havent updated it yet)
            if (projectContext.ToProjectJsonWrapper().HasDependency("Microsoft.AspNetCore.Razor.Tools") ||
                projectContext.ToProjectJsonWrapper().HasDependency("Microsoft.AspNet.Tooling.Razor"))
            {
                package = new ToolPackageMigrationInfo("Microsoft.AspNetCore.Razor.Tools", $"1.0.0-{toolingVersion}-final");
                package.Imports.Add("portable-net45+win8+dnxcore50");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }

            // only add the web code generation tools to the project if its a web project. We use a heuristic - if MVC is there as a dependency then its a web project.
            if (projectContext.ToProjectJsonWrapper().IsMvcProject())
            {
                package = new ToolPackageMigrationInfo("Microsoft.VisualStudio.Web.CodeGeneration.Tools", $"1.0.0-{toolingVersion}-final");
                package.Imports.Add("portable-net45+win8+dnxcore50");
                package.Imports.Add("portable-net45+win8");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }


            return(list);
        }
Ejemplo n.º 4
0
 public SolutionMigrationOptions(ToolingVersion toolingVersion)
 {
     ToolingVersion = toolingVersion;
     if (ToolingVersion == ToolingVersion.Preview1)
     {
         SdkVersionNumber = "1.0.0-preview1-002702";
     }
     else if (ToolingVersion == ToolingVersion.Preview2)
     {
         SdkVersionNumber = "1.0.0-preview2-003121";
     }
 }
        public List <DependencyPackageMigrationInfo> GetPackageMigrations(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var    list           = new List <DependencyPackageMigrationInfo>();
            string toolingVersion = ToolingVersion.Preview1.ToString().ToLowerInvariant();


            // ef packages..
            var package = new DependencyPackageMigrationInfo("Microsoft.EntityFrameworkCore.SqlServer", "1.0.0-rc2-final");

            package.OldNames.Add("EntityFramework.MicrosoftSqlServer");
            package.OldNames.Add("EntityFramework.SqlServer");
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.EntityFrameworkCore.SQLite", "1.0.0-rc2-final");
            package.OldNames.Add("EntityFramework.SQLite");
            list.Add(package);

            //package = new NuGetPackageMigrationInfo("NpgSql.EntityFrameworkCore.Postgres", "1.0.0-rc2-final");
            //package.OldNames.Add("EntityFramework7.Npgsql");
            //list.Add(package);

            package = new DependencyPackageMigrationInfo("EntityFrameworkCore.SqlServerCompact35", "1.0.0-rc2-final");
            package.OldNames.Add("EntityFramework.SqlServerCompact35");
            list.Add(package);

            package = new DependencyPackageMigrationInfo("EntityFrameworkCore.SqlServerCompact40", "1.0.0-rc2-final");
            package.OldNames.Add("EntityFramework.SqlServerCompact40");
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.EntityFrameworkCore.InMemory", "1.0.0-rc2-final");
            package.OldNames.Add("EntityFramework.InMemory");
            list.Add(package);

            //package = new NuGetPackageMigrationInfo("EntityFramework.IBMDataServer", "1.0.0-rc2-final");
            //package.OldNames.Add("EntityFramework.IBMDataServer");
            //list.Add(package);

            package      = new DependencyPackageMigrationInfo("Microsoft.EntityFrameworkCore.Tools", $"1.0.0-{toolingVersion}-final");
            package.Type = PackageType.Build;
            package.OldNames.Add("EntityFramework.Commands");
            list.Add(package);


            package = new DependencyPackageMigrationInfo("Microsoft.EntityFrameworkCore.SqlServer.Design", "1.0.0-rc2-final");
            package.OldNames.Add("EntityFramework.MicrosoftSqlServer.Design");
            list.Add(package);



            return(list);
        }
        public List <DependencyPackageMigrationInfo> GetPackageMigrations(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var    list           = new List <DependencyPackageMigrationInfo>();
            string toolingVersion = ToolingVersion.Preview1.ToString().ToLowerInvariant();

            // aspnet packages
            var package = new DependencyPackageMigrationInfo("Autofac", "4.0.0-rc3-280");

            list.Add(package);

            package = new DependencyPackageMigrationInfo("Autofac.Extensions.DependencyInjection", "4.0.0-rc3-280");
            list.Add(package);


            return(list);
        }
Ejemplo n.º 7
0
        public static List <ToolPackageMigrationInfo> GetToolPackageMigrationList(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var toolMigrationProviders = new List <IToolPackageMigrationProvider>();

            toolMigrationProviders.Add(new CommonToolPackagesMigration());

            var migrations = new List <ToolPackageMigrationInfo>();

            foreach (var provider in toolMigrationProviders)
            {
                var packageMigrations = provider.GetPackageMigrations(targetToolingVersion, projectContext);
                migrations.AddRange(packageMigrations);
            }

            return(migrations);
        }
Ejemplo n.º 8
0
        static int Main(string[] args)
        {
            var result   = CommandLine.Parser.Default.ParseArguments <Options.UpgradeSolutionOptions>(args);
            var exitCode = result
                           .MapResult((options) =>
            {
                var solutionDir            = new DirectoryInfo(options.SolutionDir);
                var solutionUpgradeContext = new SolutionUpgradeContext(solutionDir);
                var solutionMigrator       = new SolutionMigrator(solutionUpgradeContext);

                ToolingVersion toolingVersion = ToolingVersion.Preview1;
                if (options.ReleaseVersion == ReleaseVersion.RTM)
                {
                    toolingVersion = ToolingVersion.Preview2;
                }


                var solutionMigratorOptions = new SolutionMigrationOptions(toolingVersion);
                solutionMigrator.Apply(solutionMigratorOptions);

                // upgrade projects.
                foreach (var project in solutionUpgradeContext.Projects)
                {
                    Console.WriteLine("Upgrading " + project.ToString());
                    var projectMigrator = new ProjectMigrator(project);
                    // using default options for each project, but should probably extend command line to set these.
                    var projectUpgradeOptions = new ProjectMigrationOptions(options.ReleaseVersion);
                    projectMigrator.Apply(projectUpgradeOptions);

                    // upgrade csharp files in project if enabled.
                    if (!options.NoCsharpRefactoring)
                    {
                        var codeMigrationoptions = new CsharpCodeMigrationOptions()
                        {
                            RewriteUsings = true
                        };
                        var csharpMigrator = new CsharpCodeMigrator(codeMigrationoptions);

                        foreach (var csharpFileUpgradeContext in project.CsharpFiles)
                        {
                            Console.WriteLine("Refactoring: {0}", csharpFileUpgradeContext.ToString());
                            csharpMigrator.Apply(csharpFileUpgradeContext, null);
                        }
                    }
                }

                // save changes to disk.
                solutionUpgradeContext.SaveChanges();

                // perform refactorings?

                //Refactor(solutionUpgradeContext);

                Console.WriteLine("Deleting project.lock.json files..");
                var projectLockFiles = solutionDir.GetFileSystemInfos("project.lock.json", SearchOption.AllDirectories);
                foreach (var projectLock in projectLockFiles)
                {
                    Console.WriteLine("Deleting lock file  " + projectLock.ToString());
                    projectLock.Delete();
                }

                if (options.Verbose)
                {
                    Console.WriteLine("Upgrade finished.");
                }
                return(0);
            },
                                      (errors) =>
            {
                //LogHelper.Log(errors);
                return(1);
            });

            return(exitCode);
        }
        public List <DependencyPackageMigrationInfo> GetPackageMigrations(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var    list           = new List <DependencyPackageMigrationInfo>();
            string toolingVersion = ToolingVersion.Preview1.ToString().ToLowerInvariant();

            // aspnet packages
            var package = new DependencyPackageMigrationInfo("Microsoft.AspNetCore.Identity.EntityFrameworkCore", "1.0.0-rc2-final");

            package.OldNames.Add("Microsoft.AspNet.Identity.EntityFramework");
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.AspNetCore.Server.IISIntegration", "1.0.0-rc2-final");
            package.OldNames.Add("Microsoft.AspNet.IISPlatformHandler");
            list.Add(package);

            package = new DependencyPackageMigrationInfo("Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore", "1.0.0-rc2-final");
            package.OldNames.Add("Microsoft.AspNet.Diagnostics.Entity");
            list.Add(package);


            package      = new DependencyPackageMigrationInfo("Microsoft.AspNetCore.Razor.Tools", $"1.0.0-{toolingVersion}-final");
            package.Type = PackageType.Build;
            package.OldNames.Add("Microsoft.AspNet.Tooling.Razor");
            list.Add(package);

            var projectWrapper = projectContext.ToProjectJsonWrapper();

            // only add the following new nuget packlages if the project is a web project. We use a heuristic - if MVC is there as a dependency then its a web project.
            if (projectWrapper.IsMvcProject())
            {
                package                 = new DependencyPackageMigrationInfo("Microsoft.VisualStudio.Web.CodeGeneration.Tools", $"1.0.0-{toolingVersion}-final");
                package.Type            = PackageType.Build;
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);

                // ensure Microsoft.AspNetCore.Diagnostics is brought in
                package = new DependencyPackageMigrationInfo("Microsoft.AspNetCore.Diagnostics", "1.0.0-rc2-final");
                package.OldNames.Add("Microsoft.AspNet.Diagnostics");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }

            package = new DependencyPackageMigrationInfo("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", $"1.0.0-{toolingVersion}-final");
            package.OldNames.Add("Microsoft.Extensions.CodeGenerators.Mvc");
            package.Type = PackageType.Build;
            list.Add(package);


            package = new DependencyPackageMigrationInfo("Microsoft.ApplicationInsights.AspNetCore", "1.0.0-rc2-final");
            package.OldNames.Add("Microsoft.ApplicationInsights.AspNet");
            list.Add(package);

            // Ensure following package is present if depending on IISPlatformHandler
            if (projectWrapper.HasDependency("Microsoft.AspNet.IISPlatformHandler") ||
                projectWrapper.HasDependency("Microsoft.AspNetCore.Server.IISIntegration"))
            {
                package = new DependencyPackageMigrationInfo("Microsoft.AspNetCore.Hosting", $"1.0.0-rc2-final");
                package.MigrationAction = PackageMigrationAction.AddOrUpdate;
                list.Add(package);
            }

            // remove Microsoft.Dnx.Runtime
            package = new DependencyPackageMigrationInfo("Microsoft.Dnx.Runtime", "1.0.0-rc1-final");
            package.MigrationAction = PackageMigrationAction.Remove;
            list.Add(package);


            return(list);
        }
Ejemplo n.º 10
0
        public static List <DependencyPackageMigrationInfo> GetRtmDependencyPackageMigrationList(ToolingVersion targetToolingVersion, IProjectUpgradeContext projectContext)
        {
            var packageMigrationProviders = new List <IDependencyPackageMigrationProvider>();

            //    packageMigrationProviders.Add(new AspNetDependencyPackageMigrationProvider());
            packageMigrationProviders.Add(new EntityFrameworkRtmDependencyPackageMigrationProvider());
            packageMigrationProviders.Add(new AspNetRtmDependencyPackageMigrationProvider());


            var migrations = new List <DependencyPackageMigrationInfo>();

            foreach (var provider in packageMigrationProviders)
            {
                var packageMigrations = provider.GetPackageMigrations(targetToolingVersion, projectContext);
                migrations.AddRange(packageMigrations);
            }

            return(migrations);
            // Microsoft.VisualStudio.Web.BrowserLink.Loader?
        }
Ejemplo n.º 11
0
        protected virtual IList <IProjectUpgradeAction> GetPackagesUpgrades(IProjectUpgradeContext projectUpgradeContext, ReleaseVersion version)
        {
            var upgradeActions = new List <IProjectUpgradeAction>();


            //if (version == ReleaseVersion.RC2)
            //{
            // migrates specific nuget packages where their name has completely changed, and also adds new ones that the project may require.
            // this is currently described by a hardcoded list.
            ToolingVersion toolingVersion = ToolingVersion.Preview1;

            if (version == ReleaseVersion.RTM)
            {
                toolingVersion = ToolingVersion.Preview2;
            }
            var nugetPackagesToMigrate = ProjectMigrator.GetRc2DependencyPackageMigrationList(toolingVersion, projectUpgradeContext);
            var packageMigrationAction = new MigrateDependencyPackages(nugetPackagesToMigrate);

            upgradeActions.Add(packageMigrationAction);

            // renames microsoft.aspnet packages to be microsoft.aspnetcore.
            var renameAspNetPackagesAction = new RenameAspNetPackagesToAspNetCore();

            upgradeActions.Add(renameAspNetPackagesAction);

            // updates microsoft. packages to be rc2 version numbers.
            var updateMicrosoftPackageVersionNumbersAction = new UpgradeMicrosoftPackageVersionNumbers(version);

            upgradeActions.Add(updateMicrosoftPackageVersionNumbersAction);

            // renames "commands" to "tools"
            var renameCommandstoToolsAndClear = new RenameCommandsToTools();

            upgradeActions.Add(renameCommandstoToolsAndClear);

            // migrates old command packages to the new tool nuget packages.
            var toolPackagestoMigrate = GetToolPackageMigrationList(ToolingVersion.Preview1, projectUpgradeContext);
            var migrateToolPackages   = new MigrateToolPackages(toolPackagestoMigrate);

            upgradeActions.Add(migrateToolPackages);

            // }

            if (version == ReleaseVersion.RTM)
            {
                // migrates specific nuget packages where their name has completely changed, and also adds new ones that the project may require.
                // this is currently described by a hardcoded list.
                var nugetPackagesToMigrateRTM = ProjectMigrator.GetRtmDependencyPackageMigrationList(ToolingVersion.Preview2, projectUpgradeContext);
                var packageMigrationActionRTM = new MigrateDependencyPackages(nugetPackagesToMigrateRTM);
                upgradeActions.Add(packageMigrationActionRTM);

                // updates remaining microsoft rc2 packages to be rtm version numbers i.e 1.0.0 instead of 1.0.0-rc2-final
                var updateMicrosoftPackageVersionNumbersActionRtm = new UpgradeMicrosoftPackageVersionNumbers(version);
                upgradeActions.Add(updateMicrosoftPackageVersionNumbersActionRtm);


                // migrates old command packages to the new tool nuget packages.
                var toolPackagestoMigrateRtm = GetToolPackageMigrationList(ToolingVersion.Preview2, projectUpgradeContext);
                var migrateToolPackagesRtm   = new MigrateToolPackages(toolPackagestoMigrateRtm);
                upgradeActions.Add(migrateToolPackagesRtm);
            }

            return(upgradeActions);
        }