Browse Source

Fix #414, the next attempt. To avoid problems with XML namespaces when serialized properties are saved directly inside of an MSBuild project, now project-specific formatting rules are saved in .csproj.sdsettings files (similar to solutions).

pull/419/head
Andreas Weizel 11 years ago
parent
commit
6de90c47b8
  1. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs
  2. 26
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingOptionsPersistence.cs

@ -91,7 +91,7 @@ namespace CSharpBinding.FormattingStrategy
if (!projectOptions.ContainsKey(key)) { if (!projectOptions.ContainsKey(key)) {
// Lazily create options container for project // Lazily create options container for project
projectOptions[key] = new CSharpFormattingOptionsPersistence( projectOptions[key] = new CSharpFormattingOptionsPersistence(
csproject.ExtensionProperties, csproject.GlobalPreferences,
new CSharpFormattingOptionsContainer((SolutionOptions ?? GlobalOptions).OptionsContainer) new CSharpFormattingOptionsContainer((SolutionOptions ?? GlobalOptions).OptionsContainer)
{ {
DefaultText = StringParser.Parse("${res:CSharpBinding.Formatting.ProjectOptionReference}") DefaultText = StringParser.Parse("${res:CSharpBinding.Formatting.ProjectOptionReference}")

26
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs

@ -39,8 +39,8 @@ namespace CSharpBinding
/// </summary> /// </summary>
public class CSharpProject : CompilableProject public class CSharpProject : CompilableProject
{ {
const string ExtensionPropertiesName = "SharpDevelopExtensions"; Properties globalPreferences;
Properties extensionProperties; FileName globalSettingsFileName;
public override IAmbience GetAmbience() public override IAmbience GetAmbience()
{ {
@ -66,6 +66,8 @@ namespace CSharpBinding
void Init() void Init()
{ {
globalPreferences = new Properties();
reparseReferencesSensitiveProperties.Add("TargetFrameworkVersion"); reparseReferencesSensitiveProperties.Add("TargetFrameworkVersion");
reparseCodeSensitiveProperties.Add("DefineConstants"); reparseCodeSensitiveProperties.Add("DefineConstants");
reparseCodeSensitiveProperties.Add("AllowUnsafeBlocks"); reparseCodeSensitiveProperties.Add("AllowUnsafeBlocks");
@ -124,10 +126,10 @@ namespace CSharpBinding
} }
} }
public Properties ExtensionProperties public Properties GlobalPreferences
{ {
get { get {
return extensionProperties; return globalPreferences;
} }
} }
@ -135,17 +137,21 @@ namespace CSharpBinding
{ {
base.ProjectLoaded(); base.ProjectLoaded();
// Load project extensions // Load SD settings file
extensionProperties = Properties.Load(LoadProjectExtensions(ExtensionPropertiesName)); globalSettingsFileName = new FileName(FileName + ".sdsettings");
if (File.Exists(globalSettingsFileName)) {
globalPreferences = Properties.Load(globalSettingsFileName);
}
if (globalPreferences == null)
globalPreferences = new Properties();
} }
public override void Save(string fileName) public override void Save(string fileName)
{ {
// Save project extensions // Save project extensions
if (extensionProperties != null && extensionProperties.IsDirty) { if (globalPreferences != null && globalPreferences.IsDirty) {
var propertiesXElement = extensionProperties.Save(); globalPreferences.Save(new FileName(fileName + ".sdsettings"));
SaveProjectExtensions(ExtensionPropertiesName, propertiesXElement); globalPreferences.IsDirty = false;
extensionProperties.IsDirty = false;
} }
base.Save(fileName); base.Save(fileName);
} }

Loading…
Cancel
Save