Browse Source

WIP: new NRefactory

ICSharpCode.SharpDevelop.dll now compiles again, though with tons of commented-out code.
Most AddIns removed from solution, and still plenty of compiler errors left in the remaining AddIns.
newNRvisualizers
Daniel Grunwald 14 years ago
parent
commit
9c244880fb
  1. 741
      SharpDevelop.sln
  2. 11
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  3. 316
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBackgroundCompiler.cs
  4. 27
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
  5. 10
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
  6. 5
      src/AddIns/DisplayBindings/SettingsEditor/Project/SettingsEditor.csproj
  7. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs
  8. 10
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj
  9. 5
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj
  10. 10
      src/AddIns/Misc/ResourceToolkit/Project/ResourceToolkit.csproj
  11. 7
      src/AddIns/Misc/SearchAndReplace/Project/Engine/DocumentIterator/DirectoryDocumentIterator.cs
  12. 7
      src/AddIns/Misc/SearchAndReplace/Project/Engine/DocumentIterator/WholeProjectDocumentIterator.cs
  13. 7
      src/AddIns/Misc/SearchAndReplace/Project/Engine/DocumentIterator/WholeSolutionDocumentIterator.cs
  14. 5
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchReplaceManager.cs
  15. 2
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchReplaceUtilities.cs
  16. 1
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/BruteForceSearchStrategy.cs
  17. 1
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/WildcardSearchStrategy.cs
  18. 2
      src/AddIns/Misc/SearchAndReplace/Project/Engine/TextIterator/ForwardTextIterator.cs
  19. 2
      src/AddIns/Misc/SearchAndReplace/Project/Engine/TextIterator/ITextIterator.cs
  20. 9
      src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchResultNode.cs
  21. 11
      src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj
  22. 10
      src/AddIns/Misc/SharpRefactoring/Project/SharpRefactoring.csproj
  23. 5
      src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj
  24. 1
      src/Libraries/NRefactory/ICSharpCode.NRefactory/CSharp/Analysis/DefiniteAssignmentAnalysis.cs
  25. 2
      src/Libraries/NRefactory/ICSharpCode.NRefactory/ICSharpCode.NRefactory.csproj
  26. 7
      src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/MinimalResolveContext.cs
  27. 5
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  28. 3
      src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionBinding.cs
  29. 13
      src/Main/Base/Project/Src/Editor/Commands/PasteAsCommands.cs
  30. 4
      src/Main/Base/Project/Src/Editor/Search/SearchResultMatch.cs
  31. 93
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs
  32. 19
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs
  33. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ReferenceFolderNodeCommands.cs
  34. 1
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
  35. 76
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  36. 17
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  37. 46
      src/Main/Base/Project/Src/Project/CustomTool.cs
  38. 71
      src/Main/Base/Project/Src/Project/IProject.cs
  39. 57
      src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs
  40. 14
      src/Main/Base/Project/Src/Services/AmbienceService/CSharpAmbience.cs
  41. 83
      src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs
  42. 15
      src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
  43. 3
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  44. 2
      src/Main/Base/Project/Src/Services/File/FileService.cs
  45. 2
      src/Main/Base/Project/Src/Services/File/OpenedFile.cs
  46. 26
      src/Main/Base/Project/Src/Services/ParserService/AssemblyParserService.cs
  47. 218
      src/Main/Base/Project/Src/Services/ParserService/Fusion.cs
  48. 110
      src/Main/Base/Project/Src/Services/ParserService/GacInterop.cs
  49. 153
      src/Main/Base/Project/Src/Services/ParserService/LoadSolutionProjects.cs
  50. 18
      src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventArgs.cs
  51. 223
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  52. 13
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

