diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user
index dcc6151796..be50c2622a 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj.user
@@ -1,11 +1,10 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
     <ProjectView>ShowAllFiles</ProjectView>
     <ProjectTrust>0</ProjectTrust>
   </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user
index dcc6151796..be50c2622a 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj.user
@@ -1,11 +1,10 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
     <ProjectView>ShowAllFiles</ProjectView>
     <ProjectTrust>0</ProjectTrust>
   </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user
index ea4ea3eecf..a593499377 100644
--- a/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user
+++ b/src/AddIns/DisplayBindings/FormDesigner/Project/FormDesigner.csproj.user
@@ -1,4 +1,9 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LastOpenVersion>8.0.50215</LastOpenVersion>
+    <ProjectView>ShowAllFiles</ProjectView>
+    <ProjectTrust>0</ProjectTrust>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
     <StartAction>Program</StartAction>
@@ -6,9 +11,4 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
-  <PropertyGroup>
-    <LastOpenVersion>8.0.50215</LastOpenVersion>
-    <ProjectView>ShowAllFiles</ProjectView>
-    <ProjectTrust>0</ProjectTrust>
-  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/FormDesignerLoadException.cs b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/FormDesignerLoadException.cs
index 243e9c344f..01ada4570b 100644
--- a/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/FormDesignerLoadException.cs
+++ b/src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/DesignerLoader/FormDesignerLoadException.cs
@@ -1,9 +1,9 @@
-/*
- * Created by SharpDevelop.
- * User: Daniel Grunwald
- * Date: 08.09.2005
- * Time: 17:25
- */
+// <file>
+//     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
+//     <license see="prj:///doc/license.txt">GNU General Public License</license>
+//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
+//     <version>$Revision$</version>
+// </file>
 
 using System;
 using System.Runtime.Serialization;
diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user
index 07c0b3433f..4b01670e0b 100644
--- a/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user
+++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user
@@ -1,6 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
     <ProjectView>ShowAllFiles</ProjectView>
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj.user b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj.user
index 33f1bf7309..6481ba3dcb 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj.user
+++ b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj.user
@@ -1,6 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
   </PropertyGroup>
diff --git a/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user b/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user
index 0fc181ab15..10bfab249e 100644
--- a/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user
+++ b/src/AddIns/Misc/AddinScout/Project/AddinScout.csproj.user
@@ -1,11 +1,10 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
     <ProjectView>ProjectFiles</ProjectView>
     <ProjectTrust>0</ProjectTrust>
   </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj.user b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj.user
index bc57020f7e..a4461a2a13 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj.user
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj.user
@@ -4,5 +4,4 @@
     <ProjectView>ProjectFiles</ProjectView>
     <ProjectTrust>0</ProjectTrust>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Configuration/AssemblyInfo.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Configuration/AssemblyInfo.cs
index 9702f98a54..ce3e16965b 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Configuration/AssemblyInfo.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Configuration/AssemblyInfo.cs
@@ -1,7 +1,7 @@
 // <file>
 //     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
 //     <license see="prj:///doc/license.txt">GNU General Public License</license>
-//     <owner name="David Srbeck?" email="dsrbecky@gmail.com"/>
+//     <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
 //     <version>$Revision$</version>
 // </file>
 
@@ -31,4 +31,3 @@ using System.Runtime.CompilerServices;
 // numbers with the '*' character (the default):
 
 [assembly: AssemblyVersion("2.0.0.1")]
-
diff --git a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user
index 746ae1f782..f45750bf21 100644
--- a/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user
+++ b/src/AddIns/Misc/FiletypeRegisterer/Project/FiletypeRegisterer.csproj.user
@@ -1,6 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.41115</LastOpenVersion>
     <ProjectView>ShowAllFiles</ProjectView>
diff --git a/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user
index 65237b2825..323af28cb7 100644
--- a/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user
+++ b/src/AddIns/Misc/HighlightingEditor/Project/HighlightingEditor.csproj.user
@@ -1,13 +1,13 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LastOpenVersion>8.0.50215</LastOpenVersion>
+    <ProjectView>ShowAllFiles</ProjectView>
+    <ProjectTrust>0</ProjectTrust>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
-  <PropertyGroup>
-    <LastOpenVersion>8.0.50215</LastOpenVersion>
-    <ProjectView>ShowAllFiles</ProjectView>
-    <ProjectTrust>0</ProjectTrust>
-  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj.user b/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj.user
index 7b8f1b2e86..6481ba3dcb 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj.user
+++ b/src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj.user
@@ -1,5 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
   </PropertyGroup>
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs
index cc1ccd42b3..bbf2f9ef8b 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs
@@ -4,6 +4,7 @@
 //     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
 //     <version>$Revision$</version>
 // </file>
