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

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

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

Loading…
Cancel
Save