741
SharpDevelop.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.1.0.7638-alpha
# SharpDevelop 4.1.0.7800-beta
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -38,16 +38,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentati @@ -38,16 +38,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentati
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "src\Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "src\Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "src\Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
@ -67,8 +57,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src @@ -67,8 +57,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "src\Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
@ -96,213 +84,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278 @@ -96,213 +84,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQualityAnalysis", "src\AddIns\Analysis\CodeQuality\CodeQualityAnalysis.csproj", "{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Analysis\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Analysis\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Analysis\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C7F29FC2-1B03-4CDD-9E30-400F4765FF04}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core\ICSharpCode.Data.Core.csproj", "{B7823AE9-4B43-4859-8796-2EBDC116FBB8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core.UI\ICSharpCode.Data.Core.UI.csproj", "{BAD94D6E-4159-4CB6-B991-486F412D9BB6}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.EDMDesigner.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core\ICSharpCode.Data.EDMDesigner.Core.csproj", "{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.EDMDesigner.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core.UI\ICSharpCode.Data.EDMDesigner.Core.UI.csproj", "{EEF5E054-4192-4A57-8FBF-E860D808A51D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpyAddIn", "src\AddIns\Misc\ILSpyAddIn\ILSpyAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{DEFC8584-BEC3-4921-BD0F-40482E450B7B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector.AddIn", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.AddIn\UsageDataCollector.AddIn.csproj", "{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "src\AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "src\AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "src\AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "src\AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "src\AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
@ -313,109 +112,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\Add @@ -313,109 +112,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\Add
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\Project\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelpViewer", "src\AddIns\Misc\HelpViewer\HelpViewer.csproj", "{80F76D10-0B44-4D55-B4BD-DAEB5464090C}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PackageManagement", "PackageManagement", "{50B51AAA-80E3-4C4A-8B2D-CAF440A82B78}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement.PowerShell", "src\AddIns\Misc\PackageManagement\PowerShell\Project\PackageManagement.PowerShell.csproj", "{A406803B-C584-43A3-BCEE-A0BB3132CB5F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement", "src\AddIns\Misc\PackageManagement\Project\PackageManagement.csproj", "{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageManagement.Cmdlets", "src\AddIns\Misc\PackageManagement\Cmdlets\Project\PackageManagement.Cmdlets.csproj", "{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextTemplating", "src\AddIns\Misc\TextTemplating\Project\TextTemplating.csproj", "{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Scripting", "src\AddIns\BackendBindings\Scripting\Project\ICSharpCode.Scripting.csproj", "{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSharpBinding", "src\AddIns\BackendBindings\FSharpBinding\FSharpBinding.csproj", "{E954F3CB-A446-492F-A664-2B376EBC86E8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CppBinding", "src\AddIns\BackendBindings\CppBinding\CppBinding\CppBinding.csproj", "{70966F84-74C9-4067-A379-0C674A929233}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ruby", "Ruby", "{C7288E72-FFBE-48CD-84B4-6CBF95A7195A}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RubyBinding", "src\AddIns\BackendBindings\Ruby\RubyBinding\Project\RubyBinding.csproj", "{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reports", "Reports", "{8789D7FF-B36C-4187-B57D-55ED64623272}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Irony", "src\AddIns\Misc\Reports\Irony\Irony.csproj", "{D81F5C91-D7DB-46E5-BC99-49488FB6814C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Core", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Core\ICSharpCode.Reports.Core.csproj", "{4B2239FF-8FD6-431D-9D22-1B8049BA6917}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Addin", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Addin\ICSharpCode.Reports.Addin.csproj", "{35D002D7-C78B-44FB-92AA-104BEB431678}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Version Control", "Version Control", "{F208FF4F-E5D8-41D5-A7C7-B463976F156E}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -484,34 +189,10 @@ Global @@ -484,34 +189,10 @@ Global
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Any CPU.Build.0 = Release|Any CPU
{E73BB233-D88B-44A7-A98F-D71EE158381D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E73BB233-D88B-44A7-A98F-D71EE158381D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E73BB233-D88B-44A7-A98F-D71EE158381D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E73BB233-D88B-44A7-A98F-D71EE158381D}.Release|Any CPU.Build.0 = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Any CPU.Build.0 = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|Any CPU.Build.0 = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|Any CPU.Build.0 = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Any CPU.Build.0 = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Any CPU.Build.0 = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Any CPU.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -520,174 +201,22 @@ Global @@ -520,174 +201,22 @@ Global
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Any CPU.Build.0 = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|Any CPU.Build.0 = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Any CPU.Build.0 = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Any CPU.Build.0 = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|Any CPU.Build.0 = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Any CPU.Build.0 = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|Any CPU.Build.0 = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|Any CPU.Build.0 = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|Any CPU.Build.0 = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|Any CPU.Build.0 = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Any CPU.Build.0 = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|Any CPU.Build.0 = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Any CPU.Build.0 = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Any CPU.Build.0 = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Any CPU.Build.0 = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Any CPU.Build.0 = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|Any CPU.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Any CPU.Build.0 = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|Any CPU.Build.0 = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.Build.0 = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Any CPU.Build.0 = Release|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4980B743-B32F-4ABA-AABD-45E2CAD3568D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4980B743-B32F-4ABA-AABD-45E2CAD3568D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4ABA-AABD-45E2CAD3568D}.Release|Any CPU.Build.0 = Release|Any CPU
{4980B743-B32F-4ABA-AABD-45E2CAD3568D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.Build.0 = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|Any CPU.Build.0 = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|Any CPU.Build.0 = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|Any CPU.Build.0 = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|Any CPU.Build.0 = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|Any CPU.Build.0 = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|Any CPU.Build.0 = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|Any CPU.Build.0 = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|Any CPU.Build.0 = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|Any CPU.Build.0 = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|Any CPU.Build.0 = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|Any CPU.Build.0 = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Any CPU.Build.0 = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Any CPU.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Any CPU.Build.0 = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|Any CPU.Build.0 = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|Win32.Build.0 = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|Any CPU.Build.0 = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|Win32.Build.0 = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|Win32.ActiveCfg = Release|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Debug|Win32.Build.0 = Debug|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Debug|x86.Build.0 = Debug|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Debug|x86.ActiveCfg = Debug|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Release|Any CPU.Build.0 = Release|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Release|Win32.Build.0 = Release|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Release|Win32.ActiveCfg = Release|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Release|x86.Build.0 = Release|Any CPU
{E954F3CB-A446-492F-A664-2B376EBC86E8}.Release|x86.ActiveCfg = Release|Any CPU
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}.Debug|Win32.Build.0 = Debug|Any CPU
@ -712,98 +241,6 @@ Global @@ -712,98 +241,6 @@ Global
{B5F54272-49F0-40DB-845A-8D837875D3BA}.Release|Win32.ActiveCfg = Release|x86
{B5F54272-49F0-40DB-845A-8D837875D3BA}.Release|x86.Build.0 = Release|x86
{B5F54272-49F0-40DB-845A-8D837875D3BA}.Release|x86.ActiveCfg = Release|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Debug|Any CPU.Build.0 = Debug|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Debug|Any CPU.ActiveCfg = Debug|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Debug|Win32.Build.0 = Debug|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Debug|Win32.ActiveCfg = Debug|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Debug|x86.Build.0 = Debug|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Debug|x86.ActiveCfg = Debug|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Release|Any CPU.Build.0 = Release|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Release|Any CPU.ActiveCfg = Release|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Release|Win32.Build.0 = Release|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Release|Win32.ActiveCfg = Release|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Release|x86.Build.0 = Release|x86
{80F76D10-0B44-4D55-B4BD-DAEB5464090C}.Release|x86.ActiveCfg = Release|x86
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|Any CPU.Build.0 = Debug|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|Any CPU.ActiveCfg = Debug|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|Win32.Build.0 = Debug|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|Win32.ActiveCfg = Debug|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|x86.Build.0 = Debug|x86
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|x86.ActiveCfg = Debug|x86
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|Any CPU.Build.0 = Release|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|Any CPU.ActiveCfg = Release|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|Win32.Build.0 = Release|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|Win32.ActiveCfg = Release|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|x86.Build.0 = Release|x86
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|x86.ActiveCfg = Release|x86
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|Debug.Build.0 = Debug|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Debug|Debug.ActiveCfg = Debug|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|Debug.Build.0 = Release|Debug
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}.Release|Debug.ActiveCfg = Release|Debug
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|Win32.Build.0 = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|x86.Build.0 = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|x86.ActiveCfg = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|Debug.Build.0 = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Debug|Debug.ActiveCfg = Debug|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|Any CPU.Build.0 = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|Win32.Build.0 = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|Win32.ActiveCfg = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|x86.Build.0 = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|x86.ActiveCfg = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|Debug.Build.0 = Release|Any CPU
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}.Release|Debug.ActiveCfg = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|Win32.Build.0 = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|x86.Build.0 = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|x86.ActiveCfg = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|Debug.Build.0 = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Debug|Debug.ActiveCfg = Debug|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|Any CPU.Build.0 = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|Win32.Build.0 = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|Win32.ActiveCfg = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|x86.Build.0 = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|x86.ActiveCfg = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|Debug.Build.0 = Release|Any CPU
{D81F5C91-D7DB-46E5-BC99-49488FB6814C}.Release|Debug.ActiveCfg = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|Win32.Build.0 = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|x86.Build.0 = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|x86.ActiveCfg = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|Debug.Build.0 = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Debug|Debug.ActiveCfg = Debug|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|Any CPU.Build.0 = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|Win32.Build.0 = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|Win32.ActiveCfg = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|x86.Build.0 = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|x86.ActiveCfg = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|Debug.Build.0 = Release|Any CPU
{4B2239FF-8FD6-431D-9D22-1B8049BA6917}.Release|Debug.ActiveCfg = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|Win32.Build.0 = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|Win32.ActiveCfg = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|x86.Build.0 = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|x86.ActiveCfg = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|Debug.Build.0 = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Debug|Debug.ActiveCfg = Debug|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|Any CPU.Build.0 = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|Win32.Build.0 = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|Win32.ActiveCfg = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|x86.Build.0 = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|x86.ActiveCfg = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|Debug.Build.0 = Release|Any CPU
{35D002D7-C78B-44FB-92AA-104BEB431678}.Release|Debug.ActiveCfg = Release|Any CPU
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}.Debug|Win32.Build.0 = Debug|Any CPU
@ -836,70 +273,6 @@ Global @@ -836,70 +273,6 @@ Global
{83F15BA7-8478-4664-81BB-A82F146D88B3}.Release|x86.ActiveCfg = Release|Any CPU
{83F15BA7-8478-4664-81BB-A82F146D88B3}.Release|Debug.Build.0 = Release|Any CPU
{83F15BA7-8478-4664-81BB-A82F146D88B3}.Release|Debug.ActiveCfg = Release|Any CPU
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Any CPU.Build.0 = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Any CPU.ActiveCfg = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Win32.Build.0 = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Win32.ActiveCfg = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|x86.Build.0 = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|x86.ActiveCfg = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Debug.Build.0 = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Debug.ActiveCfg = Debug|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.Build.0 = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.ActiveCfg = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Win32.Build.0 = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Win32.ActiveCfg = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|x86.Build.0 = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|x86.ActiveCfg = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Debug.Build.0 = Release|x86
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Debug.ActiveCfg = Release|x86
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|Win32.Build.0 = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|x86.Build.0 = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|x86.ActiveCfg = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|Debug.Build.0 = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Debug|Debug.ActiveCfg = Debug|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|Any CPU.Build.0 = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|Win32.Build.0 = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|Win32.ActiveCfg = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|x86.Build.0 = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|x86.ActiveCfg = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|Debug.Build.0 = Release|Any CPU
{85226AFB-CE71-4851-9A75-7EEC663A8E8A}.Release|Debug.ActiveCfg = Release|Any CPU
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|Any CPU.Build.0 = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|Any CPU.ActiveCfg = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|Win32.Build.0 = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|Win32.ActiveCfg = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|x86.Build.0 = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|x86.ActiveCfg = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|Debug.Build.0 = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Debug|Debug.ActiveCfg = Debug|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Any CPU.Build.0 = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Any CPU.ActiveCfg = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Win32.Build.0 = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Win32.ActiveCfg = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|x86.Build.0 = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|x86.ActiveCfg = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Debug.Build.0 = Release|x86
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1}.Release|Debug.ActiveCfg = Release|x86
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|Win32.Build.0 = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|x86.Build.0 = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|x86.ActiveCfg = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|Debug.Build.0 = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Debug|Debug.ActiveCfg = Debug|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|Any CPU.Build.0 = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|Win32.Build.0 = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|Win32.ActiveCfg = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|x86.Build.0 = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|x86.ActiveCfg = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|Debug.Build.0 = Release|Any CPU
{8AA421C8-D7AF-4957-9F43-5135328ACB24}.Release|Debug.ActiveCfg = Release|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.Build.0 = net_2_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.ActiveCfg = net_4_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Win32.Build.0 = net_2_0_Debug|Any CPU
@ -916,54 +289,6 @@ Global @@ -916,54 +289,6 @@ Global
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|x86.ActiveCfg = net_4_0_Release|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Debug.Build.0 = net_2_0_Debug|Any CPU
{D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Debug.ActiveCfg = net_4_0_Release|Any CPU
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|Any CPU.Build.0 = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|Any CPU.ActiveCfg = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|Win32.Build.0 = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|Win32.ActiveCfg = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|x86.Build.0 = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|x86.ActiveCfg = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|Debug.Build.0 = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Debug|Debug.ActiveCfg = Debug|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|Any CPU.Build.0 = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|Any CPU.ActiveCfg = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|Win32.Build.0 = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|Win32.ActiveCfg = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|x86.Build.0 = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|x86.ActiveCfg = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|Debug.Build.0 = Release|x86
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D}.Release|Debug.ActiveCfg = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|Any CPU.Build.0 = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|Any CPU.ActiveCfg = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|Win32.Build.0 = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|Win32.ActiveCfg = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|x86.Build.0 = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|x86.ActiveCfg = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|Debug.Build.0 = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Debug|Debug.ActiveCfg = Debug|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|Any CPU.Build.0 = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|Any CPU.ActiveCfg = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|Win32.Build.0 = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|Win32.ActiveCfg = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|x86.Build.0 = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|x86.ActiveCfg = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|Debug.Build.0 = Release|x86
{A406803B-C584-43A3-BCEE-A0BB3132CB5F}.Release|Debug.ActiveCfg = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|Any CPU.Build.0 = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|Any CPU.ActiveCfg = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|Win32.Build.0 = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|Win32.ActiveCfg = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|x86.Build.0 = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|x86.ActiveCfg = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|Debug.Build.0 = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Debug|Debug.ActiveCfg = Debug|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|Any CPU.Build.0 = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|Any CPU.ActiveCfg = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|Win32.Build.0 = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|Win32.ActiveCfg = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|x86.Build.0 = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|x86.ActiveCfg = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|Debug.Build.0 = Release|x86
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF}.Release|Debug.ActiveCfg = Release|x86
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}.Debug|Win32.Build.0 = Debug|Any CPU
@ -1003,8 +328,6 @@ Global @@ -1003,8 +328,6 @@ Global
GlobalSection(NestedProjects) = preSolution
{B5F54272-49F0-40DB-845A-8D837875D3BA} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
@ -1017,80 +340,18 @@ Global @@ -1017,80 +340,18 @@ Global
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{F054A788-B591-4561-A8BA-AE745BBEB817} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{F208FF4F-E5D8-41D5-A7C7-B463976F156E} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{8789D7FF-B36C-4187-B57D-55ED64623272} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {F355E45F-F54F-4B42-8916-9A633A392789}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {F355E45F-F54F-4B42-8916-9A633A392789}
{08CE9972-283B-44F4-82FA-966F7DFA6B7A} = {F355E45F-F54F-4B42-8916-9A633A392789}
{CE498514-D12D-4B6E-AE0E-FEC29BD43748} = {F355E45F-F54F-4B42-8916-9A633A392789}
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3} = {F355E45F-F54F-4B42-8916-9A633A392789}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{C7F29FC2-1B03-4CDD-9E30-400F4765FF04} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{BFA3BF26-33BD-4A65-B84D-C7F30D131668} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{B5D8C3E6-42EC-4D4B-AD05-3644B32563EF} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{50B51AAA-80E3-4C4A-8B2D-CAF440A82B78} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{80F76D10-0B44-4D55-B4BD-DAEB5464090C} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{DEFC8584-BEC3-4921-BD0F-40482E450B7B} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{E0A5E80A-003B-4335-A9DC-A76E2E46D38D} = {50B51AAA-80E3-4C4A-8B2D-CAF440A82B78}
{AE4AB0FA-6087-4480-AF37-0FA1452B3DA1} = {50B51AAA-80E3-4C4A-8B2D-CAF440A82B78}
{A406803B-C584-43A3-BCEE-A0BB3132CB5F} = {50B51AAA-80E3-4C4A-8B2D-CAF440A82B78}
{C7288E72-FFBE-48CD-84B4-6CBF95A7195A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{70966F84-74C9-4067-A379-0C674A929233} = {E0646C25-36F2-4524-969F-FA621353AB94}
{CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E954F3CB-A446-492F-A664-2B376EBC86E8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD} = {E0646C25-36F2-4524-969F-FA621353AB94}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4} = {C7288E72-FFBE-48CD-84B4-6CBF95A7195A}
{35D002D7-C78B-44FB-92AA-104BEB431678} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{4B2239FF-8FD6-431D-9D22-1B8049BA6917} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{D81F5C91-D7DB-46E5-BC99-49488FB6814C} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{83F15BA7-8478-4664-81BB-A82F146D88B3} = {F208FF4F-E5D8-41D5-A7C7-B463976F156E}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F208FF4F-E5D8-41D5-A7C7-B463976F156E}
EndGlobalSection

11
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

@ -59,7 +59,6 @@ @@ -59,7 +59,6 @@
<EmbeddedResource Include="Resources\BuildOptions.xfrm" />
<EmbeddedResource Include="Resources\MyNamespaceSupportForCSharp.cs" />
<Compile Include="Src\CSharpAdvancedHighlighter.cs" />
<Compile Include="Src\CSharpBackgroundCompiler.cs" />
<Compile Include="Src\CSharpBracketSearcher.cs" />
<Compile Include="Src\CSharpLanguageBinding.cs" />
<Compile Include="Src\CSharpProjectBinding.cs" />
@ -89,11 +88,6 @@ @@ -89,11 +88,6 @@
<Name>ICSharpCode.AvalonEdit</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -109,11 +103,6 @@ @@ -109,11 +103,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

316
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBackgroundCompiler.cs

@ -1,316 +0,0 @@ @@ -1,316 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.PrettyPrinter;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Util;
using Ast = ICSharpCode.NRefactory.Ast;
using Compiler = System.CodeDom.Compiler;
using Util = Microsoft.Build.Utilities;
namespace CSharpBinding
{
/// <summary>
/// Description of CSharpBackgroundCompiler.
/// </summary>
public class CSharpBackgroundCompiler
{
static WorkerThread worker;
static Thread thread;
static IAsyncResult currentWork;
static bool init;
public static void Init()
{
if (init)
return;
init = true;
worker = new WorkerThread();
thread = new Thread(
delegate() {
LoggingService.Info("start background compiler");
worker.RunLoop();
}
);
thread.IsBackground = true;
thread.Name = "CSBackgroundCompiler";
ParserService.ParserUpdateStepFinished += delegate {
if (WorkbenchSingleton.Workbench.ActiveViewContent == null)
return;
if (ParserService.LoadSolutionProjectsThreadRunning)
return;
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (provider == null)
return;
ParseInformation parseInfo = ParserService.GetExistingParseInformation(provider.TextEditor.FileName);
if (parseInfo == null)
return;
string fileName = provider.TextEditor.FileName;
string fileContent = provider.TextEditor.Document.Text;
IProjectContent pc = parseInfo.CompilationUnit.ProjectContent;
if (currentWork == null)
thread.Start();
if (currentWork == null || currentWork.IsCompleted)
currentWork = worker.Enqueue(() => RunCompile(fileName, fileContent, pc));
};
}
static void RunCompile(string openedFileName, string openedFileContent, IProjectContent pc)
{
var codeProvider = pc.Language.CodeDomProvider;
if (codeProvider == null)
return;
string fileContent1 = CreateLineMarker(1, openedFileName) + "\n" + openedFileContent;
StringWriter writer = new StringWriter();
Stopwatch watch = new Stopwatch();
watch.Start();
WriteClasses(pc, writer, openedFileName);
watch.Stop();
Console.WriteLine("WriteClasses for {0} took {1}ms", (pc.Project as IProject).Name, watch.ElapsedMilliseconds);
watch.Restart();
Compiler.CompilerResults cr = codeProvider.CompileAssemblyFromSource(GetParameters(pc.Project as CompilableProject), fileContent1, writer.ToString());
watch.Stop();
writer.Close();
var errors = cr.Errors.OfType<Compiler.CompilerError>().ToArray();
Console.WriteLine("CompileFile for {0} took {1}ms", (pc.Project as IProject).Name, watch.ElapsedMilliseconds);
WorkbenchSingleton.SafeThreadAsyncCall(
delegate() {
List<Task> tasks = new List<Task>();
foreach (Compiler.CompilerError e in errors) {
tasks.Add(new Task(string.IsNullOrEmpty(e.FileName) ? null : new FileName(e.FileName), e.ErrorText + " (" + e.ErrorNumber + ")", e.Column, e.Line, e.IsWarning ? TaskType.Warning : TaskType.Error));
}
TaskService.ClearExceptCommentTasks();
TaskService.AddRange(tasks);
}
);
}
static Compiler.CompilerParameters GetParameters(CompilableProject project)
{
Compiler.CompilerParameters p = new Compiler.CompilerParameters();
var items = project.GetItemsOfType(ItemType.Reference)
.OfType<ReferenceProjectItem>()
.Select(item => item.FileName)
.Concat(
project.GetItemsOfType(ItemType.ProjectReference)
.OfType<ProjectReferenceProjectItem>()
.Select(item => item.ReferencedProject.OutputAssemblyFullPath)
);
TargetFramework tf = project.CurrentTargetFramework;
if (tf == null)
throw new InvalidOperationException();
p.CompilerOptions = "/nostdlib /unsafe";
p.GenerateInMemory = true;
p.ReferencedAssemblies.AddRange(items.ToArray());
string mscorlib = GetMscorlibPath(tf);
if (mscorlib != null)
p.ReferencedAssemblies.Add(mscorlib);
if (IsGreaterThan(Util.TargetDotNetFrameworkVersion.Version35, VersionForString(tf.Name)) &&
!p.ReferencedAssemblies.OfType<string>().Any(s => s.Contains("System.Core.dll")))
p.ReferencedAssemblies.Add("System.Core.dll");
return p;
}
static string CreateLineMarker(int line, string filename)
{
return string.Format("#line {0} \"{1}\"", line, filename.Replace("\\", "\\\\"));
}
static string GetMscorlibPath(TargetFramework tf)
{
while (tf != null) {
string path = Path.Combine(Util.ToolLocationHelper.GetPathToDotNetFramework(VersionForString(tf.Name)), "mscorlib.dll");
if (File.Exists(path))
return path;
tf = tf.BasedOn;
}
return null;
}
static Util.TargetDotNetFrameworkVersion VersionForString(string name)
{
switch (name) {
case "v1.1":
return Util.TargetDotNetFrameworkVersion.Version11;
case "v2.0":
return Util.TargetDotNetFrameworkVersion.Version20;
case "v3.0":
return Util.TargetDotNetFrameworkVersion.Version30;
case "v3.5":
return Util.TargetDotNetFrameworkVersion.Version35;
case "v4.0":
return Util.TargetDotNetFrameworkVersion.Version40;
}
return Util.TargetDotNetFrameworkVersion.VersionLatest;
}
static void WriteClasses(IProjectContent content, TextWriter writer, string excludeFilename)
{
writer.WriteLine("#pragma warning disable");
writer.WriteLine("using System;");
foreach (IClass c in content.Classes) {
CompoundClass cc = c as CompoundClass;
if (cc != null) {
foreach (IClass part in cc.Parts)
WriteClass(part, cc, content.Project as IProject, writer, excludeFilename);
} else {
WriteClass(c, null, content.Project as IProject, writer, excludeFilename);
}
}
writer.Write("\n#pragma warning restore\n");
}
static string[] allowedAttributes = {
"System.ObsoleteAttribute",
"System.Diagnostics.ConditionalAttribute",
"System.CLSCompliantAttribute",
"System.Runtime.CompilerServices.ExtensionAttribute" // required for extension methods
};
static void WriteClass(IClass c, IClass compound, IProject project, TextWriter writer, string excludeFilename)
{
if (FileUtility.IsEqualFileName(excludeFilename, c.CompilationUnit.FileName))
return;
if (project != null) {
FileProjectItem file = project.FindFile(c.CompilationUnit.FileName);
if (file == null || file.BuildAction != "Compile")
return;
}
Ast.AttributedNode type = CodeGenerator.ConvertClass(c, null);
CleanType(type);
if (compound != null)
type.Modifier = CodeGenerator.ConvertModifier(compound.Modifiers, null);
CSharpOutputVisitor output = new CSharpOutputVisitor();
type.AcceptVisitor(output, null);
// TODO : add fine grained mappings of files/lines
writer.WriteLine(CreateLineMarker(c.Region.BeginLine - 1, c.CompilationUnit.FileName));
if (!string.IsNullOrEmpty(c.Namespace)) {
writer.WriteLine("namespace " + c.Namespace + "{");
writer.Write(output.Text);
writer.WriteLine("}");
} else {
writer.Write(output.Text);
}
}
static void CleanType(Ast.AttributedNode type)
{
foreach (Ast.AttributeSection section in type.Attributes) {
section.Attributes.RemoveAll(a => !allowedAttributes.Contains(a.Name));
}
type.Attributes.RemoveAll(s => !s.Attributes.Any());
foreach (Ast.MethodDeclaration node in type.Children.OfType<Ast.MethodDeclaration>()) {
if (node.Body != null) {
if (IsExternAllowed(type, node))
node.Modifier |= Ast.Modifiers.Extern;
if (!NeedsBody(type, node))
node.Body = null;
}
}
foreach (Ast.ConstructorDeclaration node in type.Children.OfType<Ast.ConstructorDeclaration>()) {
if (IsExternAllowed(type, node))
node.Modifier |= Ast.Modifiers.Extern;
if (!NeedsBody(type, node))
node.Body = null;
}
foreach (Ast.DestructorDeclaration node in type.Children.OfType<Ast.DestructorDeclaration>()) {
if (IsExternAllowed(type, node))
node.Modifier |= Ast.Modifiers.Extern;
if (!NeedsBody(type, node))
node.Body = null;
}
foreach (Ast.PropertyDeclaration node in type.Children.OfType<Ast.PropertyDeclaration>()) {
if (IsExternAllowed(type, node))
node.Modifier |= Ast.Modifiers.Extern;
if (node.HasGetRegion && !NeedsBody(type, node))
node.GetRegion.Block = null;
if (node.HasSetRegion && !NeedsBody(type, node))
node.SetRegion.Block = null;
}
foreach (Ast.AttributedNode node in type.Children.OfType<Ast.AttributedNode>())
CleanType(node);
}
static bool IsExternAllowed(Ast.AttributedNode type, Ast.AttributedNode member)
{
if (type is Ast.TypeDeclaration) {
var decl = type as Ast.TypeDeclaration;
if (decl.Type == Ast.ClassType.Interface || (decl.Type == Ast.ClassType.Struct && member is Ast.PropertyDeclaration))
return false;
}
if (member.Modifier.HasFlag(Ast.Modifiers.Abstract))
return false;
return true;
}
static bool NeedsBody(Ast.AttributedNode type, Ast.AttributedNode member)
{
if (type is Ast.TypeDeclaration) {
var decl = type as Ast.TypeDeclaration;
if (decl.Type == Ast.ClassType.Interface)
return false;
}
if (member.Modifier.HasFlag(Ast.Modifiers.Abstract) || member.Modifier.HasFlag(Ast.Modifiers.Extern))
return false;
return true;
}
static bool IsGreaterThan(Microsoft.Build.Utilities.TargetDotNetFrameworkVersion version, Microsoft.Build.Utilities.TargetDotNetFrameworkVersion otherVersion)
{
return (int)otherVersion > (int)version;
}
}
}

27
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs

@ -2,10 +2,10 @@ @@ -2,10 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.CodeDom;
using System.ComponentModel;
using System.Linq;
using System.IO;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.VBNet;
@ -179,5 +179,30 @@ namespace ICSharpCode.VBNetBinding @@ -179,5 +179,30 @@ namespace ICSharpCode.VBNetBinding
return "On".Equals(val, StringComparison.OrdinalIgnoreCase);
}
public override string GetDefaultNamespace(string fileName)
{
// use root namespace everywhere, ignore the folder name
return this.RootNamespace;
}
public override System.CodeDom.Compiler.CodeDomProvider CreateCodeDomProvider()
{
return new Microsoft.VisualBasic.VBCodeProvider();
}
public override void GenerateCodeFromCodeDom(CodeCompileUnit compileUnit, TextWriter writer)
{
// the root namespace is implicit in VB
string rootNamespace = this.RootNamespace;
foreach (CodeNamespace ns in ccu.Namespaces) {
if (string.Equals(ns.Name, rootNamespace, StringComparison.OrdinalIgnoreCase)) {
ns.Name = string.Empty;
} else if (ns.Name.StartsWith(rootNamespace + ".", StringComparison.OrdinalIgnoreCase)) {
ns.Name = ns.Name.Substring(rootNamespace.Length + 1);
}
}
base.GenerateCodeFromCodeDom(compileUnit, writer);
}
}
}