+
 namespace HtmlHelp2
 {
 	using System;
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs
index 7e8ed48932..6fa108215a 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs
@@ -4,6 +4,7 @@
 //     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
 //     <version>$Revision$</version>
 // </file>
+
 namespace HtmlHelp2
 {
 	using System;
diff --git a/src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.csproj.user b/src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.csproj.user
index 7b8f1b2e86..6481ba3dcb 100644
--- a/src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.csproj.user
+++ b/src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.csproj.user
@@ -1,5 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
   </PropertyGroup>
diff --git a/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user
index 96135953c3..7a9773926a 100644
--- a/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user
+++ b/src/AddIns/Misc/RegExpTk/Project/RegExpTk.csproj.user
@@ -1,13 +1,13 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LastOpenVersion>8.0.41115</LastOpenVersion>
+    <ProjectView>ShowAllFiles</ProjectView>
+    <ProjectTrust>0</ProjectTrust>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
-  <PropertyGroup>
-    <LastOpenVersion>8.0.41115</LastOpenVersion>
-    <ProjectView>ShowAllFiles</ProjectView>
-    <ProjectTrust>0</ProjectTrust>
-  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/AddIns/Misc/StartPage/Project/StartPage.csproj.user b/src/AddIns/Misc/StartPage/Project/StartPage.csproj.user
index 9cfbe798d4..81b0d14f61 100644
--- a/src/AddIns/Misc/StartPage/Project/StartPage.csproj.user
+++ b/src/AddIns/Misc/StartPage/Project/StartPage.csproj.user
@@ -1,11 +1,10 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.41115</LastOpenVersion>
     <ProjectView>ShowAllFiles</ProjectView>
     <ProjectTrust>0</ProjectTrust>
   </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <StartProgram>..\..\..\..\..\bin\SharpDevelop.exe</StartProgram>
+  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj.user b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj.user
index c439b83dc4..7ff3943f7c 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj.user
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj.user
@@ -1,3 +1 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-</Project>
\ No newline at end of file
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
\ No newline at end of file
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj.user b/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj.user
index 7559fdf5e6..525134e4ab 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj.user
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/ICSharpCode.TextEditor.csproj.user
@@ -1,13 +1,13 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LastOpenVersion>8.0.50215</LastOpenVersion>
+    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectTrust>0</ProjectTrust>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
-  <PropertyGroup>
-    <LastOpenVersion>8.0.50215</LastOpenVersion>
-    <ProjectView>ProjectFiles</ProjectView>
-    <ProjectTrust>0</ProjectTrust>
-  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/Libraries/NRefactory/Project/NRefactory.csproj.user b/src/Libraries/NRefactory/Project/NRefactory.csproj.user
index 54a53d68a8..e8726311fe 100644
--- a/src/Libraries/NRefactory/Project/NRefactory.csproj.user
+++ b/src/Libraries/NRefactory/Project/NRefactory.csproj.user
@@ -1,13 +1,13 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <LastOpenVersion>8.0.41115</LastOpenVersion>
+    <ProjectView>ShowAllFiles</ProjectView>
+    <ProjectTrust>0</ProjectTrust>
+  </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram>
   </PropertyGroup>
-  <PropertyGroup>
-    <LastOpenVersion>8.0.41115</LastOpenVersion>
-    <ProjectView>ShowAllFiles</ProjectView>
-    <ProjectTrust>0</ProjectTrust>
-  </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/src/Libraries/NRefactory/Test/Parser/TypeLevel/CustomEventTests.cs b/src/Libraries/NRefactory/Test/Parser/TypeLevel/CustomEventTests.cs
index 41aa7595ef..e18c77c885 100644
--- a/src/Libraries/NRefactory/Test/Parser/TypeLevel/CustomEventTests.cs
+++ b/src/Libraries/NRefactory/Test/Parser/TypeLevel/CustomEventTests.cs
@@ -1,8 +1,8 @@
 // <file>
 //     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
 //     <license see="prj:///doc/license.txt">GNU General Public License</license>
-//     <owner name="Mike Kr?ger" email="mike@icsharpcode.net"/>
-//     <version>$Revision: 230 $</version>
+//     <owner name="Markus Palme" email="MarkusPalme@gmx.de"/>
+//     <version>$Revision$</version>
 // </file>
 
 using System;
diff --git a/src/Libraries/NUnit.Framework/nunit.framework.dll.csproj b/src/Libraries/NUnit.Framework/nunit.framework.dll.csproj
index dc0270dbd1..f8d68eca5f 100644
--- a/src/Libraries/NUnit.Framework/nunit.framework.dll.csproj
+++ b/src/Libraries/NUnit.Framework/nunit.framework.dll.csproj
@@ -30,9 +30,6 @@
     <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug-Strong|AnyCPU' " />
   <ItemGroup>
     <Reference Include="System">
       <Name>System</Name>
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index f6d6e388f9..3f2c0f2926 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -705,6 +705,7 @@
     <Compile Include="Src\Dom\Implementations\NullReturnType.cs" />
     <Compile Include="Src\Dom\Implementations\AnonymousMethodReturnType.cs" />
     <Compile Include="Src\Project\ConfigurationGuiBinding.cs" />
+    <Compile Include="Src\Project\ChooseStorageLocationButton.cs" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user
index f1a67bbbe4..a4461a2a13 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj.user
@@ -1,6 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
     <ProjectView>ProjectFiles</ProjectView>
diff --git a/src/Main/Base/Project/Src/Gui/Components/StringListEditor.cs b/src/Main/Base/Project/Src/Gui/Components/StringListEditor.cs
index 3d32efa1bf..5029a1fa40 100644
--- a/src/Main/Base/Project/Src/Gui/Components/StringListEditor.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/StringListEditor.cs
@@ -1,9 +1,9 @@
-/*
- * Created by SharpDevelop.
- * User: Daniel Grunwald
- * Date: 17.09.2005
- * Time: 18:31
- */
+// <file>
+//     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
+//     <license see="prj:///doc/license.txt">GNU General Public License</license>
+//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
+//     <version>$Revision$</version>
+// </file>
 
 using System;
 using System.Collections.Generic;
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
index f23ca5ef94..3a2b0ffa3d 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AbstractBuildOptions.cs
@@ -23,7 +23,7 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
 	{
 		protected void InitOutputPath()
 		{
-			helper.BindString("outputPathTextBox", "OutputPath");
+			helper.BindString("outputPathTextBox", "OutputPath").CreateLocationButton("outputPathTextBox");
 			ConnectBrowseFolder("outputPathBrowseButton", "outputPathTextBox", "${res:Dialog.Options.PrjOptions.Configuration.FolderBrowserDescription}");
 		}
 		
diff --git a/src/Main/Base/Project/Src/Project/AbstractProject.cs b/src/Main/Base/Project/Src/Project/AbstractProject.cs
index dc7e62bea4..cf6064b762 100644
--- a/src/Main/Base/Project/Src/Project/AbstractProject.cs
+++ b/src/Main/Base/Project/Src/Project/AbstractProject.cs
@@ -33,19 +33,27 @@ namespace ICSharpCode.SharpDevelop.Project
 		protected string fileName;
 		protected string language;
 		
+		static string GetConfigurationNameFromKey(string key)
+		{
+			return key.Substring(0, key.IndexOf('|'));
+		}
+		
+		static string GetPlatformNameFromKey(string key)
+		{
+			return key.Substring(key.LastIndexOf('|') + 1);
+		}
+		
 		public string[] GetConfigurationNames()
 		{
 			List<string> configurationNames = new List<string>();
 			foreach (string key in configurations.Keys) {
-				int pos = key.IndexOf('|');
-				string configuration = key.Substring(0, pos);
+				string configuration = GetConfigurationNameFromKey(key);
 				if (configuration != "*" && !configurationNames.Contains(configuration)) {
 					configurationNames.Add(configuration);
 				}
 			}
 			foreach (string key in userConfigurations.Keys) {
-				int pos = key.IndexOf('|');
-				string configuration = key.Substring(0, pos);
+				string configuration = GetConfigurationNameFromKey(key);
 				if (configuration != "*" && !configurationNames.Contains(configuration)) {
 					configurationNames.Add(configuration);
 				}
@@ -61,15 +69,13 @@ namespace ICSharpCode.SharpDevelop.Project
 		{
 			List<string> platformNames = new List<string>();
 			foreach (string key in configurations.Keys) {
-				int pos = key.LastIndexOf('|');
-				string platform = key.Substring(pos + 1);
+				string platform = GetPlatformNameFromKey(key);
 				if (platform != "*" && !platformNames.Contains(platform)) {
 					platformNames.Add(platform);
 				}
 			}
 			foreach (string key in userConfigurations.Keys) {
-				int pos = key.LastIndexOf('|');
-				string platform = key.Substring(pos + 1);
+				string platform = GetPlatformNameFromKey(key);
 				if (platform != "*" && !platformNames.Contains(platform)) {
 					platformNames.Add(platform);
 				}
@@ -431,19 +437,21 @@ namespace ICSharpCode.SharpDevelop.Project
 		
 		public virtual void SetProperty<T>(string configurationName, string platform, string property, T value, PropertyStorageLocations location)
 		{
-			// default value is default(T) except for strings, where it is string.Empty
-			T defaultValue = (typeof(T) == typeof(string)) ? (T)(object)string.Empty : default(T);
 			if (location == PropertyStorageLocations.Unchanged) {
 				location = FindProperty(configurationName, platform, property);
 				if (location == PropertyStorageLocations.Unknown) {
 					location = PropertyStorageLocations.Base;
 				}
 			}
-			PropertyGroup baseConfiguration = this.BaseConfiguration;
+			
+			// default value is default(T) except for strings, where it is string.Empty
+			T defaultValue = (typeof(T) == typeof(string)) ? (T)(object)string.Empty : default(T);
+			
+			PropertyGroup baseConfig = this.BaseConfiguration;
 			Dictionary<string, PropertyGroup> configs = this.configurations;
 			if ((location & PropertyStorageLocations.UserFile) == PropertyStorageLocations.UserFile) {
-				baseConfiguration = this.UserBaseConfiguration;
-				configurations = this.userConfigurations;
+				baseConfig = this.UserBaseConfiguration;
+				configs    = this.userConfigurations;
 			}
 			PropertyGroup targetGroup;
 			switch (location & PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
@@ -457,11 +465,51 @@ namespace ICSharpCode.SharpDevelop.Project
 					targetGroup = GetOrCreateGroup(configs, "*|" + platform);
 					break;
 				default:
-					targetGroup = baseConfiguration;
+					targetGroup = baseConfig;
 					break;
 			}
 			if (!targetGroup.IsSet(property)) {
-				RemoveProperty(property, location); // clear property from other groups
+				string oldBaseValue = null;
+				// clear property from other groups
+				if (location != PropertyStorageLocations.Base) {
+					if (BaseConfiguration.IsSet(property)) {
+						oldBaseValue = BaseConfiguration[property];
+						BaseConfiguration.Remove(property);
+					}
+				}
+				if (location != (PropertyStorageLocations.Base | PropertyStorageLocations.UserFile)) {
+					if (UserBaseConfiguration.IsSet(property)) {
+						oldBaseValue = UserBaseConfiguration[property];
+						UserBaseConfiguration.Remove(property);
+					}
+				}
+				if (oldBaseValue != null) {
+					// copy old base value to all configurations
+					string[] configurationNames = GetConfigurationNames();
+					string[] platformNames      = GetPlatformNames();
+					switch (location & PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
+						case PropertyStorageLocations.ConfigurationAndPlatformSpecific:
+							foreach (string cN in configurationNames) {
+								foreach (string pN in platformNames) {
+									GetOrCreateGroup(configs, cN + "|" + pN)[property] = oldBaseValue;
+								}
+							}
+							break;
+						case PropertyStorageLocations.ConfigurationSpecific:
+							foreach (string cN in configurationNames) {
+								GetOrCreateGroup(configs, cN + "|*")[property] = oldBaseValue;
+							}
+							break;
+						case PropertyStorageLocations.PlatformSpecific:
+							foreach (string pN in platformNames) {
+								GetOrCreateGroup(configs, "*|" + pN)[property] = oldBaseValue;
+							}
+							break;
+					}
+				}
+				
+				RemoveProperty(property, location, configurations, configs);
+				RemoveProperty(property, location, userConfigurations, configs);
 			}
 			targetGroup.Set(property, defaultValue, value);
 		}
@@ -476,41 +524,78 @@ namespace ICSharpCode.SharpDevelop.Project
 			return pg;
 		}
 		
-		void RemoveProperty(string property, PropertyStorageLocations except)
+		void RemoveProperty(string property, PropertyStorageLocations newLocation, Dictionary<string, PropertyGroup> configs, Dictionary<string, PropertyGroup> newConfigs)
 		{
-			if (except != PropertyStorageLocations.Base) {
-				if (BaseConfiguration.IsSet(property))
-					BaseConfiguration.Remove(property);
+			newLocation &= PropertyStorageLocations.ConfigurationAndPlatformSpecific;
+			// we could modify the collection inside the loop, so we need to copy it first
+			// to an array to prevent exceptions
+			KeyValuePair<string, PropertyGroup>[] cachedPairs = new KeyValuePair<string, PropertyGroup>[configs.Count];
+			int i = 0;
+			foreach (KeyValuePair<string, PropertyGroup> pair in configs) {
+				cachedPairs[i++] = pair;
 			}
-			if (except != (PropertyStorageLocations.Base | PropertyStorageLocations.UserFile)) {
-				if (UserBaseConfiguration.IsSet(property))
-					UserBaseConfiguration.Remove(property);
+			foreach (KeyValuePair<string, PropertyGroup> pair in cachedPairs) {
+				if (!pair.Value.IsSet(property)) {
+					continue;
+				}
+				PropertyStorageLocations thisLocation = GetLocationFromConfigKey(pair.Key);
+				if (thisLocation == (newLocation & ~PropertyStorageLocations.UserFile)) {
+					if (configs == newConfigs) {
+						// skip if this property group is in "newLocation"
+						continue;
+					} else {
+						// move from project to user (in same location)
+						GetOrCreateGroup(newConfigs, pair.Key)[property] = pair.Value[property];
+					}
+				} else {
+					// in some cases, we want to move settings when the location is changed
+					switch (newLocation & PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
+						case PropertyStorageLocations.ConfigurationAndPlatformSpecific:
+							// copy from this to all new (more specific) configurations
+							if (thisLocation == PropertyStorageLocations.ConfigurationSpecific) {
+								string configName = GetConfigurationNameFromKey(pair.Key);
+								foreach (string pN in GetPlatformNames()) {
+									GetOrCreateGroup(newConfigs, configName + "|" + pN)[property] = pair.Value[property];
+								}
+							} else if (thisLocation == PropertyStorageLocations.PlatformSpecific) {
+								string platformName = GetPlatformNameFromKey(pair.Key);
+								foreach (string cN in GetConfigurationNames()) {
+									GetOrCreateGroup(newConfigs, cN + "|" + platformName)[property] = pair.Value[property];
+								}
+							}
+							break;
+						case PropertyStorageLocations.ConfigurationSpecific:
+							// copy from this configuration|platform to a configuration
+							if (thisLocation == PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
+								string configName = GetConfigurationNameFromKey(pair.Key);
+								PropertyGroup pg = GetOrCreateGroup(newConfigs, configName + "|*");
+								if (!pg.IsSet(property))
+									pg[property] = pair.Value[property];
+							}
+							break;
+						case PropertyStorageLocations.PlatformSpecific:
+							// copy from this configuration|platform to a platform
+							if (thisLocation == PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
+								string platformName = GetPlatformNameFromKey(pair.Key);
+								PropertyGroup pg = GetOrCreateGroup(newConfigs, "*|" + platformName);
+								if (!pg.IsSet(property))
+									pg[property] = pair.Value[property];
+							}
+							break;
+					}
+				}
+				pair.Value.Remove(property);
 			}
-			RemoveProperty(property, except, configurations);
-			RemoveProperty(property, except, userConfigurations);
 		}
 		
-		static void RemoveProperty(string property, PropertyStorageLocations except, Dictionary<string, PropertyGroup> configs)
+		static PropertyStorageLocations GetLocationFromConfigKey(string key)
 		{
-			except &= PropertyStorageLocations.ConfigurationAndPlatformSpecific;
-			foreach (KeyValuePair<string, PropertyGroup> pair in configs) {
-				if (pair.Value.IsSet(property)) {
-					// skip if this property group is in "except"
-					if (pair.Key.StartsWith("*|")) {
-						if (except == PropertyStorageLocations.PlatformSpecific) {
-							continue;
-						}
-					} else if (pair.Key.EndsWith("|*")) {
-						if (except == PropertyStorageLocations.ConfigurationSpecific) {
-							continue;
-						}
-					} else {
-						if (except == PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
-							continue;
-						}
-					}
-					pair.Value.Remove(property);
-				}
+			if (key.StartsWith("*|")) {
+				return PropertyStorageLocations.PlatformSpecific;
+			} else if (key.EndsWith("|*")) {
+				return PropertyStorageLocations.ConfigurationSpecific;
+			} else {
+				return PropertyStorageLocations.ConfigurationAndPlatformSpecific;
 			}
 		}
 		
diff --git a/src/Main/Base/Project/Src/Project/ChooseStorageLocationButton.cs b/src/Main/Base/Project/Src/Project/ChooseStorageLocationButton.cs
new file mode 100644
index 0000000000..7a3144fbd9
--- /dev/null
+++ b/src/Main/Base/Project/Src/Project/ChooseStorageLocationButton.cs
@@ -0,0 +1,147 @@
+// <file>
+//     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
+//     <license see="prj:///doc/license.txt">GNU General Public License</license>
+//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
+//     <version>$Revision$</version>
+// </file>
+
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+using ICSharpCode.Core;
+
+namespace ICSharpCode.SharpDevelop.Project
+{
+	/// <summary>
+	/// Button that can be used to choose the location where a property is stored.
+	/// </summary>
+	public sealed class ChooseStorageLocationButton : Button
+	{
+		ToolStripMenuItem[] menuItems;
+		
+		public ChooseStorageLocationButton()
+		{
+			this.Size = new Size(20, 20);
+			ContextMenuStrip = new ContextMenuStrip();
+			menuItems = new ToolStripMenuItem[] {
+				CreateMenuItem("${res:Dialog.ProjectOptions.ConfigurationSpecific}", PropertyStorageLocations.ConfigurationSpecific),
+				CreateMenuItem("${res:Dialog.ProjectOptions.PlatformSpecific}", PropertyStorageLocations.PlatformSpecific),
+				CreateMenuItem("${res:Dialog.ProjectOptions.StoreInUserFile}", PropertyStorageLocations.UserFile)
+			};
+			ContextMenuStrip.Items.AddRange(menuItems);
+		}
+		
+		ToolStripMenuItem CreateMenuItem(string text, PropertyStorageLocations location)
+		{
+			ToolStripMenuItem item = new ToolStripMenuItem(StringParser.Parse(text));
+			item.CheckOnClick = true;
+			item.CheckedChanged += delegate {
+				if (item.Checked) {
+					StorageLocation |= location;
+				} else {
+					StorageLocation &= ~location;
+				}
+			};
+			return item;
+		}
+		
+		protected override void OnClick(EventArgs e)
+		{
+			base.OnClick(e);
+			ContextMenuStrip.Show(this, new Point(Width / 2, Height / 2));
+		}
+		
+		PropertyStorageLocations storageLocation;
+		public event EventHandler StorageLocationChanged;
+		
+		public PropertyStorageLocations StorageLocation {
+			get {
+				return storageLocation;
+			}
+			set {
+				if ((value & PropertyStorageLocations.ConfigurationAndPlatformSpecific) != 0) {
+					// remove 'Base' flag if any of the specific flags is set
+					if ((value & PropertyStorageLocations.Base) == PropertyStorageLocations.Base) {
+						value &= ~PropertyStorageLocations.Base;
+					}
+				} else {
+					// otherwise, add 'Base' flag
+					value |= PropertyStorageLocations.Base;
+				}
+				if (storageLocation != value) {
+					storageLocation = value;
+					Image oldImage = Image;
+					Image = CreateImage(value);
+					if (oldImage != null) {
+						oldImage.Dispose();
+					}
+					menuItems[0].Checked = (value & PropertyStorageLocations.ConfigurationSpecific) == PropertyStorageLocations.ConfigurationSpecific;
+					menuItems[1].Checked = (value & PropertyStorageLocations.PlatformSpecific) == PropertyStorageLocations.PlatformSpecific;
+					menuItems[2].Checked = (value & PropertyStorageLocations.UserFile) == PropertyStorageLocations.UserFile;
+					if (StorageLocationChanged != null) {
+						StorageLocationChanged(this, EventArgs.Empty);
+					}
+				}
+			}
+		}
+		
+		protected override void Dispose(bool disposing)
+		{
+			base.Dispose(disposing);
+			if (disposing) {
+				Image.Dispose();
+				ContextMenuStrip.Dispose();
+			}
+		}
+		
+		public static Image CreateImage(PropertyStorageLocations location)
+		{
+			Bitmap bmp = new Bitmap(12, 12);
+			using (Graphics g = Graphics.FromImage(bmp)) {
+				g.Clear(Color.Transparent);
+				Brush circleBrush;
+				switch (location & PropertyStorageLocations.ConfigurationAndPlatformSpecific) {
+					case PropertyStorageLocations.ConfigurationSpecific:
+						circleBrush = Brushes.Blue;
+						break;
+					case PropertyStorageLocations.PlatformSpecific:
+						circleBrush = Brushes.Red;
+						break;
+					case PropertyStorageLocations.ConfigurationAndPlatformSpecific:
+						circleBrush = Brushes.Violet;
+						break;
+					default:
+						circleBrush = Brushes.Black;
+						break;
+				}
+				if ((location & PropertyStorageLocations.UserFile) == PropertyStorageLocations.UserFile) {
+					g.FillEllipse(circleBrush, 0, 0, 7, 7);
+					DrawU(g, 7, 5);
+				} else {
+					g.FillEllipse(circleBrush, 2, 2, 8, 8);
+				}
+			}
+			return bmp;
+		}
+		
+		/*
+		static void DrawC(Graphics g, int x, int y)
+		{
+			g.DrawLine(Pens.Red, x + 1, y, x + 4, y);
+			g.DrawLine(Pens.Red, x, y + 1, x, y + 5);
+			g.DrawLine(Pens.Red, x, y + 1, x, y + 5);
+			g.DrawLine(Pens.Red, x + 1, y + 6, x + 4, y + 6);
+		}
+		 */
+		
+		/// <summary>draws the letter 'U'</summary>
+		static void DrawU(Graphics g, int x, int y)
+		{
+			const int width  = 4;
+			const int height = 6;
+			g.DrawLine(Pens.DarkGreen, x, y, x, y + height - 1);
+			g.DrawLine(Pens.DarkGreen, x + width, y, x + width, y + height - 1);
+			g.DrawLine(Pens.DarkGreen, x + 1, y + height, x + width - 1, y + height);
+		}
+	}
+}
diff --git a/src/Main/Base/Project/Src/Project/ConfigurationGuiBinding.cs b/src/Main/Base/Project/Src/Project/ConfigurationGuiBinding.cs
index eb19ab3d04..4ee8f1e069 100644
--- a/src/Main/Base/Project/Src/Project/ConfigurationGuiBinding.cs
+++ b/src/Main/Base/Project/Src/Project/ConfigurationGuiBinding.cs
@@ -8,6 +8,7 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.Drawing;
 using System.Globalization;
 using System.Windows.Forms;
 using ICSharpCode.Core;
@@ -45,7 +46,7 @@ namespace ICSharpCode.SharpDevelop.Project
 		}
 		
 		PropertyStorageLocations defaultLocation = PropertyStorageLocations.Base;
-
+		
 		public PropertyStorageLocations DefaultLocation {
 			get {
 				return defaultLocation;
@@ -55,28 +56,72 @@ namespace ICSharpCode.SharpDevelop.Project
 			}
 		}
 		
-		PropertyStorageLocations location;
+		PropertyStorageLocations location = PropertyStorageLocations.Unknown;
+		ChooseStorageLocationButton storageLocationButton;
 		
 		public PropertyStorageLocations Location {
 			get {
 				return location;
 			}
 			set {
-				location = value;
+				if (location != value) {
+					location = value;
+					if (storageLocationButton != null) {
+						storageLocationButton.StorageLocation = value;
+					}
+					helper.IsDirty = true;
+				}
 			}
 		}
 		
-		public T Get<T>(T defaultValue)
+		public ChooseStorageLocationButton CreateLocationButton()
 		{
-			T result = helper.GetProperty(property, defaultValue, out location);
+			ChooseStorageLocationButton btn = new ChooseStorageLocationButton();
+			this.storageLocationButton = btn;
 			if (location == PropertyStorageLocations.Unknown) {
-				location = defaultLocation;
+				btn.StorageLocation = defaultLocation;
+			} else {
+				btn.StorageLocation = location;
 			}
-			return result;
+			btn.StorageLocationChanged += delegate(object sender, EventArgs e) {
+				this.Location = ((ChooseStorageLocationButton)sender).StorageLocation;
+			};
+			return btn;
+		}
+		
+		/// <summary>
+		/// Moves the control '<paramref name="controlName"/>' a bit to the right and inserts a
+		/// <see cref="ChooseStorageLocationButton"/>.
+		/// </summary>
+		public void CreateLocationButton(string controlName)
+		{
+			CreateLocationButton(Helper.ControlDictionary[controlName]);
+		}
+		
+		/// <summary>
+		/// Moves the <paramref name="replacedControl"/> a bit to the right and inserts a
+		/// <see cref="ChooseStorageLocationButton"/>.
+		/// </summary>
+		public void CreateLocationButton(Control replacedControl)
+		{
+			ChooseStorageLocationButton btn = CreateLocationButton();
+			btn.Location = new Point(replacedControl.Left, replacedControl.Top + (replacedControl.Height - btn.Height) / 2);
+			replacedControl.Left  += btn.Width + 4;
+			replacedControl.Width -= btn.Width + 4;
+			replacedControl.Parent.Controls.Add(btn);
+			replacedControl.Parent.Controls.SetChildIndex(btn, replacedControl.Parent.Controls.IndexOf(replacedControl));
+		}
+		
+		public T Get<T>(T defaultValue)
+		{
+			return helper.GetProperty(property, defaultValue, out location);
 		}
 		
 		public void Set<T>(T value)
 		{
+			if ((location & PropertyStorageLocations.UserFile) != 0) {
+				System.Diagnostics.Debugger.Break();
+			}
 			helper.SetProperty(property, value, location);
 		}
 		
diff --git a/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs b/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs
index eb71e64900..83b4f0145d 100644
--- a/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs
+++ b/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs
@@ -39,6 +39,12 @@ namespace ICSharpCode.SharpDevelop.Project
 			}
 		}
 		
+		internal Dictionary<string, Control> ControlDictionary {
+			get {
+				return controlDictionary;
+			}
+		}
+		
 		#region Manage bindings
 		public T GetProperty<T>(string property, T defaultValue, out PropertyStorageLocations location)
 		{
@@ -431,6 +437,7 @@ namespace ICSharpCode.SharpDevelop.Project
 		#endregion
 		#endregion
 		
+		#region ConfigurationSelector
 		/// <summary>
 		/// Gets the height of the configuration selector in pixel.
 		/// </summary>
@@ -528,5 +535,6 @@ namespace ICSharpCode.SharpDevelop.Project
 				helper.Load();
 			}
 		}
+		#endregion
 	}
 }
diff --git a/src/Main/Base/Project/Src/Project/MSBuildProject.cs b/src/Main/Base/Project/Src/Project/MSBuildProject.cs
index 81d0c2cb88..998eb564ae 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildProject.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildProject.cs
@@ -253,11 +253,16 @@ namespace ICSharpCode.SharpDevelop.Project
 		
 		static void SaveProperties(XmlWriter writer, PropertyGroup baseConfiguration, Dictionary<string, PropertyGroup> configurations)
 		{
-			writer.WriteStartElement("PropertyGroup");
-			baseConfiguration.WriteProperties(writer);
-			writer.WriteEndElement();
-			
+			if (baseConfiguration.PropertyCount > 0) {
+				writer.WriteStartElement("PropertyGroup");
+				baseConfiguration.WriteProperties(writer);
+				writer.WriteEndElement();
+			}
 			foreach (KeyValuePair<string, PropertyGroup> entry in configurations) {
+				// Skip empty groups
+				if (entry.Value.PropertyCount == 0) {
+					continue;
+				}
 				writer.WriteStartElement("PropertyGroup");
 				if (entry.Key.StartsWith("*|")) {
 					writer.WriteAttributeString("Condition", " '$(Platform)' == '" + entry.Key.Substring(2) + "' ");
@@ -273,7 +278,12 @@ namespace ICSharpCode.SharpDevelop.Project
 		
 		static void SaveUnknownXmlSections(XmlWriter writer, List<string> unknownElements)
 		{
-			
+			foreach (string element in unknownElements) {
+				// round-trip xml text again for better formatting
+				XmlReader reader = new XmlTextReader(new StringReader(element));
+				writer.WriteNode(reader, false);
+				reader.Close();
+			}
 		}
 		#endregion
 		
diff --git a/src/Main/Base/Project/Src/Services/ParserService/DefaultProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/DefaultProjectContent.cs
index d9ee38ddbb..ecb9e00128 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/DefaultProjectContent.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/DefaultProjectContent.cs
@@ -33,6 +33,10 @@ namespace ICSharpCode.Core
 	{
 		List<IProjectContent> referencedContents = new List<IProjectContent>();
 		
+		// we use a list of Dictionaries because we need multiple dictionaries:
+		// each uses another StringComparer
+		// (C#: StringComparer.InvariantCulture, VB: StringComparer.InvariantCultureCaseInsensitive)
+		// new dictionaries are added to the list when required
 		List<Dictionary<string, IClass>> classLists = new List<Dictionary<string, IClass>>();
 		List<Dictionary<string, NamespaceStruct>> namespaces = new List<Dictionary<string, NamespaceStruct>>();
 		protected XmlDoc xmlDoc = new XmlDoc();
diff --git a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/BoyerMooreSearchStrategy.cs b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/BoyerMooreSearchStrategy.cs
index a8f29f4962..40f561e01a 100644
--- a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/BoyerMooreSearchStrategy.cs
+++ b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchStrategy/BoyerMooreSearchStrategy.cs
@@ -1,7 +1,7 @@
-// <file>
+// <file>
 //     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
 //     <license see="prj:///doc/license.txt">GNU General Public License</license>
-//     <owner name="Mike Kr�ger" email="mike@icsharpcode.net"/>
+//     <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
 //     <version>$Revision$</version>
 // </file>
 
@@ -134,4 +134,3 @@ namespace SearchAndReplace
 		}
 	}
 }
-
diff --git a/src/Main/Core/Project/ICSharpCode.Core.csproj.user b/src/Main/Core/Project/ICSharpCode.Core.csproj.user
index 07c0b3433f..4b01670e0b 100644
--- a/src/Main/Core/Project/ICSharpCode.Core.csproj.user
+++ b/src/Main/Core/Project/ICSharpCode.Core.csproj.user
@@ -1,6 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.50215</LastOpenVersion>
     <ProjectView>ShowAllFiles</ProjectView>
diff --git a/src/Main/Core/Project/Src/Util/ClipboardWrapper.cs b/src/Main/Core/Project/Src/Util/ClipboardWrapper.cs
index 4c06870d22..53b1ca2577 100644
--- a/src/Main/Core/Project/Src/Util/ClipboardWrapper.cs
+++ b/src/Main/Core/Project/Src/Util/ClipboardWrapper.cs
@@ -1,9 +1,9 @@
-/*
- * Created by SharpDevelop.
- * User: Daniel Grunwald
- * Date: 24.08.2005
- * Time: 11:38
- */
+// <file>
+//     <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
+//     <license see="prj:///doc/license.txt">GNU General Public License</license>
+//     <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
+//     <version>$Revision$</version>
+// </file>
 
 using System;
 using System.Windows.Forms;
diff --git a/src/Main/StartUp/Project/StartUp.csproj.user b/src/Main/StartUp/Project/StartUp.csproj.user
index 87e9a3ad41..e1d33e369a 100644
--- a/src/Main/StartUp/Project/StartUp.csproj.user
+++ b/src/Main/StartUp/Project/StartUp.csproj.user
@@ -1,6 +1,4 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
   <PropertyGroup>
     <LastOpenVersion>8.0.41115</LastOpenVersion>
     <ProjectView>ProjectFiles</ProjectView>
diff --git a/src/Tools/CheckFileHeaders/Main.cs b/src/Tools/CheckFileHeaders/Main.cs
index 15f29c9c66..92a407a4f2 100644
--- a/src/Tools/CheckFileHeaders/Main.cs
+++ b/src/Tools/CheckFileHeaders/Main.cs
@@ -68,6 +68,8 @@ namespace CheckFileHeaders
 					continue;
 				if (subdir.EndsWith("AddIns\\Misc\\ProjectImporterExporter\\Project"))
 					continue;
+				if (subdir.EndsWith(@"AddIns\Misc\Debugger\Debugger.Core\Project\Src\DebuggerInterop\Core"))
+					continue;
 				count += Run(subdir);
 			}
 			return count;