Beispiel #1
0
        private void AddDefaultItemsToProject(
            SerializableMigrationDefaultsInfo defaults,
            ProjectRootElement project,
            Dictionary <string, ProjectItemGroupElement> defaultsItemGroups)
        {
            foreach (var itemInfo in defaults.Items)
            {
                ProjectItemGroupElement itemGroup;
                var parentCondition = itemInfo.ParentCondition ?? string.Empty;

                if (!defaultsItemGroups.TryGetValue(parentCondition, out itemGroup))
                {
                    itemGroup           = project.AddItemGroup();
                    itemGroup.Label     = c_DefaultsProjectElementContainerLabel;
                    itemGroup.Condition = parentCondition;

                    defaultsItemGroups[parentCondition] = itemGroup;
                }

                var item = itemGroup.AddItem(itemInfo.ItemType, itemInfo.Include);
                item.Exclude   = itemInfo.Exclude;
                item.Remove    = itemInfo.Remove;
                item.Condition = itemInfo.Condition;
            }
        }
Beispiel #2
0
        public void Apply(MigrationSettings migrationSettings, MigrationRuleInputs migrationRuleInputs)
        {
            SerializableMigrationDefaultsInfo defaults = ResolveDefaults(migrationSettings);

            var project = migrationRuleInputs.OutputMSBuildProject;
            var defaultsPropertyGroups = new Dictionary <string, ProjectPropertyGroupElement>();
            var defaultsItemGroups     = new Dictionary <string, ProjectItemGroupElement>();

            AddDefaultPropertiesToProject(defaults, project, defaultsPropertyGroups);
            AddDefaultItemsToProject(defaults, project, defaultsItemGroups);
        }
Beispiel #3
0
        private static void AddDefaultPropertiesToProject(
            SerializableMigrationDefaultsInfo defaults,
            ProjectRootElement project,
            Dictionary <string, ProjectPropertyGroupElement> defaultsPropertyGroups)
        {
            foreach (var propertyInfo in defaults.Properties)
            {
                ProjectPropertyGroupElement propertyGroup;
                var parentCondition = propertyInfo.ParentCondition ?? string.Empty;

                if (!defaultsPropertyGroups.TryGetValue(parentCondition, out propertyGroup))
                {
                    propertyGroup           = project.AddPropertyGroup();
                    propertyGroup.Label     = c_DefaultsProjectElementContainerLabel;
                    propertyGroup.Condition = parentCondition;

                    defaultsPropertyGroups[parentCondition] = propertyGroup;
                }

                var property = propertyGroup.AddProperty(propertyInfo.Name, propertyInfo.Value);
                property.Condition = propertyInfo.Condition;
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            var sdkRootPath = args[0];

            var beforeCommonSdkTargetsFilePath = Path.Combine(sdkRootPath, "src", "Tasks", "Microsoft.NET.Build.Tasks", "build", "Microsoft.NET.Sdk.BeforeCommon.targets");
            var commonSdkTargetsFilePath       = Path.Combine(sdkRootPath, "src", "Tasks", "Microsoft.NET.Build.Tasks", "build", "Microsoft.NET.Sdk.Common.targets");
            var sdkTargetsFilePath             = Path.Combine(sdkRootPath, "src", "Tasks", "Microsoft.NET.Build.Tasks", "build", "Microsoft.NET.Sdk.targets");
            var sdkPropsFilePath      = Path.Combine(sdkRootPath, "src", "Tasks", "Microsoft.NET.Build.Tasks", "build", "Microsoft.NET.Sdk.props");
            var csharpTargetsFilePath = Path.Combine(sdkRootPath, "src", "Tasks", "Microsoft.NET.Build.Tasks", "build", "Microsoft.NET.Sdk.CSharp.targets");
            var csharpPropsFilePath   = Path.Combine(sdkRootPath, "src", "Tasks", "Microsoft.NET.Build.Tasks", "build", "Microsoft.NET.Sdk.CSharp.props");

            var beforeCommonSdkTargetsFile = ProjectRootElement.Open(beforeCommonSdkTargetsFilePath);
            var commonSdkTargetsFile       = ProjectRootElement.Open(commonSdkTargetsFilePath);
            var sdkTargetsFile             = ProjectRootElement.Open(sdkTargetsFilePath);
            var sdkPropsFile      = ProjectRootElement.Open(sdkPropsFilePath);
            var csharpPropsFile   = ProjectRootElement.Open(csharpPropsFilePath);
            var csharpTargetsFile = ProjectRootElement.Open(csharpTargetsFilePath);

            var allProperties = new List <DefaultProjectPropertyInfo>();
            var allItems      = new List <DefaultProjectItemInfo>();

            AddPropertyDefault(allProperties, sdkPropsFile, "OutputType");
            AddPropertyDefault(allProperties, sdkPropsFile, "Configuration", ignoreConditions: true);
            AddPropertyDefault(allProperties, sdkPropsFile, "Platform");
            AddPropertyDefault(allProperties, sdkPropsFile, "FileAlignment");
            AddPropertyDefault(allProperties, sdkPropsFile, "PlatformTarget");
            AddPropertyDefault(allProperties, sdkPropsFile, "ErrorReport");
            AddPropertyDefault(allProperties, sdkPropsFile, "AssemblyName");
            AddPropertyDefault(allProperties, sdkPropsFile, "RootNamespace");
            AddPropertyDefault(allProperties, sdkPropsFile, "Deterministic");

            AddPropertyDefault(allProperties, csharpPropsFile, "WarningLevel");
            AddPropertyDefault(allProperties, csharpPropsFile, "NoWarn");

            AddHardcodedPropertyDefault(allProperties, "PackageRequireLicenseAcceptance", "false");

            AddConfigurationPropertyDefaults(allProperties, sdkPropsFile, "Debug");
            AddConfigurationPropertyDefaults(allProperties, sdkPropsFile, "Release");

            AddConfigurationPropertyDefaults(allProperties, csharpPropsFile, "Debug");
            AddConfigurationPropertyDefaults(allProperties, csharpPropsFile, "Release");

            AddPropertyDefault(allProperties, commonSdkTargetsFile, "VersionPrefix", ignoreConditions: true);
            AddPropertyDefault(allProperties, commonSdkTargetsFile, "AssemblyTitle", ignoreConditions: true);
            AddPropertyDefault(allProperties, commonSdkTargetsFile, "Product", ignoreConditions: true);
            AddPropertyDefault(allProperties, commonSdkTargetsFile, "NeutralLanguage", ignoreConditions: true);

            AddPropertyDefault(allProperties, beforeCommonSdkTargetsFile, "AutoUnifyAssemblyReferences", ignoreConditions: true);
            AddPropertyDefault(allProperties, beforeCommonSdkTargetsFile, "DesignTimeAutoUnify", ignoreConditions: true);
            AddPropertyDefault(allProperties, beforeCommonSdkTargetsFile, "TargetExt", ignoreConditions: true);

            AddCompileAndEmbeddedResourceDefaults(allItems, sdkTargetsFile);

            var wrapper = new SerializableMigrationDefaultsInfo()
            {
                Items      = allItems,
                Properties = allProperties
            };

            var    output = Path.Combine(Directory.GetCurrentDirectory(), "sdkdefaults.json");
            string json   = JsonConvert.SerializeObject(wrapper, Formatting.Indented);

            File.WriteAllText(output, json);
        }