10
src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj

@ -197,11 +197,6 @@ @@ -197,11 +197,6 @@
<Name>Mono.Cecil</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -222,11 +217,6 @@ @@ -222,11 +217,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<Page Include="Src\ChooseEncodingDialog.xaml" />
<Page Include="Src\Commands\SortOptionsDialog.xaml" />
<Page Include="Src\Options\BehaviorOptions.xaml" />

5
src/AddIns/DisplayBindings/SettingsEditor/Project/SettingsEditor.csproj

@ -89,11 +89,6 @@ @@ -89,11 +89,6 @@
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfDisplayBinding.cs

@ -37,7 +37,7 @@ namespace ICSharpCode.WpfDesign.AddIn @@ -37,7 +37,7 @@ namespace ICSharpCode.WpfDesign.AddIn
IEditable editable = content as IEditable;
if (editable != null) {
try {
XmlTextReader r = new XmlTextReader(new StringReader(editable.Text));
XmlTextReader r = new XmlTextReader(editable.CreateSnapshot().CreateReader());
r.XmlResolver = null;
r.WhitespaceHandling = WhitespaceHandling.None;
while (r.NodeType != XmlNodeType.Element && r.Read());

10
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj

@ -200,11 +200,6 @@ @@ -200,11 +200,6 @@
<Name>ICSharpCode.AvalonEdit</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -225,11 +220,6 @@ @@ -225,11 +220,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj">
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project>
<Name>ICSharpCode.SharpDevelop.Widgets</Name>

5
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/ICSharpCode.Reports.Addin.csproj

@ -295,11 +295,6 @@ @@ -295,11 +295,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj">
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project>
<Name>ICSharpCode.SharpDevelop.Widgets</Name>

10
src/AddIns/Misc/ResourceToolkit/Project/ResourceToolkit.csproj

@ -128,11 +128,6 @@ @@ -128,11 +128,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -156,11 +151,6 @@ @@ -156,11 +151,6 @@
<Folder Include="Src\ToolTips" />
<Folder Include="Resources" />
<Folder Include="Configuration" />
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<Folder Include="Src\Conditions" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />

7
src/AddIns/Misc/SearchAndReplace/Project/Engine/DocumentIterator/DirectoryDocumentIterator.cs

@ -1,15 +1,16 @@ @@ -1,15 +1,16 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop;
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Search;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Refactoring;
namespace SearchAndReplace
{
@ -62,7 +63,7 @@ namespace SearchAndReplace @@ -62,7 +63,7 @@ namespace SearchAndReplace
0);
}
}
ITextBuffer fileContent;
ITextSource fileContent;
try {
fileContent = ParserService.GetParseableFileContent(fileName);
} catch (Exception) {

7
src/AddIns/Misc/SearchAndReplace/Project/Engine/DocumentIterator/WholeProjectDocumentIterator.cs

@ -1,16 +1,17 @@ @@ -1,16 +1,17 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop;
using System;
using System.Collections;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Search;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
namespace SearchAndReplace
{
@ -56,7 +57,7 @@ namespace SearchAndReplace @@ -56,7 +57,7 @@ namespace SearchAndReplace
0);
}
}
ITextBuffer fileContent;
ITextSource fileContent;
try {
fileContent = ParserService.GetParseableFileContent(fileName);
} catch (Exception) {

7
src/AddIns/Misc/SearchAndReplace/Project/Engine/DocumentIterator/WholeSolutionDocumentIterator.cs

@ -1,16 +1,17 @@ @@ -1,16 +1,17 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop;
using System;
using System.Collections;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Search;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
namespace SearchAndReplace
{
@ -56,7 +57,7 @@ namespace SearchAndReplace @@ -56,7 +57,7 @@ namespace SearchAndReplace
0);
}
}
ITextBuffer fileContent;
ITextSource fileContent;
try {
fileContent = ParserService.GetParseableFileContent(fileName);
} catch (Exception) {

5
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchReplaceManager.cs

@ -6,6 +6,7 @@ using System.Collections.Generic; @@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
@ -140,7 +141,7 @@ namespace SearchAndReplace @@ -140,7 +141,7 @@ namespace SearchAndReplace
textAreas.Add(textArea);
}
textArea.Caret.Offset = result.Offset;
IDocumentLine segment = textArea.Document.GetLineForOffset(result.Offset);
IDocumentLine segment = textArea.Document.GetLineByOffset(result.Offset);
int lineNr = segment.LineNumber;
@ -150,7 +151,7 @@ namespace SearchAndReplace @@ -150,7 +151,7 @@ namespace SearchAndReplace
return;
}
}
BookmarkManager.AddMark(new Bookmark(result.FileName, textArea.Document.OffsetToPosition(result.Offset)));
BookmarkManager.AddMark(new Bookmark(result.FileName, textArea.Document.GetLocation(result.Offset)));
}
}

2
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchReplaceUtilities.cs

@ -1,13 +1,13 @@ @@ -1,13 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop.Editor;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Gui;
namespace SearchAndReplace

