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; } }
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); }
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; } }
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); }