private void AddProjectTypeSpecificDependencies(
            MigrationRuleInputs migrationRuleInputs,
            MigrationSettings migrationSettings,
            ProjectItemGroupElement noFrameworkPackageReferenceItemGroup)
        {
            var type = migrationRuleInputs.DefaultProjectContext.ProjectFile.GetProjectType();

            switch (type)
            {
            case ProjectType.Web:
                _transformApplicator.Execute(
                    SdkPackageDependencyTransform.Transform(
                        new PackageDependencyInfo
                {
                    Name          = PackageConstants.WebSdkPackageName,
                    Version       = migrationSettings.SdkPackageVersion,
                    PrivateAssets = "All"
                }),
                    noFrameworkPackageReferenceItemGroup,
                    mergeExisting: false);
                break;

            default:
                break;
            }
        }
Esempio n. 2
0
        public void Apply(MigrationSettings migrationSettings, MigrationRuleInputs migrationRuleInputs)
        {
            CleanExistingPackageReferences(migrationRuleInputs.OutputMSBuildProject);

            _projectDirectory = migrationSettings.ProjectDirectory;
            var project = migrationRuleInputs.DefaultProjectContext.ProjectFile;

            var tfmDependencyMap = new Dictionary <string, IEnumerable <ProjectLibraryDependency> >();
            var targetFrameworks = project.GetTargetFrameworks();

            var noFrameworkPackageReferenceItemGroup = migrationRuleInputs.OutputMSBuildProject.AddItemGroup();

            // Inject Sdk dependency
            _transformApplicator.Execute(
                SdkPackageDependencyTransform.Transform(
                    new PackageDependencyInfo
            {
                Name          = PackageConstants.SdkPackageName,
                Version       = migrationSettings.SdkPackageVersion,
                PrivateAssets = "All"
            }), noFrameworkPackageReferenceItemGroup, mergeExisting: false);

            AddProjectTypeSpecificDependencies(
                migrationRuleInputs,
                migrationSettings,
                noFrameworkPackageReferenceItemGroup);

            // Migrate Direct Deps first
            MigrateDependencies(
                project,
                migrationRuleInputs.OutputMSBuildProject,
                null,
                project.Dependencies,
                migrationRuleInputs.ProjectXproj,
                itemGroup: noFrameworkPackageReferenceItemGroup);

            MigrationTrace.Instance.WriteLine($"Migrating {targetFrameworks.Count()} target frameworks");
            foreach (var targetFramework in targetFrameworks)
            {
                MigrationTrace.Instance.WriteLine($"Migrating framework {targetFramework.FrameworkName.GetShortFolderName()}");

                MigrateImports(migrationRuleInputs.CommonPropertyGroup, targetFramework);

                MigrateDependencies(
                    project,
                    migrationRuleInputs.OutputMSBuildProject,
                    targetFramework.FrameworkName,
                    targetFramework.Dependencies,
                    migrationRuleInputs.ProjectXproj);
            }

            MigrateTools(project, migrationRuleInputs.OutputMSBuildProject);
        }
Esempio n. 3
0
        private void AddProjectTypeSpecificDependencies(
            MigrationRuleInputs migrationRuleInputs,
            MigrationSettings migrationSettings,
            ProjectItemGroupElement noFrameworkPackageReferenceItemGroup)
        {
            var project = migrationRuleInputs.DefaultProjectContext.ProjectFile;
            var type    = project.GetProjectType();

            switch (type)
            {
            case ProjectType.Web:
                _transformApplicator.Execute(
                    SdkPackageDependencyTransform.Transform(
                        new PackageDependencyInfo
                {
                    Name          = PackageConstants.WebSdkPackageName,
                    Version       = migrationSettings.SdkPackageVersion,
                    PrivateAssets = "All"
                }),
                    noFrameworkPackageReferenceItemGroup,
                    mergeExisting: false);
                break;

            case ProjectType.Test:
                _transformApplicator.Execute(
                    PackageDependencyInfoTransform().Transform(
                        new PackageDependencyInfo
                {
                    Name    = PackageConstants.TestSdkPackageName,
                    Version = ConstantPackageVersions.TestSdkPackageVersion
                }),
                    noFrameworkPackageReferenceItemGroup,
                    mergeExisting: false);

                if (project.TestRunner.Equals("xunit", StringComparison.OrdinalIgnoreCase))
                {
                    _transformApplicator.Execute(
                        PackageDependencyInfoTransform().Transform(
                            new PackageDependencyInfo
                    {
                        Name    = PackageConstants.XUnitPackageName,
                        Version = ConstantPackageVersions.XUnitPackageVersion
                    }),
                        noFrameworkPackageReferenceItemGroup,
                        mergeExisting: false);

                    _transformApplicator.Execute(
                        PackageDependencyInfoTransform().Transform(
                            new PackageDependencyInfo
                    {
                        Name    = PackageConstants.XUnitRunnerPackageName,
                        Version = ConstantPackageVersions.XUnitRunnerPackageVersion
                    }),
                        noFrameworkPackageReferenceItemGroup,
                        mergeExisting: false);
                }
                else if (project.TestRunner.Equals("mstest", StringComparison.OrdinalIgnoreCase))
                {
                    _transformApplicator.Execute(
                        PackageDependencyInfoTransform().Transform(
                            new PackageDependencyInfo
                    {
                        Name    = PackageConstants.MstestTestAdapterName,
                        Version = ConstantPackageVersions.MstestTestAdapterVersion
                    }),
                        noFrameworkPackageReferenceItemGroup,
                        mergeExisting: false);

                    _transformApplicator.Execute(
                        PackageDependencyInfoTransform().Transform(
                            new PackageDependencyInfo
                    {
                        Name    = PackageConstants.MstestTestFrameworkName,
                        Version = ConstantPackageVersions.MstestTestFrameworkVersion
                    }),
                        noFrameworkPackageReferenceItemGroup,
                        mergeExisting: false);
                }
                break;

            case ProjectType.Library:
                if (!project.HasDependency(
                        (dep) => dep.Name.Trim().ToLower() == PackageConstants.NetStandardPackageName.ToLower()))
                {
                    _transformApplicator.Execute(
                        PackageDependencyInfoTransform().Transform(
                            new PackageDependencyInfo
                    {
                        Name    = PackageConstants.NetStandardPackageName,
                        Version = PackageConstants.NetStandardPackageVersion
                    }),
                        noFrameworkPackageReferenceItemGroup,
                        mergeExisting: true);
                }
                break;

            default:
                break;
            }
        }