1
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/BruteForceSearchStrategy.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using ICSharpCode.SharpDevelop.Editor.Search;
using System;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.Editor;
namespace SearchAndReplace
{

1
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchStrategy/WildcardSearchStrategy.cs

@ -5,6 +5,7 @@ using ICSharpCode.SharpDevelop.Editor.Search; @@ -5,6 +5,7 @@ using ICSharpCode.SharpDevelop.Editor.Search;
using System;
using System.Collections;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.Editor;
namespace SearchAndReplace
{

2
src/AddIns/Misc/SearchAndReplace/Project/Engine/TextIterator/ForwardTextIterator.cs

@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
using ICSharpCode.SharpDevelop.Editor.Search;
using System;
using System.Diagnostics;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.Editor;
namespace SearchAndReplace
{

2
src/AddIns/Misc/SearchAndReplace/Project/Engine/TextIterator/ITextIterator.cs

@ -1,9 +1,9 @@ @@ -1,9 +1,9 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop.Editor;
using System;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
namespace SearchAndReplace
{

9
src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchResultNode.cs

@ -7,9 +7,10 @@ using System.Windows; @@ -7,9 +7,10 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core;
using ICSharpCode.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Search;
@ -38,9 +39,9 @@ namespace SearchAndReplace @@ -38,9 +39,9 @@ namespace SearchAndReplace
this.anchor = new PermanentAnchor(result.FileName, lineNumber, column);
anchor.SurviveDeletion = true;
if (lineNumber >= 1 && lineNumber <= document.TotalNumberOfLines) {
IDocumentLine matchedLine = document.GetLine(lineNumber);
inlineBuilder = new HighlightedInlineBuilder(matchedLine.Text);
if (lineNumber >= 1 && lineNumber <= document.LineCount) {
IDocumentLine matchedLine = document.GetLineByNumber(lineNumber);
inlineBuilder = new HighlightedInlineBuilder(document.GetText(matchedLine));
inlineBuilder.SetFontFamily(0, inlineBuilder.Text.Length, resultLineFamily);
IHighlighter highlighter = document.GetService(typeof(IHighlighter)) as IHighlighter;

11
src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj

@ -117,9 +117,9 @@ @@ -117,9 +117,9 @@
<Name>ICSharpCode.AvalonEdit</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\ICSharpCode.Editor\ICSharpCode.Editor.csproj">
<Project>{F054A788-B591-4561-A8BA-AE745BBEB817}</Project>
<Name>ICSharpCode.Editor</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
@ -142,11 +142,6 @@ @@ -142,11 +142,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<Page Include="Gui\ResultsTreeView.xaml">
</Page>
</ItemGroup>

10
src/AddIns/Misc/SharpRefactoring/Project/SharpRefactoring.csproj

@ -155,11 +155,6 @@ @@ -155,11 +155,6 @@
<Name>ICSharpCode.AvalonEdit</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\Project\NRefactory.csproj">
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project>
<Name>NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -180,11 +175,6 @@ @@ -180,11 +175,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj">
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project>
<Name>ICSharpCode.SharpDevelop.Widgets</Name>

5
src/AddIns/Misc/TextTemplating/Project/TextTemplating.csproj

@ -96,11 +96,6 @@ @@ -96,11 +96,6 @@
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Templates" />

1
src/Libraries/NRefactory/ICSharpCode.NRefactory/CSharp/Analysis/DefiniteAssignmentAnalysis.cs

@ -23,6 +23,7 @@ using System.Linq; @@ -23,6 +23,7 @@ using System.Linq;
using System.Threading;
using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.NRefactory.Utils;
namespace ICSharpCode.NRefactory.CSharp.Analysis

2
src/Libraries/NRefactory/ICSharpCode.NRefactory/ICSharpCode.NRefactory.csproj

@ -61,7 +61,6 @@ @@ -61,7 +61,6 @@
<ItemGroup>
<Compile Include="CSharp\Analysis\ControlFlow.cs" />
<Compile Include="CSharp\Analysis\DefiniteAssignmentAnalysis.cs" />
<Compile Include="CSharp\Analysis\MinimalResolveContext.cs" />
<Compile Include="CSharp\Ast\AstNodeCollection.cs" />
<Compile Include="CSharp\Ast\Expressions\TypeReferenceExpression.cs" />
<Compile Include="CSharp\Ast\IAstVisitor.cs" />
@ -250,6 +249,7 @@ @@ -250,6 +249,7 @@
<Compile Include="TypeSystem\Implementation\GetClassTypeReference.cs" />
<Compile Include="TypeSystem\Implementation\CompositeTypeResolveContext.cs" />
<Compile Include="TypeSystem\Implementation\GetMembersHelper.cs" />
<Compile Include="TypeSystem\Implementation\MinimalResolveContext.cs" />
<Compile Include="TypeSystem\Implementation\TypeParameterSubstitution.cs" />
<Compile Include="TypeSystem\Implementation\NestedTypeReference.cs" />
<Compile Include="TypeSystem\Implementation\ProxyTypeResolveContext.cs" />

7
src/Libraries/NRefactory/ICSharpCode.NRefactory/CSharp/Analysis/MinimalResolveContext.cs → src/Libraries/NRefactory/ICSharpCode.NRefactory/TypeSystem/Implementation/MinimalResolveContext.cs

@ -21,15 +21,12 @@ using System.Collections.Generic; @@ -21,15 +21,12 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
namespace ICSharpCode.NRefactory.CSharp.Analysis
namespace ICSharpCode.NRefactory.TypeSystem.Implementation
{
/// <summary>
/// Resolve context represents the minimal mscorlib required for evaluating constants.
/// </summary>
sealed class MinimalResolveContext : AbstractAnnotatable, IProjectContent, ISynchronizedTypeResolveContext
public sealed class MinimalResolveContext : AbstractAnnotatable, IProjectContent, ISynchronizedTypeResolveContext
{
static readonly Lazy<MinimalResolveContext> instance = new Lazy<MinimalResolveContext>(() => new MinimalResolveContext());

5
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -44,6 +44,7 @@ @@ -44,6 +44,7 @@
<DefineConstants>TRACE;PUBLICINTERPROCESS</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Build.Tasks.v4.0" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
@ -305,6 +306,7 @@ @@ -305,6 +306,7 @@
<Compile Include="Src\Project\ProjectPropertyChangedEventArgs.cs" />
<Compile Include="Src\Project\Solution\Project_TypeGuids.cs" />
<Compile Include="Src\Project\TargetFramework.cs" />
<Compile Include="Src\Services\AmbienceService\CSharpAmbience.cs" />
<Compile Include="Src\Services\AmbienceService\IAmbience.cs" />
<Compile Include="Src\Services\Debugger\BreakpointBookmark.cs" />
<Compile Include="Src\Services\Debugger\BreakpointBookmarkEventArgs.cs" />
@ -333,6 +335,8 @@ @@ -333,6 +335,8 @@
<Compile Include="Src\Services\File\FileEventArgs.cs" />
<Compile Include="Src\Services\ParserService\AssemblyParserService.cs" />
<Compile Include="Src\Services\ParserService\DomAssemblyName.cs" />
<Compile Include="Src\Services\ParserService\Fusion.cs" />
<Compile Include="Src\Services\ParserService\GacInterop.cs" />
<Compile Include="Src\Services\ParserService\ParseInformation.cs" />
<Compile Include="Src\Services\ParserService\LoadSolutionProjects.cs" />
<Compile Include="Src\Services\ParserService\ParserService.cs" />
@ -385,7 +389,6 @@ @@ -385,7 +389,6 @@
<Compile Include="Src\Services\DisplayBinding\DisplayBindingService.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\ProjectActiveEvaluator.cs" />
<Compile Include="Src\Services\AmbienceService\AmbienceService.cs" />
<Compile Include="Src\Services\AmbienceService\CodeDOMGeneratorUtility.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\WindowOpenEvaluator.cs" />
<Compile Include="Src\Internal\Templates\Project\ProjectDescriptor.cs" />
<Compile Include="Src\Internal\Templates\Project\SolutionDescriptor.cs" />

3
src/Main/Base/Project/Src/Editor/CodeCompletion/CodeCompletionBinding.cs

@ -125,6 +125,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -125,6 +125,7 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
}
}
/*
public class DefaultCodeCompletionBinding : ICodeCompletionBinding
{
bool enableMethodInsight = true;
@ -226,5 +227,5 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -226,5 +227,5 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
{
return false;
}
}
}*/
}

13
src/Main/Base/Project/Src/Editor/Commands/PasteAsCommands.cs

@ -54,6 +54,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -54,6 +54,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
protected override void Run(ITextEditor editor, string clipboardText)
{
#warning Reimplement PasteAsCommentCommand
throw new NotImplementedException();
/*
string indentation = GetIndentation(editor.Document, editor.Caret.Line);
IAmbience ambience = AmbienceService.GetCurrentAmbience();
int maxLineLength = editor.Options.VerticalRulerColumn - VisualIndentationLength(editor, indentation);
@ -67,9 +70,10 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -67,9 +70,10 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
}
IDocument document = editor.Document;
int insertionPos = document.GetLineByNumber(editor.Caret.Line).Offset + indentation.Length;
document.Insert(insertionPos, insertedText.ToString());
document.Insert(insertionPos, insertedText.ToString());*/
}
/*
void AppendTextLine(string indentation, IAmbience ambience, int maxLineLength, StringWriter insertedText, string line)
{
const int minimumLineLength = 10;
@ -109,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -109,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
length += 1;
}
return length;
}
}*/
}
/// <summary>
@ -124,6 +128,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -124,6 +128,9 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
{
protected override void Run(ITextEditor editor, string clipboardText)
{
#warning Reimplement PasteAsStringCommand
throw new NotImplementedException();
/*
CodeGenerator codeGenerator = ParserService.CurrentProjectContent.Language.CodeGenerator;
if (codeGenerator == null)
codeGenerator = LanguageProperties.CSharp.CodeGenerator;
@ -146,7 +153,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands @@ -146,7 +153,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Commands
if (expression == null)
return;
string indentation = GetIndentation(editor.Document, editor.Caret.Line);
editor.Document.Insert(editor.Caret.Offset, codeGenerator.GenerateCode(expression, indentation).Trim());
editor.Document.Insert(editor.Caret.Offset, codeGenerator.GenerateCode(expression, indentation).Trim());*/
}
}
}

4
src/Main/Base/Project/Src/Editor/Search/SearchResultMatch.cs

@ -71,12 +71,12 @@ namespace ICSharpCode.SharpDevelop.Editor.Search @@ -71,12 +71,12 @@ namespace ICSharpCode.SharpDevelop.Editor.Search
public virtual TextLocation GetStartPosition(IDocument document)
{
return document.OffsetToPosition(Math.Min(Offset, document.TextLength));
return document.GetLocation(Math.Min(Offset, document.TextLength));
}
public virtual TextLocation GetEndPosition(IDocument document)
{
return document.OffsetToPosition(Math.Min(Offset + Length, document.TextLength));
return document.GetLocation(Math.Min(Offset + Length, document.TextLength));
}
/// <summary>

93
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/GacReferencePanel.cs

@ -115,8 +115,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -115,8 +115,8 @@ namespace ICSharpCode.SharpDevelop.Gui
PrintCache();
worker = new BackgroundWorker { WorkerSupportsCancellation = true, WorkerReportsProgress = true };
worker.DoWork += searchTask_DoWork;
worker.RunWorkerCompleted += searchTask_RunWorkerCompleted;
worker.DoWork += searchTask_DoWork;
worker.RunWorkerCompleted += searchTask_RunWorkerCompleted;
worker.ProgressChanged += searchTask_ProgressChanged;
}
@ -136,7 +136,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -136,7 +136,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void searchButton_Click(object sender, EventArgs e)
{
string text;
if(!worker.IsBusy) {
if(!worker.IsBusy) {
filterTextBox.ReadOnly = true;
worker.RunWorkerAsync();
text = "Cancel";
@ -155,7 +155,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -155,7 +155,7 @@ namespace ICSharpCode.SharpDevelop.Gui
searchButton.Text = "Search"; this.toolTip.SetToolTip(searchButton, searchButton.Text);
filterTextBox.ReadOnly = false;
if (resultList != null && resultList.Count > 0) {
listView.Items.Clear();
listView.Items.Clear();
listView.Items.AddRange(resultList.ToArray());
}
}
@ -190,18 +190,18 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -190,18 +190,18 @@ namespace ICSharpCode.SharpDevelop.Gui
resultList.Add(item);
else {
if (worker.CancellationPending)
return false;
return false;
// search using Mono.Cecil the class/interface/structs names
// search using Mono.Cecil the class/interface/structs names
AssemblyDefinition currentAssembly;
if(!assembliesCache.ContainsKey(asm.FullName)) {
if(!assembliesCache.ContainsKey(asm.FullName)) {
try {
currentAssembly = resolver.Resolve(asm.FullName);
}
catch {
continue;
}
assembliesCache.Add(asm.FullName, currentAssembly);
assembliesCache.Add(asm.FullName, currentAssembly);
}
else
currentAssembly = assembliesCache[asm.FullName];
@ -209,50 +209,52 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -209,50 +209,52 @@ namespace ICSharpCode.SharpDevelop.Gui
// search types in modules
if (currentAssembly != null) {
foreach(var module in currentAssembly.Modules)
foreach (var type in module.Types)
if (type.Name.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0 &&
foreach (var type in module.Types)
if (type.Name.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0 &&
!resultList.Contains(item))
resultList.Add(item);
resultList.Add(item);
}
// report
worker.ReportProgress((int)(((i * 1.0) / list.Length) * 100));
}
}
return true;
}
/// <summary>
/// Clear all resources used.
/// </summary>
new void Dispose()
protected override void Dispose(bool disposing)
{
// cancel the worker
if (worker != null && worker.IsBusy && !worker.CancellationPending)
worker.CancelAsync();
worker = null;
// clear all cached data
if (assembliesCache.Count > 0)
assembliesCache.Clear();
assembliesCache = null;
if (resultList.Count > 0)
resultList.Clear();
resultList = null;
selectDialog = null;
resolver = null;
if (fullItemList.Length > 0)
Array.Clear(fullItemList, 0, fullItemList.Length);
fullItemList = null;
if (disposing) {
// Clear all resources used.
// cancel the worker
if (worker != null && worker.IsBusy && !worker.CancellationPending)
worker.CancelAsync();
worker = null;
// clear all cached data
if (assembliesCache.Count > 0)
assembliesCache.Clear();
assembliesCache = null;
if (resultList.Count > 0)
resultList.Clear();
resultList = null;
selectDialog = null;
resolver = null;
if (fullItemList.Length > 0)
Array.Clear(fullItemList, 0, fullItemList.Length);
fullItemList = null;
// force a collection to reclam memory
GC.Collect();
}
// force a collection to reclam memory
GC.Collect();
base.Dispose(disposing);
}
#endregion
void columnClick(object sender, ColumnClickEventArgs e)
@ -435,16 +437,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -435,16 +437,9 @@ namespace ICSharpCode.SharpDevelop.Gui
protected virtual IList<DomAssemblyName> GetCacheContent()
{
List<DomAssemblyName> list = GacInterop.GetAssemblyList();
list.RemoveAll(name => name.ShortName.EndsWith(".resources", StringComparison.OrdinalIgnoreCase));
return list;
}
protected override void Dispose(bool disposing)
{
Dispose();
base.Dispose(disposing);
return GacInterop.GetGacAssemblyFullNames()
.Where(name => !name.ShortName.EndsWith(".resources", StringComparison.OrdinalIgnoreCase))
.ToList();
}
}
}

19
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs

@ -263,10 +263,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -263,10 +263,10 @@ namespace ICSharpCode.SharpDevelop.Gui
void GenerateWebProxy()
{
GenerateWebProxy(proxyNamespace, GetFullProxyFileName(), GetServiceDescriptionCollection(protocol), GetXmlSchemas(protocol));
GenerateWebProxy(proxyNamespace, GetFullProxyFileName(), GetServiceDescriptionCollection(protocol), GetXmlSchemas(protocol), project);
}
static void GenerateWebProxy(string proxyNamespace, string fileName, ServiceDescriptionCollection serviceDescriptions, XmlSchemas schemas)
static void GenerateWebProxy(string proxyNamespace, string fileName, ServiceDescriptionCollection serviceDescriptions, XmlSchemas schemas, IProject project)
{
ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
@ -283,19 +283,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -283,19 +283,8 @@ namespace ICSharpCode.SharpDevelop.Gui
codeUnit.Namespaces.Add(codeNamespace);
ServiceDescriptionImportWarnings warnings = importer.Import(codeNamespace, codeUnit);
CodeDomProvider provider = null;
IParser parser = ParserService.CreateParser(fileName);
if (parser != null) {
provider = parser.Language.CodeDomProvider;
}
if (provider != null) {
StreamWriter sw = new StreamWriter(fileName);
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.BracingStyle = "C";
provider.GenerateCodeFromCompileUnit(codeUnit, sw, options);
sw.Close();
using (StreamWriter sw = new StreamWriter(fileName)) {
project.GenerateCodeFromCodeDom(codeUnit, sw);
}
}

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ReferenceFolderNodeCommands.cs

@ -184,7 +184,9 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -184,7 +184,9 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
ReferenceProjectItem item = node.ReferenceProjectItem;
if (item != null) {
AssemblyParserService.RefreshProjectContentForReference(item);
#warning Reimplement RefreshReference
throw new NotImplementedException();
//AssemblyParserService.RefreshProjectContentForReference(item);
}
}
}

1
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -68,7 +68,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -68,7 +68,6 @@ namespace ICSharpCode.SharpDevelop.Gui
DisplayBindingService.InitializeService();
LayoutConfiguration.LoadLayoutConfiguration();
FileService.InitializeService();
DomHostCallback.Register(); // must be called after StatusBarService.Initialize()
ParserService.InitializeParserService();
TaskService.Initialize();
Bookmarks.BookmarkManager.Initialize();

76
src/Main/Base/Project/Src/Project/AbstractProject.cs

@ -7,8 +7,9 @@ using System.Collections.ObjectModel; @@ -7,8 +7,9 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Windows;
using System.Xml.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Debugging;
@ -62,8 +63,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -62,8 +63,6 @@ namespace ICSharpCode.SharpDevelop.Project
#endregion
#region IMementoCapable implementation
internal static List<string> filesToOpenAfterSolutionLoad = new List<string>();
/// <summary>
/// Saves project preferences (currently opened files, bookmarks etc.) to the
/// a property container.
@ -96,9 +95,19 @@ namespace ICSharpCode.SharpDevelop.Project @@ -96,9 +95,19 @@ namespace ICSharpCode.SharpDevelop.Project
foreach (ICSharpCode.SharpDevelop.Bookmarks.SDBookmark mark in memento.Get("bookmarks", new ICSharpCode.SharpDevelop.Bookmarks.SDBookmark[0])) {
ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.AddMark(mark);
}
List<string> filesToOpen = new List<string>();
foreach (string fileName in memento.Get("files", new string[0])) {
filesToOpenAfterSolutionLoad.Add(fileName);
if (File.Exists(fileName)) {
filesToOpen.Add(fileName);
}
}
System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Background,
new Action(
delegate {
foreach (string file in filesToOpen)
FileService.OpenFile(file);
}));
WebProjectsOptions.Instance.SetWebProjectOptions(Name, memento.Get("WebProjectOptions", new WebProjectOptions()) as WebProjectOptions);
}
@ -431,13 +440,16 @@ namespace ICSharpCode.SharpDevelop.Project @@ -431,13 +440,16 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
IProjectContent IProject.CreateProjectContent()
{
return this.CreateProjectContent();
public virtual IProjectContent ProjectContent {
get {
return null;
}
}
protected virtual IProjectContent CreateProjectContent()
{
return null;
public virtual ITypeResolveContext TypeResolveContext {
get {
return NRefactory.TypeSystem.Implementation.MinimalResolveContext.Instance;
}
}
/// <summary>
@ -560,5 +572,49 @@ namespace ICSharpCode.SharpDevelop.Project @@ -560,5 +572,49 @@ namespace ICSharpCode.SharpDevelop.Project
public virtual void SaveProjectExtensions(string name, XElement element)
{
}
public virtual string GetDefaultNamespace(string fileName)
{
string relPath = FileUtility.GetRelativePath(this.Directory, Path.GetDirectoryName(fileName));
string[] subdirs = relPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
StringBuilder standardNameSpace = new StringBuilder(this.RootNamespace);
foreach(string subdir in subdirs) {
if (subdir == "." || subdir == ".." || subdir.Length == 0)
continue;
if (subdir.Equals("src", StringComparison.OrdinalIgnoreCase))
continue;
if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase))
continue;
if (standardNameSpace.Length > 0)
standardNameSpace.Append('.');
standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true));
}
return standardNameSpace.ToString();
}
public virtual System.CodeDom.Compiler.CodeDomProvider CreateCodeDomProvider()
{
return null;
}
public virtual void GenerateCodeFromCodeDom(System.CodeDom.CodeCompileUnit compileUnit, TextWriter writer)
{
var provider = this.CreateCodeDomProvider();
if (provider != null) {
var options = new System.CodeDom.Compiler.CodeGeneratorOptions();
options.BlankLinesBetweenMembers = AmbienceService.CodeGenerationProperties.Get("BlankLinesBetweenMembers", true);
options.BracingStyle = AmbienceService.CodeGenerationProperties.Get("StartBlockOnSameLine", true) ? "Block" : "C";
options.ElseOnClosing = AmbienceService.CodeGenerationProperties.Get("ElseOnClosing", true);
options.IndentString = ICSharpCode.SharpDevelop.Editor.EditorControlService.GlobalOptions.IndentationString;
provider.GenerateCodeFromCompileUnit(compileUnit, writer, options);
} else {
writer.WriteLine("No CodeDom provider was found for this language.");
}
}
public virtual IAmbience GetAmbience()
{
return new CSharpAmbience();
}
}
}

