protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (reparseReferencesSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, true, false); } if (reparseCodeSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, false, true); } }
protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (e.PropertyName == "TargetFrameworkVersion") { CreateItemsListFromMSBuild(); } if (!isLoading) { bool reparseReferences = reparseReferencesSensitiveProperties.Contains(e.PropertyName); bool reparseCode = reparseCodeSensitiveProperties.Contains(e.PropertyName); Reparse(reparseReferences, reparseCode); } }
protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (e.PropertyName == "TargetFrameworkVersion") { CreateItemsListFromMSBuild(); } if (!isLoading) { if (reparseReferencesSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, true, false); } if (reparseCodeSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, false, true); } } }
protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (e.PropertyName == "OutputType") { switch (this.OutputType) { case OutputType.WinExe: SetProperty(e.Configuration, e.Platform, "MyType", "WindowsForms", e.NewLocation, true); break; case OutputType.Exe: SetProperty(e.Configuration, e.Platform, "MyType", "Console", e.NewLocation, true); break; default: SetProperty(e.Configuration, e.Platform, "MyType", "Windows", e.NewLocation, true); break; } } }
ProjectPropertyChangedEventArgs SetPropertyInternal(string configuration, string platform, string propertyName, string newValue, PropertyStorageLocations location, bool treatPropertyValueAsLiteral) { PropertyStorageLocations oldLocation; ProjectPropertyGroupElement existingPropertyGroup; ProjectPropertyElement existingProperty = FindPropertyObject(configuration, platform, propertyName, out existingPropertyGroup, out oldLocation); // Try to get accurate oldLocation if (oldLocation == PropertyStorageLocations.Unknown) { oldLocation = FindExistingPropertyInAllConfigurations(propertyName); if (oldLocation == PropertyStorageLocations.Unknown) { oldLocation = PropertyStorageLocations.Base; } } // Set new location to old location if storage location should remain unchanged if (location == PropertyStorageLocations.Unchanged) { location = oldLocation; } // determine the insertion position for the property PropertyPosition propertyInsertionPosition; if (saveAfterImportsProperties.Contains(propertyName)) { propertyInsertionPosition = PropertyPosition.UseExistingOrCreateAfterLastImport; } else { propertyInsertionPosition = PropertyPosition.UseExistingOrCreateAfterLastPropertyGroup; } // get the project file where the property should be stored ProjectRootElement targetProject; if ((location & PropertyStorageLocations.UserFile) == PropertyStorageLocations.UserFile) targetProject = userProjectFile; else targetProject = projectFile; if (oldLocation != location) { // move existing properties to new location, then use the normal property // setting code at end of this method switch (location & PropertyStorageLocations.ConfigurationAndPlatformSpecific) { case 0: // Set base property - remove all previous copies of the property RemovePropertyCompletely(propertyName); break; case PropertyStorageLocations.ConfigurationSpecific: // Get any value usable as existing property value (once per configuration) Dictionary<string, string> oldValuesConf = new Dictionary<string, string>(); foreach (string conf in this.ConfigurationNames) { oldValuesConf[conf] = GetAnyUnevaluatedPropertyValue(conf, null, propertyName); } // Remove the property RemovePropertyCompletely(propertyName); // Recreate the property using the saved value foreach (KeyValuePair<string, string> pair in oldValuesConf) { if (pair.Value != null) { MSBuildSetProperty(targetProject, propertyName, pair.Value, CreateCondition(pair.Key, null, location), propertyInsertionPosition, false); } } break; case PropertyStorageLocations.PlatformSpecific: // Get any value usable as existing property value (once per platform) Dictionary<string, string> oldValuesPlat = new Dictionary<string, string>(); foreach (string plat in this.PlatformNames) { oldValuesPlat[plat] = GetAnyUnevaluatedPropertyValue(null, plat, propertyName); } // Remove the property RemovePropertyCompletely(propertyName); // Recreate the property using the saved value foreach (KeyValuePair<string, string> pair in oldValuesPlat) { if (pair.Value != null) { MSBuildSetProperty(targetProject, propertyName, pair.Value, CreateCondition(null, pair.Key, location), propertyInsertionPosition, false); } } break; case PropertyStorageLocations.ConfigurationAndPlatformSpecific: // Get any value usable as existing property value (once per configuration+platform) Dictionary<StringPair, string> oldValues = new Dictionary<StringPair, string>(); foreach (string conf in this.ConfigurationNames) { foreach (string plat in this.PlatformNames) { oldValues[new StringPair(conf, plat)] = GetAnyUnevaluatedPropertyValue(conf, plat, propertyName); } } // Remove the property RemovePropertyCompletely(propertyName); // Recreate the property using the saved value foreach (KeyValuePair<StringPair, string> pair in oldValues) { if (pair.Value != null) { MSBuildSetProperty(targetProject, propertyName, pair.Value, CreateCondition(pair.Key.Item1, pair.Key.Item2, location), propertyInsertionPosition, false); } } break; default: throw new NotSupportedException(); } // update existingProperty and existingPropertyGroup after the move operation PropertyStorageLocations tmpLocation; existingProperty = FindPropertyObject(configuration, platform, propertyName, out existingPropertyGroup, out tmpLocation); } ProjectPropertyChangedEventArgs args; args = new ProjectPropertyChangedEventArgs(propertyName); args.Configuration = configuration; args.Platform = platform; args.NewLocation = location; args.OldLocation = oldLocation; if (newValue != null) { args.NewValue = treatPropertyValueAsLiteral ? MSBuildInternals.Escape(newValue) : newValue; } if (existingPropertyGroup != null && existingProperty != null) { // update or delete existing property args.OldValue = existingProperty.Value; MSBuildSetProperty(targetProject, propertyName, newValue ?? "", existingPropertyGroup.Condition, propertyInsertionPosition, treatPropertyValueAsLiteral); if (newValue == null) { // delete existing property existingPropertyGroup.RemoveChild(existingProperty); if (existingPropertyGroup.Count == 0) { targetProject.RemoveChild(existingPropertyGroup); } } } else if (newValue != null) { // create new property MSBuildSetProperty(targetProject, propertyName, newValue, CreateCondition(configuration, platform, location), propertyInsertionPosition, treatPropertyValueAsLiteral); } return args; }
protected virtual void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { if (PropertyChanged != null) { PropertyChanged(this, e); } }
protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (e.PropertyName == "TargetFrameworkVersion") CreateItemsListFromMSBuild(); if (!isLoading) { if (reparseReferencesSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, true, false); } if (reparseCodeSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, false, true); } } }
protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (e.PropertyName == "TargetFrameworkVersion") CreateItemsListFromMSBuild(); if (!isLoading) { bool reparseReferences = reparseReferencesSensitiveProperties.Contains(e.PropertyName); bool reparseCode = reparseCodeSensitiveProperties.Contains(e.PropertyName); Reparse(reparseReferences, reparseCode); } }
protected override void OnPropertyChanged(ProjectPropertyChangedEventArgs e) { base.OnPropertyChanged(e); if (!isLoading) { if (reparseReferencesSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, true, false); } if (reparseCodeSensitiveProperties.Contains(e.PropertyName)) { ParserService.Reparse(this, false, true); } } }