17
src/Main/Base/Project/Src/Project/CompilableProject.cs

@ -7,8 +7,8 @@ using System.ComponentModel; @@ -7,8 +7,8 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.ComTypes;
using System.Xml.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project.Converter;
using ICSharpCode.SharpDevelop.Util;
@ -374,7 +374,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -374,7 +374,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
base.OnActiveConfigurationChanged(e);
if (!isLoading) {
ParserService.Reparse(this, true, true);
Reparse(true, true);
}
}
@ -382,7 +382,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -382,7 +382,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
base.OnActivePlatformChanged(e);
if (!isLoading) {
ParserService.Reparse(this, true, true);
Reparse(true, true);
}
}
@ -393,14 +393,20 @@ namespace ICSharpCode.SharpDevelop.Project @@ -393,14 +393,20 @@ namespace ICSharpCode.SharpDevelop.Project
CreateItemsListFromMSBuild();
if (!isLoading) {
if (reparseReferencesSensitiveProperties.Contains(e.PropertyName)) {
ParserService.Reparse(this, true, false);
Reparse(true, false);
}
if (reparseCodeSensitiveProperties.Contains(e.PropertyName)) {
ParserService.Reparse(this, false, true);
Reparse(false, true);
}
}
}
void Reparse(bool references, bool code)
{
#warning Reparse
throw new NotImplementedException();
}
[Browsable(false)]
public override string TypeGuid {
get {
@ -492,7 +498,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -492,7 +498,6 @@ namespace ICSharpCode.SharpDevelop.Project
{
}
#region IUpgradableProject
[Browsable(false)]
public virtual bool UpgradeDesired {

46
src/Main/Base/Project/Src/Project/CustomTool.cs

@ -117,8 +117,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -117,8 +117,9 @@ namespace ICSharpCode.SharpDevelop.Project
}
string newExtension = null;
if (project.LanguageProperties.CodeDomProvider != null) {
newExtension = project.LanguageProperties.CodeDomProvider.FileExtension;
var codeDomProvider = project.CreateCodeDomProvider();
if (codeDomProvider != null) {
newExtension = codeDomProvider.FileExtension;
}
if (string.IsNullOrEmpty(newExtension)) {
if (string.IsNullOrEmpty(additionalExtension)) {
@ -187,27 +188,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -187,27 +188,10 @@ namespace ICSharpCode.SharpDevelop.Project
public void WriteCodeDomToFile(FileProjectItem baseItem, string outputFileName, CodeCompileUnit ccu)
{
WorkbenchSingleton.AssertMainThread();
CodeDomProvider provider = project.LanguageProperties.CodeDomProvider;
CodeGeneratorOptions options = new CodeDOMGeneratorUtility().CreateCodeGeneratorOptions;
if (project.LanguageProperties == LanguageProperties.VBNet) {
// the root namespace is implicit in VB
foreach (CodeNamespace ns in ccu.Namespaces) {
if (string.Equals(ns.Name, project.RootNamespace, StringComparison.OrdinalIgnoreCase)) {
ns.Name = string.Empty;
} else if (ns.Name.StartsWith(project.RootNamespace + ".", StringComparison.OrdinalIgnoreCase)) {
ns.Name = ns.Name.Substring(project.RootNamespace.Length + 1);
}
}
}
string codeOutput;
using (StringWriter writer = new StringWriter()) {
if (provider == null) {
writer.WriteLine("No CodeDom provider was found for this language.");
} else {
provider.GenerateCodeFromCompileUnit(ccu, writer, options);
}
project.GenerateCodeFromCodeDom(ccu, writer);
codeOutput = writer.ToString();
}
@ -469,26 +453,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -469,26 +453,8 @@ namespace ICSharpCode.SharpDevelop.Project
throw new ArgumentNullException("project");
if (fileName == null)
throw new ArgumentNullException("fileName");
if (project.LanguageProperties == Dom.LanguageProperties.VBNet) {
return project.RootNamespace;
} else {
string relPath = FileUtility.GetRelativePath(project.Directory, Path.GetDirectoryName(fileName));
string[] subdirs = relPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
StringBuilder standardNameSpace = new StringBuilder(project.RootNamespace);
foreach(string subdir in subdirs) {
if (subdir == "." || subdir == ".." || subdir.Length == 0)
continue;
if (subdir.Equals("src", StringComparison.OrdinalIgnoreCase))
continue;
if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase))
continue;
if (standardNameSpace.Length > 0)
standardNameSpace.Append('.');
standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true));
}
return standardNameSpace.ToString();
}
return project.GetDefaultNamespace(fileName);
}
static void RunCustomTool(CustomToolRun run)

71
src/Main/Base/Project/Src/Project/IProject.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
@ -218,16 +219,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -218,16 +219,6 @@ namespace ICSharpCode.SharpDevelop.Project
/// <param name="withDebugging">True, if a debugger should be used for the project.</param>
void Start(bool withDebugging);
/// <summary>
/// Creates a new project content for this project.
/// Return null if you don't want to create any project content.
/// </summary>
/// <remarks>
/// This method is called by the SharpDevelop infrastructure.
/// If you want to get the PC for a project, use the methods on <see cref="ParserService"/>.
/// </remarks>
IProjectContent CreateProjectContent();
/// <summary>
/// Creates a new ProjectItem for the passed MSBuild item.
/// </summary>
@ -258,6 +249,66 @@ namespace ICSharpCode.SharpDevelop.Project @@ -258,6 +249,66 @@ namespace ICSharpCode.SharpDevelop.Project
/// Saves the project extension content with the specified name.
/// </summary>
void SaveProjectExtensions(string name, XElement element);
/// <summary>
/// Gets the project content associated with this project.
/// </summary>
/// <remarks>
/// This property must always return the same value for the same project.
/// This property may return null.
///
/// This member is thread-safe.
/// </remarks>
IProjectContent ProjectContent { get; }
/// <summary>
/// Gets the type resolve context associated with this project.
/// The context should include this project's ProjectContent, as well as any referenced assemblies.
/// </summary>
/// <remarks>
/// This property must not return null.
/// If no resolve context is available for this project, it should return a dummy context
/// (e.g. <see cref="ICSharpCode.NRefactory.CSharp.Analysis.MinimalResolveContext/">).
///
/// This member is thread-safe.
/// The resulting type resolve context is thread-safe, but repeated locking on every access might be inefficient.
/// Use the following code pattern instead:
/// <code>
/// using (var context = ParserService.CurrentTypeResolveContext.Synchronize()) {
/// ...
/// }
/// </code>
/// </remarks>
ITypeResolveContext TypeResolveContext { get; }
/// <summary>
/// Gets the default namespace to use for a file with the specified name.
/// </summary>
/// <param name="fileName">Full file name for a new file being added to the project.</param>
/// <returns>Namespace name to use for the new file</returns>
string GetDefaultNamespace(string fileName);
/// <summary>
/// Creates a CodeDomProvider for this project's language.
/// Returns null when no CodeDomProvider is available for the language.
/// </summary>
System.CodeDom.Compiler.CodeDomProvider CreateCodeDomProvider();
/// <summary>
/// Generates code for a CodeDom compile unit.
/// This method is used by CustomToolContext.WriteCodeDomToFile.
/// </summary>
void GenerateCodeFromCodeDom(System.CodeDom.CodeCompileUnit compileUnit, TextWriter writer);
/// <summary>
/// Creates a new ambience for this project.
/// </summary>
/// <remarks>
/// This member is thread-safe.
/// As ambiences are not thread-safe, this method always returns a new ambience instance.
/// Never returns null.
/// </remarks>
IAmbience GetAmbience();
}
/// <summary>

57
src/Main/Base/Project/Src/Services/AmbienceService/AmbienceService.cs

@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
/*
namespace ICSharpCode.SharpDevelop
{
public static class AmbienceService
@ -13,35 +13,12 @@ namespace ICSharpCode.SharpDevelop @@ -13,35 +13,12 @@ namespace ICSharpCode.SharpDevelop
const string ambienceProperty = "SharpDevelop.UI.CurrentAmbience";
const string codeGenerationProperty = "SharpDevelop.UI.CodeGenerationOptions";
static AmbienceService()
{
PropertyService.PropertyChanged += new PropertyChangedEventHandler(PropertyChanged);
}
public static Properties CodeGenerationProperties {
get {
return PropertyService.Get(codeGenerationProperty, new Properties());
}
}
static List<CodeGenerator> codeGenerators = new List<CodeGenerator>();
static void ApplyCodeGenerationProperties(CodeGenerator generator)
{
CodeGeneratorOptions options = generator.Options;
System.CodeDom.Compiler.CodeGeneratorOptions cdo = new CodeDOMGeneratorUtility().CreateCodeGeneratorOptions;
options.EmptyLinesBetweenMembers = cdo.BlankLinesBetweenMembers;
options.BracesOnSameLine = CodeGenerationProperties.Get("StartBlockOnSameLine", true);;
options.IndentString = cdo.IndentString;
}
internal static void InitializeCodeGeneratorOptions(CodeGenerator generator)
{
codeGenerators.Add(generator);
ApplyCodeGenerationProperties(generator);
}
public static bool GenerateDocumentComments {
get {
return CodeGenerationProperties.Get("GenerateDocumentComments", true);
@ -74,19 +51,17 @@ namespace ICSharpCode.SharpDevelop @@ -74,19 +51,17 @@ namespace ICSharpCode.SharpDevelop
/// This method is thread-safe.
/// </summary>
/// <returns>Returns a new ambience object (ambience objects are never reused to ensure their thread-safety).
/// Never returns null, in case of errors the <see cref="NetAmbience"/> is used.</returns>
/// Never returns null, in case of errors the <see cref="CSharpAmbience"/> is used.</returns>
public static IAmbience GetCurrentAmbience()
{
IAmbience ambience;
if (UseProjectAmbienceIfPossible) {
ICSharpCode.SharpDevelop.Project.IProject p = ICSharpCode.SharpDevelop.Project.ProjectService.CurrentProject;
IProject p = ProjectService.CurrentProject;
if (p != null) {
ambience = p.GetAmbience();
if (ambience != null)
return ambience;
return p.GetAmbience();
}
}
string language = DefaultAmbienceName;
IAmbience ambience;
try {
ambience = (IAmbience)AddInTree.BuildItem("/SharpDevelop/Workbench/Ambiences/" + language, null);
} catch (TreePathNotFoundException) {
@ -95,7 +70,7 @@ namespace ICSharpCode.SharpDevelop @@ -95,7 +70,7 @@ namespace ICSharpCode.SharpDevelop
if (ambience == null && Gui.WorkbenchSingleton.MainWin32Window != null) {
MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError}");
}
return ambience ?? new NetAmbience();
return ambience ?? new CSharpAmbience();
}
public static string DefaultAmbienceName {
@ -106,25 +81,5 @@ namespace ICSharpCode.SharpDevelop @@ -106,25 +81,5 @@ namespace ICSharpCode.SharpDevelop
PropertyService.Set(ambienceProperty, value);
}
}
static void PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.Key == ambienceProperty) {
OnAmbienceChanged(EventArgs.Empty);
}
if (e.Key == codeGenerationProperty) {
codeGenerators.ForEach(ApplyCodeGenerationProperties);
}
}
static void OnAmbienceChanged(EventArgs e)
{
if (AmbienceChanged != null) {
AmbienceChanged(null, e);
}
}
public static event EventHandler AmbienceChanged;
}
}
*/

14
src/Main/Base/Project/Src/Services/AmbienceService/CSharpAmbience.cs

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.SharpDevelop
{
/// <summary>
/// C# ambience.
/// </summary>
public class CSharpAmbience : IAmbience
{
}
}

83
src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs

@ -1,83 +0,0 @@ @@ -1,83 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop
{
public class CodeDOMGeneratorUtility
{
public CodeGeneratorOptions CreateCodeGeneratorOptions {
get {
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.BlankLinesBetweenMembers = AmbienceService.CodeGenerationProperties.Get("BlankLinesBetweenMembers", true);
options.BracingStyle = AmbienceService.CodeGenerationProperties.Get("StartBlockOnSameLine", true) ? "Block" : "C";
options.ElseOnClosing = AmbienceService.CodeGenerationProperties.Get("ElseOnClosing", true);
options.IndentString = EditorControlService.GlobalOptions.IndentationString;
return options;
}
}
public CodeTypeReference GetTypeReference(string type)
{
if (AmbienceService.UseFullyQualifiedNames) {
return new CodeTypeReference(type);
} else {
string[] arr = type.Split('.');
string shortName = arr[arr.Length - 1];
if (type.Length - shortName.Length - 1 > 0) {
string n = type.Substring(0, type.Length - shortName.Length - 1);
namespaces[n] = "";
}
return new CodeTypeReference(shortName);
}
}
public CodeTypeReference GetTypeReference(Type type)
{
if (AmbienceService.UseFullyQualifiedNames) {
return new CodeTypeReference(type.FullName);
} else {
namespaces[type.Namespace] = "";
return new CodeTypeReference(type.Name);
}
}
public CodeTypeReferenceExpression GetTypeReferenceExpression(string type)
{
return new CodeTypeReferenceExpression(GetTypeReference(type));
}
public CodeTypeReferenceExpression GetTypeReferenceExpression(Type type)
{
return new CodeTypeReferenceExpression(GetTypeReference(type));
}
/// <summary>
/// Adds a namespace import to the namespace import list.
/// </summary>
public void AddNamespaceImport(string ns)
{
namespaces[ns] = "";
}
/// <summary>
/// Generates the namespace imports that caused of the usage of short type names
/// </summary>
public void GenerateNamespaceImports(CodeNamespace cnamespace)
{
foreach (string ns in namespaces.Keys) {
cnamespace.Imports.Add(new CodeNamespaceImport(ns));
}
}
Hashtable namespaces = new Hashtable();
}
}

15
src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs

@ -276,20 +276,23 @@ namespace ICSharpCode.SharpDevelop @@ -276,20 +276,23 @@ namespace ICSharpCode.SharpDevelop
public static ClassBrowserImage GetIcon(ITypeDefinition c)
{
int imageIndex = ClassIndex;
switch (c.ClassType) {
case ClassType.Delegate:
int imageIndex;
switch (c.Kind) {
case TypeKind.Delegate:
imageIndex = DelegateIndex;
break;
case ClassType.Enum:
case TypeKind.Enum:
imageIndex = EnumIndex;
break;
case ClassType.Struct:
case TypeKind.Struct:
imageIndex = StructIndex;
break;
case ClassType.Interface:
case TypeKind.Interface:
imageIndex = InterfaceIndex;
break;
default:
imageIndex = ClassIndex;
break;
}
return entityImages[imageIndex + GetModifierOffset(c.Accessibility)];
}

3
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -290,6 +290,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -290,6 +290,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
/// </summary>
internal static void HandleToolTipRequest(ToolTipRequestEventArgs e)
{
/*
if (!e.InDocument)
return;
Location logicPos = e.LogicalPosition;
@ -309,7 +310,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -309,7 +310,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
var currentLine = doc.GetLineByNumber(logicPos.Y);
if (logicPos.X > currentLine.Length)
return;
/*
string textContent = doc.Text;
ExpressionResult expressionResult = expressionFinder.FindFullExpression(textContent, doc.PositionToOffset(logicPos.Line, logicPos.Column));
string expression = (expressionResult.Expression ?? "").Trim();

2
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop @@ -38,7 +38,7 @@ namespace ICSharpCode.SharpDevelop
}
#endregion
public static void Unload()
internal static void Unload()
{
if (recentOpen != null) {
PropertyService.Set("RecentOpen", recentOpen.ToProperties());

2
src/Main/Base/Project/Src/Services/File/OpenedFile.cs

@ -165,7 +165,7 @@ namespace ICSharpCode.SharpDevelop @@ -165,7 +165,7 @@ namespace ICSharpCode.SharpDevelop
if (fileData != null) {
return new MemoryStream(fileData, false);
} else {
return new FileStream(FileName, FileMode.Open, FileAccess.Read);
return new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
}
}

26
src/Main/Base/Project/Src/Services/ParserService/AssemblyParserService.cs

@ -7,10 +7,12 @@ using System.IO; @@ -7,10 +7,12 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Documentation;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Tasks;
using Mono.Cecil;
namespace ICSharpCode.SharpDevelop
@ -39,17 +41,21 @@ namespace ICSharpCode.SharpDevelop @@ -39,17 +41,21 @@ namespace ICSharpCode.SharpDevelop
public static IProjectContent GetAssembly(FileName fileName, CancellationToken cancellationToken = default(CancellationToken))
{
// We currently do not support cancelling the load operation itself, because another GetAssembly() call
// with a different cancellation token might request the same assembly.
bool isNewTask;
LoadedAssembly asm = GetLoadedAssembly(fileName, cancellationToken, out isNewTask);
LoadedAssembly asm = GetLoadedAssembly(fileName, out isNewTask);
if (isNewTask)
asm.ProjectContent.RunSynchronously();
else
asm.ProjectContent.Wait(cancellationToken);
return asm.ProjectContent.Result;
}
public static Task<IProjectContent> GetAssemblyAsync(FileName fileName, CancellationToken cancellationToken = default(CancellationToken))
{
bool isNewTask;
LoadedAssembly asm = GetLoadedAssembly(fileName, cancellationToken, out isNewTask);
LoadedAssembly asm = GetLoadedAssembly(fileName, out isNewTask);
if (isNewTask)
asm.ProjectContent.Start();
return asm.ProjectContent;
@ -88,7 +94,7 @@ namespace ICSharpCode.SharpDevelop @@ -88,7 +94,7 @@ namespace ICSharpCode.SharpDevelop
projectContentDictionary.Remove(key);
}
static LoadedAssembly GetLoadedAssembly(FileName fileName, CancellationToken cancellationToken, out bool isNewTask)
static LoadedAssembly GetLoadedAssembly(FileName fileName, out bool isNewTask)
{
isNewTask = false;
LoadedAssembly asm;
@ -108,8 +114,7 @@ namespace ICSharpCode.SharpDevelop @@ -108,8 +114,7 @@ namespace ICSharpCode.SharpDevelop
} else {
wr = null;
}
var task = new Task<IProjectContent>(() => LoadAssembly(fileName, cancellationToken), cancellationToken);
task.Wait();
var task = new Task<IProjectContent>(() => LoadAssembly(fileName, CancellationToken.None));
isNewTask = true;
asm = new LoadedAssembly(task, lastWriteTime);
if (wr != null) {
@ -207,5 +212,14 @@ namespace ICSharpCode.SharpDevelop @@ -207,5 +212,14 @@ namespace ICSharpCode.SharpDevelop
return XmlDocumentationProvider.LookupLocalizedXmlDoc(fileName);
}
#endregion
internal static string FindReferenceAssembly(string shortName)
{
string path = Path.Combine(referenceAssembliesPath, @".NETFramework\v4.0", shortName + ".dll");
if (File.Exists(path))
return path;
else
return null;
}
}
}

218
src/Main/Base/Project/Src/Services/ParserService/Fusion.cs

@ -0,0 +1,218 @@ @@ -0,0 +1,218 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
// Based on the MIT-licensed Fusion.cs from ILSpy.
using System;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
namespace ICSharpCode.SharpDevelop
{
// .NET Fusion COM interfaces
[ComImport(), Guid("E707DCDE-D1CD-11D2-BAB9-00C04F8ECEAE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAssemblyCache
{
[PreserveSig()]
int UninstallAssembly(uint dwFlags,
[MarshalAs(UnmanagedType.LPWStr)] string pszAssemblyName,
IntPtr pvReserved,
out uint pulDisposition);
[PreserveSig()]
int QueryAssemblyInfo(uint dwFlags,
[MarshalAs(UnmanagedType.LPWStr)] string pszAssemblyName,
IntPtr pAsmInfo);
[PreserveSig()]
int CreateAssemblyCacheItem(uint dwFlags,
IntPtr pvReserved,
out IAssemblyCacheItem ppAsmItem,
[MarshalAs(UnmanagedType.LPWStr)] string pszAssemblyName);
[PreserveSig()]
int CreateAssemblyScavenger(out object ppAsmScavenger);
[PreserveSig()]
int InstallAssembly(uint dwFlags,
[MarshalAs(UnmanagedType.LPWStr)] string pszManifestFilePath,
IntPtr pvReserved);
}
[ComImport(), Guid("9E3AAEB4-D1CD-11D2-BAB9-00C04F8ECEAE"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAssemblyCacheItem
{
void CreateStream([MarshalAs(UnmanagedType.LPWStr)] string pszName,
uint dwFormat,
uint dwFlags,
uint dwMaxSize,
out IStream ppStream);
void IsNameEqual(IAssemblyName pName);
void Commit(uint dwFlags);
void MarkAssemblyVisible(uint dwFlags);
}
[ComImport(), Guid("CD193BC0-B4BC-11D2-9833-00C04FC31D2E"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAssemblyName
{
[PreserveSig()]
int SetProperty(uint PropertyId, IntPtr pvProperty, uint cbProperty);
[PreserveSig()]
int GetProperty(uint PropertyId, IntPtr pvProperty, ref uint pcbProperty);
[PreserveSig()]
int Finalize();
[PreserveSig()]
int GetDisplayName([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder szDisplayName,
ref uint pccDisplayName,
uint dwDisplayFlags);
[PreserveSig()]
int BindToObject(object refIID,
object pAsmBindSink,
IApplicationContext pApplicationContext,
[MarshalAs(UnmanagedType.LPWStr)] string szCodeBase,
long llFlags,
int pvReserved,
uint cbReserved,
out int ppv);
[PreserveSig()]
int GetName(ref uint lpcwBuffer,
[Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwzName);
[PreserveSig()]
int GetVersion(out uint pdwVersionHi, out uint pdwVersionLow);
[PreserveSig()]
int IsEqual(IAssemblyName pName,
uint dwCmpFlags);
[PreserveSig()]
int Clone(out IAssemblyName pName);
}
[ComImport(), Guid("7C23FF90-33AF-11D3-95DA-00A024A85B51"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IApplicationContext
{
void SetContextNameObject(IAssemblyName pName);
void GetContextNameObject(out IAssemblyName ppName);
void Set([MarshalAs(UnmanagedType.LPWStr)] string szName,
int pvValue,
uint cbValue,
uint dwFlags);
void Get([MarshalAs(UnmanagedType.LPWStr)] string szName,
out int pvValue,
ref uint pcbValue,
uint dwFlags);
void GetDynamicDirectory(out int wzDynamicDir,
ref uint pdwSize);
}
[ComImport(), Guid("21B8916C-F28E-11D2-A473-00C04F8EF448"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAssemblyEnum
{
[PreserveSig()]
int GetNextAssembly(out IApplicationContext ppAppCtx,
out IAssemblyName ppName,
uint dwFlags);
[PreserveSig()]
int Reset();
[PreserveSig()]
int Clone(out IAssemblyEnum ppEnum);
}
[ComImport(), Guid("1D23DF4D-A1E2-4B8B-93D6-6EA3DC285A54"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IHistoryReader
{
[PreserveSig()]
int GetFilePath([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzFilePath,
ref uint pdwSize);
[PreserveSig()]
int GetApplicationName([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzAppName,
ref uint pdwSize);
[PreserveSig()]
int GetEXEModulePath([Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzExePath,
ref uint pdwSize);
void GetNumActivations(out uint pdwNumActivations);
void GetActivationDate(uint dwIdx, // One-based!
out long /* FILETIME */ pftDate);
[PreserveSig()]
int GetRunTimeVersion(ref long /* FILETIME */ pftActivationDate,
[Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzRunTimeVersion,
ref uint pdwSize);
void GetNumAssemblies(ref long /* FILETIME */ pftActivationDate,
out uint pdwNumAsms);
void GetHistoryAssembly(ref long /* FILETIME */ pftActivationDate,
uint dwIdx, // One-based!
[MarshalAs(UnmanagedType.IUnknown)] out object ppHistAsm);
}
internal static class Fusion
{
[DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateAssemblyCache(out IAssemblyCache ppAsmCache,
uint dwReserved);
// dwFlags: 1 = Enumerate native image (NGEN) assemblies
// 2 = Enumerate GAC assemblies
// 4 = Enumerate Downloaded assemblies
//
[DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateAssemblyEnum(out IAssemblyEnum ppEnum,
IApplicationContext pAppCtx,
IAssemblyName pName,
uint dwFlags,
int pvReserved);
[DllImport("fusion.dll", CharSet=CharSet.Auto)]
internal static extern int CreateAssemblyNameObject(out IAssemblyName ppName,
string szAssemblyName,
uint dwFlags,
int pvReserved);
// ?????
[DllImport("fusion.dll")]
internal static extern int CreateApplicationContext(out IApplicationContext ppAppContext,
uint dw);
[DllImport("fusion.dll")]
internal static extern int GetCachePath(uint flags,
[MarshalAs(UnmanagedType.LPWStr)] StringBuilder wzDir,
ref uint pdwSize);
public static string GetGacPath(bool isCLRv4 = false)
{
const uint ASM_CACHE_ROOT = 0x08; // CLR V2.0
const uint ASM_CACHE_ROOT_EX = 0x80; // CLR V4.0
uint flags = isCLRv4 ? ASM_CACHE_ROOT_EX : ASM_CACHE_ROOT;
const int size = 260; // MAX_PATH
StringBuilder b = new StringBuilder(size);
uint tmp = size;
GetCachePath(flags, b, ref tmp);
return b.ToString();
}
}
}

110
src/Main/Base/Project/Src/Services/ParserService/GacInterop.cs

@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
// Based on the MIT-licensed GacInterop.cs from ILSpy.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Mono.Cecil;
namespace ICSharpCode.SharpDevelop
{
/// <summary>
/// Interop with the .NET GAC.
/// </summary>
public static class GacInterop
{
/// <summary>
/// Gets the names of all assemblies in the GAC.
/// </summary>
public static IEnumerable<DomAssemblyName> GetGacAssemblyFullNames()
{
IApplicationContext applicationContext = null;
IAssemblyEnum assemblyEnum = null;
IAssemblyName assemblyName = null;
Fusion.CreateAssemblyEnum(out assemblyEnum, null, null, 2, 0);
while (assemblyEnum.GetNextAssembly(out applicationContext, out assemblyName, 0) == 0) {
uint nChars = 0;
assemblyName.GetDisplayName(null, ref nChars, 0);
StringBuilder name = new StringBuilder((int)nChars);
assemblyName.GetDisplayName(name, ref nChars, 0);
yield return new DomAssemblyName(name.ToString());
}
}
#region FindAssemblyInGac
// This region is based on code from Mono.Cecil:
// Author:
// Jb Evain (jbevain@gmail.com)
//
// Copyright (c) 2008 - 2010 Jb Evain
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
static readonly string[] gac_paths = { Fusion.GetGacPath(false), Fusion.GetGacPath(true) };
static readonly string[] gacs = { "GAC_MSIL", "GAC_32", "GAC" };
static readonly string[] prefixes = { string.Empty, "v4.0_" };
/// <summary>
/// Gets the file name for an assembly stored in the GAC.
/// </summary>
public static string FindAssemblyInNetGac (DomAssemblyName reference)
{
// without public key, it can't be in the GAC
if (reference.PublicKeyToken == null)
return null;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < gacs.Length; j++) {
var gac = Path.Combine (gac_paths [i], gacs [j]);
var file = GetAssemblyFile (reference, prefixes [i], gac);
if (File.Exists (file))
return file;
}
}
return null;
}
static string GetAssemblyFile (DomAssemblyName reference, string prefix, string gac)
{
var gac_folder = new StringBuilder ()
.Append (prefix)
.Append (reference.Version)
.Append ("__");
gac_folder.Append (reference.PublicKeyToken);
return Path.Combine (
Path.Combine (
Path.Combine (gac, reference.ShortName), gac_folder.ToString ()),
reference.ShortName + ".dll");
}
#endregion
}
}

153
src/Main/Base/Project/Src/Services/ParserService/LoadSolutionProjects.cs

@ -18,21 +18,14 @@ namespace ICSharpCode.SharpDevelop @@ -18,21 +18,14 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
static class LoadSolutionProjects
{
static JobQueue jobs;
internal static void Initialize()
{
jobs = new JobQueue();
}
static volatile bool isThreadRunning;
static JobQueue jobs = new JobQueue();
/// <summary>
/// Gets whether the LoadSolutionProjects thread is currently running.
/// </summary>
public static bool IsThreadRunning {
get {
return isThreadRunning;
return jobs.IsThreadRunningOrWaitingToStart;
}
}
@ -43,107 +36,17 @@ namespace ICSharpCode.SharpDevelop @@ -43,107 +36,17 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
public static event EventHandler ThreadEnded = delegate {};
static void RaiseThreadEnded(Solution solution)
static void RaiseThreadEnded()
{
Gui.WorkbenchSingleton.SafeThreadAsyncCall(
delegate {
// only raise the event if the solution is still open
if (solution == ProjectService.OpenSolution) {
isThreadRunning = false;
// only raise the event if the thread wasn't re-started
if (!IsThreadRunning) {
ThreadEnded(null, EventArgs.Empty);
}
});
}
#region Reparse projects
// list of projects waiting to reparse references
static List<IProjectContent> reParse1 = new List<ParseProjectContent>();
// list of projects waiting to reparse code
static List<IProjectContent> reParse2 = new List<ParseProjectContent>();
public static void Reparse(IProject project, bool initReferences, bool parseCode)
{
throw new NotImplementedException();
/*
if (jobs == null)
return; // do nothing if service wasn't initialized (e.g. some unit tests)
ParseProjectContent pc = ParserService.GetProjectContent(project) as ParseProjectContent;
if (pc != null) {
if (initReferences) {
lock (reParse1) {
if (!reParse1.Contains(pc)) {
LoggingService.Debug("Enqueue for reinitializing references: " + project);
reParse1.Add(pc);
jobs.AddJob(new JobTask(pm => ReInitializeReferences(pc, pm),
GetLoadReferenceTaskTitle(project.Name),
10
));
}
}
}
if (parseCode) {
lock (reParse2) {
if (!reParse2.Contains(pc)) {
LoggingService.Debug("Enqueue for reparsing code: " + project);
reParse2.Add(pc);
jobs.AddJob(new JobTask(pm => ReparseCode(pc, pm),
GetParseTaskTitle(project.Name),
pc.GetInitializationWorkAmount()
));
}
}
}
jobs.StartRunningIfRequired();
}*/
}
/*
static void ReInitializeReferences(ParseProjectContent pc, IProgressMonitor progressMonitor)
{
lock (reParse1) {
reParse1.Remove(pc);
}
pc.ReInitialize1(progressMonitor);
}
static void ReparseCode(ParseProjectContent pc, IProgressMonitor progressMonitor)
{
lock (reParse2) {
reParse2.Remove(pc);
}
pc.ReInitialize2(progressMonitor);
}*/
#endregion
// do not use an event for this because a solution might be loaded before ParserService
// is initialized
internal static void OnSolutionLoaded(List<IProjectContent> createdContents)
{
WorkbenchSingleton.DebugAssertMainThread();
Debug.Assert(jobs != null);
Solution openedSolution = ProjectService.OpenSolution;
isThreadRunning = true;
WorkbenchSingleton.SafeThreadAsyncCall(ProjectService.ParserServiceCreatedProjectContents);
for (int i = 0; i < createdContents.Count; i++) {
ParseProjectContent pc = createdContents[i];
jobs.AddJob(new JobTask(pc.Initialize1,
GetLoadReferenceTaskTitle(pc.ProjectName),
10));
}
for (int i = 0; i < createdContents.Count; i++) {
ParseProjectContent pc = createdContents[i];
jobs.AddJob(new JobTask(pc.Initialize2,
GetParseTaskTitle(pc.ProjectName),
pc.GetInitializationWorkAmount()));
}
jobs.AddJob(new JobTask(ct => RaiseThreadEnded(openedSolution), "", 0));
jobs.StartRunningIfRequired();
}
static string GetLoadReferenceTaskTitle(string projectName)
{
return "Loading references for " + projectName + "...";
@ -154,26 +57,30 @@ namespace ICSharpCode.SharpDevelop @@ -154,26 +57,30 @@ namespace ICSharpCode.SharpDevelop
return StringParser.Parse("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing} ") + projectName + "...";
}
internal static void InitNewProject(IProjectContent pc)
/// <summary>
/// Adds a new task to the job queue, and starts the LoadSolutionProjects thread (if its not already running).
/// </summary>
/// <param name="action">The action to run. Parameter: a nested progress monitor for the action.</param>
/// <param name="name">Name of the action - shown in the status bar</param>
/// <param name="cost">Cost of the action</param>
public static void AddJob(Action<IProgressMonitor> action, string name, double cost)
{
jobs.AddJob(new JobTask(pc.Initialize1,
GetLoadReferenceTaskTitle(pc.ProjectName),
10));
jobs.AddJob(new JobTask(pc.Initialize2,
GetParseTaskTitle(pc.ProjectName),
pc.GetInitializationWorkAmount()));
jobs.StartRunningIfRequired();
if (action == null)
throw new ArgumentNullException("action");
if (!(cost > 0))
cost = 1; // avoid 0-cost tasks (division by zero)
jobs.AddJob(new JobTask(action, name, cost));
// Start the thread with a bit delay so that the SD UI gets responsive first,
// and so that the total cost is known for showing the progress bar.
System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Background,
new Action(jobs.StartRunningIfRequired));
}
internal static void OnSolutionClosed()
public static void CancelAllJobs()
{
jobs.Clear();
lock (reParse1) {
reParse1.Clear();
}
lock (reParse2) {
reParse2.Clear();
}
}
sealed class JobQueue
@ -196,6 +103,14 @@ namespace ICSharpCode.SharpDevelop @@ -196,6 +103,14 @@ namespace ICSharpCode.SharpDevelop
}
}
public bool IsThreadRunningOrWaitingToStart {
get {
lock (lockObj) {
return this.threadIsRunning || this.actions.Count > 0;
}
}
}
public void StartRunningIfRequired()
{
lock (lockObj) {
@ -233,6 +148,7 @@ namespace ICSharpCode.SharpDevelop @@ -233,6 +148,7 @@ namespace ICSharpCode.SharpDevelop
actions.Dequeue(); // dequeue the null
WorkbenchSingleton.SafeThreadAsyncCall(StartRunningIfRequired);
}
RaiseThreadEnded();
return;
}
task = this.actions.Dequeue();
@ -244,6 +160,7 @@ namespace ICSharpCode.SharpDevelop @@ -244,6 +160,7 @@ namespace ICSharpCode.SharpDevelop
progressMonitor.TaskName = task.name;
try {
using (IProgressMonitor subTask = progressMonitor.CreateSubTask(task.cost / totalWork)) {
subTask.CancellationToken.ThrowIfCancellationRequested();
task.Run(subTask);
}
lock (lockObj) {
@ -283,8 +200,6 @@ namespace ICSharpCode.SharpDevelop @@ -283,8 +200,6 @@ namespace ICSharpCode.SharpDevelop
public JobTask(Action<IProgressMonitor> action, string name, double cost)
{
if (action == null)
throw new ArgumentNullException("action");
this.action = action;
this.name = name;
this.cost = cost;

18
src/Main/Base/Project/Src/Services/ParserService/ParseInformationEventArgs.cs

@ -92,15 +92,19 @@ namespace ICSharpCode.SharpDevelop @@ -92,15 +92,19 @@ namespace ICSharpCode.SharpDevelop
{
FileName fileName;
ITextSource content;
ParseInformation parseInformation;
IParsedFile parsedFile;
public ParserUpdateStepEventArgs(FileName fileName, ITextSource content, ParseInformation parseInformation)
public ParserUpdateStepEventArgs(FileName fileName, ITextSource content, IParsedFile parsedFile)
{
if (parseInformation == null)
throw new ArgumentNullException("parseInformation");
if (fileName == null)
throw new ArgumentNullException("fileName");
if (content == null)
throw new ArgumentNullException("content");
if (parsedFile == null)
throw new ArgumentNullException("parsedFile");
this.fileName = fileName;
this.content = content;
this.parseInformation = parseInformation;
this.parsedFile = parsedFile;
}
public FileName FileName {
@ -115,9 +119,9 @@ namespace ICSharpCode.SharpDevelop @@ -115,9 +119,9 @@ namespace ICSharpCode.SharpDevelop
}
}
public ParseInformation ParseInformation {
public IParsedFile ParsedFile {
get {
return parseInformation;
return parsedFile;
}
}
}

223
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -13,6 +13,7 @@ using System.Threading.Tasks; @@ -13,6 +13,7 @@ using System.Threading.Tasks;
using ICSharpCode.Core;
using ICSharpCode.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
@ -26,46 +27,74 @@ namespace ICSharpCode.SharpDevelop @@ -26,46 +27,74 @@ namespace ICSharpCode.SharpDevelop
{
static readonly object syncLock = new object();
static IList<ParserDescriptor> parserDescriptors;
static Dictionary<IProject, IProjectContent> projectContents = new Dictionary<IProject, IProjectContent>();
static Dictionary<IProjectContent, IProject> projectContents = new Dictionary<IProjectContent, IProject>();
static Dictionary<FileName, FileEntry> fileEntryDict = new Dictionary<FileName, FileEntry>();
#region Manage Project Contents
/// <summary>
/// Gets the project content for the current project.
/// </summary>
/// <remarks>
/// This property is thread-safe; but that the notion of 'current project'
/// might not be meaningful on threads other than the main thread.
/// </remarks>
public static IProjectContent CurrentProjectContent {
[DebuggerStepThrough]
get {
IProject currentProject = ProjectService.CurrentProject;
lock (syncLock) {
if (currentProject == null || !projectContents.ContainsKey(currentProject)) {
return DefaultProjectContent;
}
return projectContents[currentProject];
}
if (currentProject != null)
return currentProject.ProjectContent;
else
return DefaultProjectContent;
}
}
/// <summary>
/// Gets the type resolve context for the current project.
/// </summary>
/// <remarks>
/// To improve performance and ensure the returned data is consistent, use the following code pattern:
/// <code>
/// using (var context = ParserService.CurrentTypeResolveContext.Synchronize()) {
/// ...
/// }
/// </code>
///
/// This property is thread-safe; but the notion of 'current project'
/// might not be meaningful on threads other than the main thread.
/// </remarks>
public static ITypeResolveContext CurrentTypeResolveContext {
get {
throw new NotImplementedException();
IProject currentProject = ProjectService.CurrentProject;
if (currentProject != null) {
return currentProject.TypeResolveContext ?? GetDefaultTypeResolveContext();
} else {
return GetDefaultTypeResolveContext();
}
}
}
public static ITypeResolveContext GetTypeResolveContext(IProject project)
[Obsolete("Use project.ProjectContent instead")]
public static IProjectContent GetProjectContent(IProject project)
{
throw new NotImplementedException();
return project.ProjectContent;
}
public static IProjectContent GetProjectContent(IProject project)
/// <summary>
/// Gets the project that owns the specified project content.
/// Returns null for referenced assemblies.
/// </summary>
public static IProject GetProject(IProjectContent projectContent)
{
if (projectContent == null)
return null;
lock (syncLock) {
IProjectContent pc;
if (projectContents.TryGetValue(project, out pc)) {
return pc;
}
IProject project;
if (projectContents.TryGetValue(projectContent, out project))
return project;
else
return null;
}
return null;
}
/// <summary>
@ -74,33 +103,11 @@ namespace ICSharpCode.SharpDevelop @@ -74,33 +103,11 @@ namespace ICSharpCode.SharpDevelop
public static IEnumerable<IProjectContent> AllProjectContents {
get {
lock (syncLock) {
return projectContents.Values.ToArray();
}
}
}
/// <summary>
/// Gets the default project content used for files outside of projects.
/// </summary>
public static IProjectContent DefaultProjectContent {
get {
lock (syncLock) {
if (defaultProjectContent == null) {
CreateDefaultProjectContent();
}
return defaultProjectContent;
return projectContents.Keys.ToArray();
}
}
}
static void CreateDefaultProjectContent()
{
LoggingService.Info("Creating default project content");
//LoggingService.Debug("Stacktrace is:\n" + Environment.StackTrace);
defaultProjectContent = new DefaultProjectContent();
defaultProjectContent.AddReferencedContent(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
}
/// <summary>
/// Gets all project contents that contain the specified file.
/// </summary>
@ -108,18 +115,21 @@ namespace ICSharpCode.SharpDevelop @@ -108,18 +115,21 @@ namespace ICSharpCode.SharpDevelop
{
List<IProjectContent> result = new List<IProjectContent>();
List<IProjectContent> linkResults = new List<IProjectContent>();
KeyValuePair<IProjectContent, IProject>[] pairs;
lock (syncLock) {
foreach (KeyValuePair<IProject, IProjectContent> projectContent in projectContents) {
FileProjectItem file = projectContent.Key.FindFile(fileName);
if (file != null) {
// Prefer normal files over linked files.
// The order matters because GetParseInformation() will return the ICompilationUnit
// for the first result.
if (file.IsLink)
linkResults.Add(projectContent.Value);
else
result.Add(projectContent.Value);
}
pairs = projectContents.ToArray();
}
foreach (var pair in pairs) {
FileProjectItem file = pair.Value.FindFile(fileName);
if (file != null) {
// Prefer normal files over linked files.
// The order matters because GetParseInformation() will return the ICompilationUnit
// for the first result.
if (file.IsLink)
linkResults.Add(pair.Key);
else
result.Add(pair.Key);
}
}
result.AddRange(linkResults);
@ -128,11 +138,73 @@ namespace ICSharpCode.SharpDevelop @@ -128,11 +138,73 @@ namespace ICSharpCode.SharpDevelop
return result;
}
internal static void RegisterProjectContentForAddedProject(IProject project)
{
IProjectContent newContent = project.ProjectContent;
if (newContent != null) {
lock (syncLock) {
projectContents[newContent] = project;
}
}
}
internal static void RemoveProjectContentForRemovedProject(IProject project)
{
lock (syncLock) {
projectContents.Remove(project);
foreach (var pair in projectContents.ToArray()) {
if (pair.Value == project)
projectContents.Remove(pair.Key);
}
}
}
#endregion
#region Default Project Content
static readonly SimpleProjectContent defaultProjectContent = new SimpleProjectContent();
static readonly Lazy<Task<IProjectContent>[]> defaultReferences = new Lazy<Task<IProjectContent>[]>(
delegate {
string[] assemblies = {
"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
};
List<Task<IProjectContent>> tasks = new List<Task<IProjectContent>>();
foreach (string assemblyName in assemblies) {
DomAssemblyName name = new DomAssemblyName(assemblyName);
string fileName = AssemblyParserService.FindReferenceAssembly(name.ShortName);
if (fileName == null) {
fileName = GacInterop.FindAssemblyInNetGac(name);
}
if (fileName != null) {
tasks.Add(AssemblyParserService.GetAssemblyAsync(FileName.Create(fileName)));
}
}
return tasks.ToArray();
});
/// <summary>
/// Gets the default project content used for files outside of projects.
/// </summary>
public static IProjectContent DefaultProjectContent {
get { return defaultProjectContent; }
}
/// <summary>
/// Gets the type resolve context for the default project content.
/// </summary>
static ITypeResolveContext GetDefaultTypeResolveContext()
{
List<ITypeResolveContext> references = new List<ITypeResolveContext>();
references.Add(defaultProjectContent);
foreach (var task in defaultReferences.Value) {
if (task.IsCompleted && !task.IsFaulted)
references.Add(task.Result);
}
return new CompositeTypeResolveContext(references);
}
#endregion
@ -141,8 +213,6 @@ namespace ICSharpCode.SharpDevelop @@ -141,8 +213,6 @@ namespace ICSharpCode.SharpDevelop
{
if (parserDescriptors == null) {
parserDescriptors = AddInTree.BuildItems<ParserDescriptor>("/Workspace/Parser", null, false);
AssemblyParserService.Initialize();
LoadSolutionProjects.Initialize();
}
}
@ -420,14 +490,14 @@ namespace ICSharpCode.SharpDevelop @@ -420,14 +490,14 @@ namespace ICSharpCode.SharpDevelop
IParsedFile oldUnit = oldUnits.FirstOrDefault(o => o.ProjectContent == pc);
// ensure the new unit is frozen beforewe make it visible to the outside world
newUnits[i].Freeze();
pc.UpdateCompilationUnit(oldUnit, newUnits[i]);
pc.UpdateProjectContent(oldUnit, newUnits[i]);
RaiseParseInformationUpdated(new ParseInformationEventArgs(oldUnit, newParseInfo[i], newParseInfo[i] == resultParseInfo));
}
// remove all old units that don't exist anymore
foreach (IParsedFile oldUnit in oldUnits) {
if (!newUnits.Any(n => n.ProjectContent == oldUnit.ProjectContent)) {
oldUnit.ProjectContent.UpdateCompilationUnit(oldUnit, null);
oldUnit.ProjectContent.UpdateProjectContent(oldUnit, null);
RaiseParseInformationUpdated(new ParseInformationEventArgs(oldUnit, null, false));
}
}
@ -454,7 +524,7 @@ namespace ICSharpCode.SharpDevelop @@ -454,7 +524,7 @@ namespace ICSharpCode.SharpDevelop
this.mainParsedFile = null;
}
foreach (IParsedFile oldUnit in oldUnits) {
oldUnit.ProjectContent.RemoveCompilationUnit(oldUnit);
oldUnit.ProjectContent.UpdateProjectContent(oldUnit, null);
bool isPrimary = parseInfo == oldUnit;
RaiseParseInformationUpdated(new ParseInformationEventArgs(oldUnit, null, isPrimary));
}
@ -808,13 +878,6 @@ namespace ICSharpCode.SharpDevelop @@ -808,13 +878,6 @@ namespace ICSharpCode.SharpDevelop
#region LoadSolutionProjects
public static void Reparse(IProject project, bool initReferences, bool parseCode)
{
if (project == null)
throw new ArgumentNullException("project");
LoadSolutionProjects.Reparse(project, initReferences, parseCode);
}
/// <summary>
/// Gets whether the LoadSolutionProjects thread is currently running.
/// </summary>
@ -834,31 +897,12 @@ namespace ICSharpCode.SharpDevelop @@ -834,31 +897,12 @@ namespace ICSharpCode.SharpDevelop
internal static void OnSolutionLoaded()
{
List<ParseProjectContent> createdContents = new List<ParseProjectContent>();
foreach (IProject project in ProjectService.OpenSolution.Projects) {
try {
LoggingService.Debug("Creating project content for " + project.Name);
ParseProjectContent newContent = project.CreateProjectContent();
if (newContent != null) {
lock (syncLock) {
projectContents[project] = newContent;
}
createdContents.Add(newContent);
}
} catch (Exception e) {
MessageService.ShowException(e, "Error while retrieving project contents from " + project);
}
}
LoadSolutionProjects.OnSolutionLoaded(createdContents);
}
internal static void OnSolutionClosed()
{
LoadSolutionProjects.OnSolutionClosed();
LoadSolutionProjects.CancelAllJobs();
lock (syncLock) {
foreach (IProjectContent content in projectContents.Values) {
content.Dispose();
}
projectContents.Clear();
}
ClearAllFileEntries();
@ -874,19 +918,6 @@ namespace ICSharpCode.SharpDevelop @@ -874,19 +918,6 @@ namespace ICSharpCode.SharpDevelop
foreach (FileEntry entry in entries)
entry.Clear();
}
/// <remarks>Can return null.</remarks>
internal static IProjectContent CreateProjectContentForAddedProject(IProject project)
{
IProjectContent newContent = project.CreateProjectContent();
if (newContent != null) {
lock (syncLock) {
projectContents[project] = newContent;
}
LoadSolutionProjects.InitNewProject(newContent);
}
return newContent;
}
#endregion
}
}

13
src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

@ -203,7 +203,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -203,7 +203,7 @@ namespace ICSharpCode.SharpDevelop.Project
newProject.IdGuid = Guid.NewGuid().ToString().ToUpperInvariant();
}
solutionFolderNode.Container.AddFolder(newProject);
ParserService.CreateProjectContentForAddedProject(newProject);
ParserService.RegisterProjectContentForAddedProject(newProject);
solutionFolderNode.Solution.FixSolutionConfiguration(new IProject[] { newProject });
OnProjectAdded(new ProjectEventArgs(newProject));
}
@ -274,7 +274,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -274,7 +274,6 @@ namespace ICSharpCode.SharpDevelop.Project
MessageService.ShowError(ex.Message);
return;
}
AbstractProject.filesToOpenAfterSolutionLoad.Clear();
try {
string file = GetPreferenceFileName(openSolution.FileName);
Properties properties;
@ -302,16 +301,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -302,16 +301,6 @@ namespace ICSharpCode.SharpDevelop.Project
OnSolutionLoaded(new SolutionEventArgs(openSolution));
}
internal static void ParserServiceCreatedProjectContents()
{
foreach (string file in AbstractProject.filesToOpenAfterSolutionLoad) {
if (File.Exists(file)) {
FileService.OpenFile(file);
}
}
AbstractProject.filesToOpenAfterSolutionLoad.Clear();
}
static void ApplyConfigurationAndReadPreferences()
{
openSolution.ApplySolutionConfigurationAndPlatformToProjects();

Loading…
Cancel
Save