Browse Source

Prevent MSBuild from caching projects when the solution is closed, externally changed, and then reopened.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/dotnet4@4284 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
a4284382c6
  1. 280
      SharpDevelop.sln
  2. 4
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageBinding.cs
  3. 25
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs
  4. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs
  5. 20
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
  6. 4
      src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs
  7. 7
      src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmProject.cs
  8. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLanguageBinding.cs
  9. 16
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonProject.cs
  10. 10
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
  11. 4
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs
  12. 32
      src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs
  13. 4
      src/AddIns/BackendBindings/WixBinding/Project/Src/WixLanguageBinding.cs
  14. 2
      src/Automated.proj
  15. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  16. 3
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
  17. 2
      src/Main/Base/Project/Src/Project/BuildEngine.cs
  18. 19
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  19. 2
      src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs
  20. 58
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
  21. 3
      src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs
  22. 6
      src/Main/Base/Project/Src/Project/MSBuildEngine/ParallelMSBuildManager.cs
  23. 18
      src/Main/Base/Project/Src/Project/MSBuildInternals.cs
  24. 37
      src/Main/Base/Project/Src/Project/ProjectLoadInformation.cs
  25. 16
      src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs
  26. 8
      src/Main/Base/Project/Src/Project/Solution/Solution.cs
  27. 2
      src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs
  28. 32
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs
  29. 2
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  30. 2
      src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs

280
SharpDevelop.sln

@ -6,169 +6,169 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-5 @@ -6,169 +6,169 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-5
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "F227C72C-DB94-463E-A5C9-B48242EEF2FC"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "src\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "src\Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "src\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "F227C72C-DB94-463E-A5C9-B48242EEF2FC"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
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}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "src\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "src\Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{39327899-ED91-4F7F-988C-4FE4E17C014D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "85850832-228D-4358-87F3-5B281D67AE81"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "src\AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
ProjectSection(SolutionItems) = postProject
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}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "src\AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "src\AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "src\AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "src\AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "src\AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "src\AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "src\AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "src\AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "src\AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "src\AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "src\AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "src\AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "src\AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "src\AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "src\AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "src\AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
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}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
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}") = "UnitTesting", "src\AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
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}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "85850832-228D-4358-87F3-5B281D67AE81"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "src\AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -410,73 +410,73 @@ Global @@ -410,73 +410,73 @@ Global
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
F227C72C-DB94-463E-A5C9-B48242EEF2FC = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
F227C72C-DB94-463E-A5C9-B48242EEF2FC = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
{CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
{97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DCA2703D-250A-463E-A68A-07ED105AE6BD} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {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}
{D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {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}
85850832-228D-4358-87F3-5B281D67AE81 = {F355E45F-F54F-4B42-8916-9A633A392789}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{BFA3BF26-33BD-4A65-B84D-C7F30D131668} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{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}
{533F4684-DBA6-4518-B005-C84F22A2DD57} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {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}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {D599885D-E161-4CCE-A66E-7A40C8C4F4CC}
85850832-228D-4358-87F3-5B281D67AE81 = {F355E45F-F54F-4B42-8916-9A633A392789}
{08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {F355E45F-F54F-4B42-8916-9A633A392789}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {F355E45F-F54F-4B42-8916-9A633A392789}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {F355E45F-F54F-4B42-8916-9A633A392789}
{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}
{9196DD8A-B4D4-4780-8742-C5762E547FC2} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {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}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {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}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
{CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {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}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
EndGlobalSection
EndGlobal

4
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooLanguageBinding.cs

@ -23,9 +23,9 @@ namespace Grunwald.BooBinding @@ -23,9 +23,9 @@ namespace Grunwald.BooBinding
}
}
public IProject LoadProject(string fileName, string projectName)
public IProject LoadProject(ProjectLoadInformation loadInformation)
{
return new BooProject(fileName, projectName);
return new BooProject(loadInformation);
}
public IProject CreateProject(ProjectCreateInformation info)

25
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/BooProject.cs

@ -35,17 +35,23 @@ namespace Grunwald.BooBinding @@ -35,17 +35,23 @@ namespace Grunwald.BooBinding
get { return BooLanguageProperties.Instance; }
}
public BooProject(string fileName, string projectName)
public BooProject(ProjectLoadInformation info)
: base(info)
{
this.Name = projectName;
Init();
LoadProject(fileName);
}
public BooProject(ProjectCreateInformation info)
: base(info)
{
Init();
Create(info);
SetProperty("Debug", null, "DefineConstants", "DEBUG;TRACE",
PropertyStorageLocations.ConfigurationSpecific, false);
SetProperty("Release", null, "DefineConstants", "TRACE",
PropertyStorageLocations.ConfigurationSpecific, false);
SetProperty("Strict", "True");
string rspFile = Path.Combine(BooBinPath, "booc.rsp");
if (File.Exists(rspFile)) {
using (StreamReader r = new StreamReader(rspFile)) {
@ -61,17 +67,6 @@ namespace Grunwald.BooBinding @@ -61,17 +67,6 @@ namespace Grunwald.BooBinding
this.AddImport("$(BooBinPath)\\Boo.Microsoft.Build.targets", null);
}
protected override void Create(ProjectCreateInformation information)
{
base.Create(information);
SetProperty("Debug", null, "DefineConstants", "DEBUG;TRACE",
PropertyStorageLocations.ConfigurationSpecific, false);
SetProperty("Release", null, "DefineConstants", "TRACE",
PropertyStorageLocations.ConfigurationSpecific, false);
SetProperty("Strict", "True");
}
void AddReference(string assembly)
{
foreach (ProjectItem item in this.Items) {

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs

@ -22,9 +22,9 @@ namespace CSharpBinding @@ -22,9 +22,9 @@ namespace CSharpBinding
}
}
public IProject LoadProject(string fileName, string projectName)
public IProject LoadProject(ProjectLoadInformation loadInformation)
{
return new CSharpProject(fileName, projectName);
return new CSharpProject(loadInformation);
}
public IProject CreateProject(ProjectCreateInformation info)

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

@ -41,29 +41,21 @@ namespace CSharpBinding @@ -41,29 +41,21 @@ namespace CSharpBinding
reparseCodeSensitiveProperties.Add("DefineConstants");
}
public CSharpProject(string fileName, string projectName)
public CSharpProject(ProjectLoadInformation loadInformation)
: base(loadInformation)
{
this.Name = projectName;
Init();
LoadProject(fileName);
}
public CSharpProject(ProjectCreateInformation info)
{
Init();
Create(info);
}
public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.CSharp.Targets";
public const string ExtendedTargetsFile = @"$(SharpDevelopBinPath)\SharpDevelop.Build.CSharp.targets";
protected override void Create(ProjectCreateInformation information)
public CSharpProject(ProjectCreateInformation info)
: base(info)
{
this.AddImport(DefaultTargetsFile, null);
Init();
// Add import before base.Create call - base.Create will call AddOrRemoveExtensions, which
// needs to change the import when the compact framework is targeted.
base.Create(information);
this.AddImport(DefaultTargetsFile, null);
SetProperty("Debug", null, "CheckForOverflowUnderflow", "True",
PropertyStorageLocations.ConfigurationSpecific, true);

4
src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs

@ -22,9 +22,9 @@ namespace ICSharpCode.ILAsmBinding @@ -22,9 +22,9 @@ namespace ICSharpCode.ILAsmBinding
}
}
public IProject LoadProject(string fileName, string projectName)
public IProject LoadProject(ProjectLoadInformation loadInformation)
{
return new ILAsmProject(fileName, projectName);
return new ILAsmProject(loadInformation);
}
public IProject CreateProject(ProjectCreateInformation info)

7
src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmProject.cs

@ -15,15 +15,14 @@ namespace ICSharpCode.ILAsmBinding @@ -15,15 +15,14 @@ namespace ICSharpCode.ILAsmBinding
{
public class ILAsmProject : CompilableProject
{
public ILAsmProject(string fileName, string projectName)
public ILAsmProject(ProjectLoadInformation info)
: base(info)
{
this.Name = projectName;
LoadProject(fileName);
}
public ILAsmProject(ProjectCreateInformation info)
: base(info)
{
Create(info);
this.AddImport(@"$(SharpDevelopBinPath)\SharpDevelop.Build.MSIL.Targets", null);
}

4
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonLanguageBinding.cs

@ -26,9 +26,9 @@ namespace ICSharpCode.PythonBinding @@ -26,9 +26,9 @@ namespace ICSharpCode.PythonBinding
get { return LanguageName; }
}
public IProject LoadProject(string fileName, string projectName)
public IProject LoadProject(ProjectLoadInformation loadInformation)
{
return new PythonProject(fileName, projectName);
return new PythonProject(loadInformation);
}
public IProject CreateProject(ProjectCreateInformation info)

16
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonProject.cs

@ -20,15 +20,15 @@ namespace ICSharpCode.PythonBinding @@ -20,15 +20,15 @@ namespace ICSharpCode.PythonBinding
{
public const string DefaultTargetsFile = @"$(PythonBinPath)\SharpDevelop.Build.Python.targets";
public PythonProject(string fileName, string projectName)
public PythonProject(ProjectLoadInformation info)
: base(info)
{
Name = projectName;
LoadProject(fileName);
}
public PythonProject(ProjectCreateInformation info)
: base(info)
{
Create(info);
AddImport(DefaultTargetsFile, null);
}
/// <summary>
@ -46,7 +46,7 @@ namespace ICSharpCode.PythonBinding @@ -46,7 +46,7 @@ namespace ICSharpCode.PythonBinding
}
/// <summary>
/// Returns ItemType.Compile if the filename has a
/// Returns ItemType.Compile if the filename has a
/// python extension (.py).
/// </summary>
public override ItemType GetDefaultItemType(string fileName)
@ -71,11 +71,5 @@ namespace ICSharpCode.PythonBinding @@ -71,11 +71,5 @@ namespace ICSharpCode.PythonBinding
public bool HasMainFile {
get { return GetProperty(null, null, "MainFile") != null; }
}
protected override void Create(ProjectCreateInformation information)
{
base.Create(information);
AddImport(DefaultTargetsFile, null);
}
}
}

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

@ -46,26 +46,22 @@ namespace VBNetBinding @@ -46,26 +46,22 @@ namespace VBNetBinding
return new VBNetAmbience();
}
public VBNetProject(string fileName, string projectName)
public VBNetProject(ProjectLoadInformation info)
: base(info)
{
this.Name = projectName;
InitVB();
LoadProject(fileName);
}
public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets";
public const string ExtendedTargetsFile = @"$(SharpDevelopBinPath)\SharpDevelop.Build.VisualBasic.targets";
public VBNetProject(ProjectCreateInformation info)
: base(info)
{
InitVB();
this.AddImport(DefaultTargetsFile, null);
// Add import before Create call - base.Create will call AddOrRemoveExtensions, which
// needs to change the import when the compact framework is targeted.
Create(info);
SetProperty("Debug", null, "DefineConstants", "DEBUG=1,TRACE=1",
PropertyStorageLocations.ConfigurationSpecific, true);
SetProperty("Release", null, "DefineConstants", "TRACE=1",

4
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs

@ -23,9 +23,9 @@ namespace VBNetBinding @@ -23,9 +23,9 @@ namespace VBNetBinding
}
}
public IProject LoadProject(string fileName, string projectName)
public IProject LoadProject(ProjectLoadInformation loadInformation)
{
return new VBNetProject(fileName, projectName);
return new VBNetProject(loadInformation);
}
public IProject CreateProject(ProjectCreateInformation info)

32
src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs

@ -33,15 +33,22 @@ namespace ICSharpCode.WixBinding @@ -33,15 +33,22 @@ namespace ICSharpCode.WixBinding
delegate bool IsFileNameMatch(string fileName);
public WixProject(string fileName, string projectName)
public WixProject(ProjectLoadInformation info)
: base(info)
{
Name = projectName;
LoadProject(fileName);
}
public WixProject(ProjectCreateInformation info)
: base(info)
{
Create(info);
SetProperty("OutputType", "Package");
string wixToolPath = @"$(SharpDevelopBinPath)\Tools\Wix";
AddGuardedProperty("WixToolPath", wixToolPath);
AddGuardedProperty("WixTargetsPath", @"$(WixToolPath)\wix.targets");
AddGuardedProperty("WixTasksPath", @"$(WixToolPath)\WixTasks.dll");
this.AddImport(DefaultTargetsFile, null);
}
public override string Language {
@ -219,23 +226,6 @@ namespace ICSharpCode.WixBinding @@ -219,23 +226,6 @@ namespace ICSharpCode.WixBinding
return base.GetDefaultItemType(fileName);
}
/// <summary>
/// Creates a WixProject with the default settings in its MSBuild file.
/// </summary>
protected override void Create(ProjectCreateInformation information)
{
base.Create(information);
SetProperty("OutputType", "Package");
string wixToolPath = @"$(SharpDevelopBinPath)\Tools\Wix";
AddGuardedProperty("WixToolPath", wixToolPath);
AddGuardedProperty("WixTargetsPath", @"$(WixToolPath)\wix.targets");
AddGuardedProperty("WixTasksPath", @"$(WixToolPath)\WixTasks.dll");
this.AddImport(DefaultTargetsFile, null);
}
/// <summary>
/// AssemblyName must be implemented correctly - used when renaming projects.
/// </summary>

4
src/AddIns/BackendBindings/WixBinding/Project/Src/WixLanguageBinding.cs

@ -22,9 +22,9 @@ namespace ICSharpCode.WixBinding @@ -22,9 +22,9 @@ namespace ICSharpCode.WixBinding
}
}
public IProject LoadProject(string fileName, string projectName)
public IProject LoadProject(ProjectLoadInformation loadInformation)
{
return new WixProject(fileName, projectName);
return new WixProject(loadInformation);
}
public IProject CreateProject(ProjectCreateInformation info)

2
src/Automated.proj

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
properties available for the projects inside the solution
(but this works using the command line) -->
<!-- B) The Wix task assembly is locked if we do not use a separate MSBuild process -->
<!-- C) We need to use MSBuild 3.5, but the build server uses MSBuild 2.0 -->
<!-- C) We need to use MSBuild 4.0, but the build server uses MSBuild 2.0 -->
<MSBuildExecutable>&quot;$(MSBuildBinPath)\..\v4.0.20506\msbuild.exe&quot;</MSBuildExecutable>
<BuildProperties>/p:Configuration=Release</BuildProperties>
<BuildProperties>$(BuildProperties) &quot;/p:SharpDevelopBinPath=$(SharpDevelopBin)&quot;</BuildProperties>

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

@ -199,6 +199,7 @@ @@ -199,6 +199,7 @@
<Compile Include="Src\Project\MSBuildEngine\ParallelMSBuildManager.cs" />
<Compile Include="Src\Project\MSBuildFileProject.cs" />
<Compile Include="Src\Project\MSBuildItemWrapper.cs" />
<Compile Include="Src\Project\ProjectLoadInformation.cs" />
<Compile Include="Src\Project\ProjectStartException.cs" />
<Compile Include="Src\Project\ProjectLoadException.cs" />
<Compile Include="Src\Project\ProjectPropertyChangedEventArgs.cs" />

3
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs

@ -70,7 +70,8 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -70,7 +70,8 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
if (solutionFolderNode == null)
throw new ArgumentNullException("solutionFolderNode");
AddProject(solutionFolderNode, LanguageBindingService.LoadProject(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName)));
ProjectLoadInformation loadInfo = new ProjectLoadInformation(solutionFolderNode.Solution, fileName, Path.GetFileNameWithoutExtension(fileName));
AddProject(solutionFolderNode, LanguageBindingService.LoadProject(loadInfo));
}
public static void AddProject(ISolutionFolderNode solutionFolderNode, IProject newProject)

2
src/Main/Base/Project/Src/Project/BuildEngine.cs

@ -208,7 +208,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -208,7 +208,6 @@ namespace ICSharpCode.SharpDevelop.Project
options.SolutionPlatform = solution.Preferences.ActivePlatform;
BuildEngine engine = new BuildEngine(options, project);
ParallelMSBuildManager.EnableBuildEngine(); // matching disable call will be done in BuildEngine.ReportDone()
engine.buildStart = DateTime.Now;
engine.combinedBuildFeedbackSink = realtimeBuildFeedbackSink;
engine.progressMonitor = progressMonitor;
@ -552,7 +551,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -552,7 +551,6 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
void ReportDone()
{
ParallelMSBuildManager.DisableBuildEngine();
if (combinedBuildFeedbackSink != null) {
if (combinedBuildFeedbackSink is MessageViewSink) {
// Special case GUI-builds so that they have more information available:

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

@ -63,15 +63,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -63,15 +63,9 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
protected readonly Set<string> reparseCodeSensitiveProperties = new Set<string>();
protected CompilableProject()
: base()
protected CompilableProject(ICSharpCode.SharpDevelop.Internal.Templates.ProjectCreateInformation information)
: base(information)
{
}
protected override void Create(ICSharpCode.SharpDevelop.Internal.Templates.ProjectCreateInformation information)
{
base.Create(information);
this.OutputType = OutputType.Exe;
this.RootNamespace = information.RootNamespace;
this.AssemblyName = information.ProjectName;
@ -102,6 +96,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -102,6 +96,11 @@ namespace ICSharpCode.SharpDevelop.Project
PropertyStorageLocations.ConfigurationSpecific, true);
}
protected CompilableProject(ProjectLoadInformation information)
: base(information)
{
}
/// <summary>
/// Gets the path where temporary files are written to during compilation.
/// </summary>
@ -343,7 +342,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -343,7 +342,7 @@ namespace ICSharpCode.SharpDevelop.Project
string guids = GetEvaluatedProperty("ProjectTypeGuids") ?? "";
return guids.Contains("A1591282-1198-4647-A2B1-27E5FF5F6F3B");
}
}
}
public string TestPageFileName {
get {
@ -450,7 +449,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -450,7 +449,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
*/
*/
}
AddOrRemoveExtensions();
}

2
src/Main/Base/Project/Src/Project/Converter/PrjxToSolutionProject.cs

@ -259,7 +259,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -259,7 +259,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
RunConverter(fileReader, convertedFileName + ".user", "CSharp_prjx2csproj_user.xsl", conversion);
}
return LanguageBindingService.LoadProject(parentSolution, convertedFileName, Conversion.GetProjectName(fileName));
return LanguageBindingService.LoadProject(new ProjectLoadInformation(parentSolution, convertedFileName, Conversion.GetProjectName(fileName)));
}
public static void ConvertVSNetProject(string fileName)

58
src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
// <version>$Revision$</version>
// </file>
using Microsoft.Build.Evaluation;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -12,7 +13,6 @@ using System.ComponentModel; @@ -12,7 +13,6 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Templates;
@ -29,8 +29,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -29,8 +29,13 @@ namespace ICSharpCode.SharpDevelop.Project
/// require locking on the SyncRoot. Methods that return underlying MSBuild objects require that
/// the caller locks on the SyncRoot.
/// </summary>
public class MSBuildBasedProject : AbstractProject, IProjectItemListProvider
public abstract class MSBuildBasedProject : AbstractProject, IProjectItemListProvider
{
/// <summary>
/// The project collection that contains this project.
/// </summary>
ProjectCollection projectCollection;
/// <summary>
/// The underlying MSBuild project.
/// </summary>
@ -51,12 +56,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -51,12 +56,6 @@ namespace ICSharpCode.SharpDevelop.Project
"PreBuildEvent"
);
public MSBuildBasedProject()
{
this.projectFile = ProjectRootElement.Create();
this.userProjectFile = ProjectRootElement.Create();
}
public override void Dispose()
{
base.Dispose();
@ -146,14 +145,19 @@ namespace ICSharpCode.SharpDevelop.Project @@ -146,14 +145,19 @@ namespace ICSharpCode.SharpDevelop.Project
#endregion
#region Create new project
protected virtual void Create(ProjectCreateInformation information)
protected MSBuildBasedProject(ProjectCreateInformation information)
{
this.projectCollection = information.Solution.MSBuildProjectCollection;
this.projectFile = ProjectRootElement.Create(projectCollection);
this.userProjectFile = ProjectRootElement.Create(projectCollection);
Name = information.ProjectName;
FileName = information.OutputProjectFileName;
projectFile.FullPath = information.OutputProjectFileName;
projectFile.ToolsVersion = "4.0";
projectFile.DefaultTargets = "Build";
userProjectFile.FullPath = information.OutputProjectFileName + ".user";
base.IdGuid = "{" + Guid.NewGuid().ToString().ToUpperInvariant() + "}";
projectFile.AddProperty(ProjectGuidPropertyName, IdGuid);
@ -307,7 +311,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -307,7 +311,7 @@ namespace ICSharpCode.SharpDevelop.Project
void UnloadCurrentlyOpenProject()
{
if (currentlyOpenProject != null) {
MSBuildInternals.UnloadProject(currentlyOpenProject);
MSBuildInternals.UnloadProject(projectCollection, currentlyOpenProject);
currentlyOpenProject = null;
}
}
@ -351,7 +355,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -351,7 +355,7 @@ namespace ICSharpCode.SharpDevelop.Project
InitializeMSBuildProjectProperties(globalProps);
globalProps["Configuration"] = configuration;
globalProps["Platform"] = platform;
MSBuild.Project project = MSBuildInternals.LoadProject(projectFile, globalProps);
MSBuild.Project project = MSBuildInternals.LoadProject(projectCollection, projectFile, globalProps);
if (openCurrentConfiguration)
currentlyOpenProject = project;
return new ConfiguredProject(this, project, !openCurrentConfiguration);
@ -400,7 +404,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -400,7 +404,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
try {
if (unloadProjectOnDispose) {
MSBuildInternals.UnloadProject(this.Project);
MSBuildInternals.UnloadProject(p.projectCollection, this.Project);
}
} finally {
System.Threading.Monitor.Exit(p.SyncRoot);
@ -1046,24 +1050,26 @@ namespace ICSharpCode.SharpDevelop.Project @@ -1046,24 +1050,26 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
protected virtual void LoadProject(string fileName)
protected MSBuildBasedProject(ProjectLoadInformation loadInformation)
{
lock (SyncRoot) {
isLoading = true;
try {
LoadProjectInternal(fileName);
} finally {
isLoading = false;
}
if (loadInformation == null)
throw new ArgumentNullException("loadInformation");
this.Name = loadInformation.ProjectName;
isLoading = true;
try {
LoadProjectInternal(loadInformation);
} finally {
isLoading = false;
}
}
void LoadProjectInternal(string fileName)
void LoadProjectInternal(ProjectLoadInformation loadInformation)
{
this.FileName = fileName;
this.projectCollection = loadInformation.ParentSolution.MSBuildProjectCollection;
this.FileName = loadInformation.FileName;
//try {
projectFile = ProjectRootElement.Open(fileName);
projectFile = ProjectRootElement.Open(loadInformation.FileName, projectCollection);
/*} catch (MSBuild.InvalidProjectFileException ex) {
LoggingService.Warn(ex);
LoggingService.Warn("ErrorCode = " + ex.ErrorCode);
@ -1095,13 +1101,15 @@ namespace ICSharpCode.SharpDevelop.Project @@ -1095,13 +1101,15 @@ namespace ICSharpCode.SharpDevelop.Project
}
}*/
string userFileName = fileName + ".user";
string userFileName = loadInformation.FileName + ".user";
if (File.Exists(userFileName)) {
//try {
userProjectFile = ProjectRootElement.Open(userFileName);
userProjectFile = ProjectRootElement.Open(userFileName, projectCollection);
/*} catch (MSBuild.InvalidProjectFileException ex) {
throw new ProjectLoadException("Error loading user part " + userFileName + ":\n" + ex.Message);
}*/
} else {
userProjectFile = ProjectRootElement.Create(userFileName, projectCollection);
}
this.ActiveConfiguration = GetEvaluatedProperty("Configuration") ?? this.ActiveConfiguration;

3
src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs

@ -182,6 +182,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -182,6 +182,7 @@ namespace ICSharpCode.SharpDevelop.Project
InterestingTasks.AddRange(MSBuildEngine.CompileTaskNames);
/*
// Use a temporary project collection to prevent MSBuild from opening the element from the global collection
// - we don't want to modify the ProjectRootElement opened as project because we don't want to save
// back our changes to disk.
@ -206,7 +207,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -206,7 +207,7 @@ namespace ICSharpCode.SharpDevelop.Project
new SharpDevelopLogger(this),
new BuildLogFileLogger(projectFile.FullPath + ".log", LoggerVerbosity.Diagnostic)
};
ParallelMSBuildManager.StartBuild(requestData, loggers, OnComplete);
ParallelMSBuildManager.StartBuild(requestData, loggers, OnComplete);*/
}
void OnComplete(BuildSubmission submission)

6
src/Main/Base/Project/Src/Project/MSBuildEngine/ParallelMSBuildManager.cs

@ -44,7 +44,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -44,7 +44,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
/// <param name="beginBuild">Specifies whether the build engine should be started immediately.
/// If false (default), the build engine will start on the first StartBuild() call.</param>
public static void EnableBuildEngine(bool beginBuild = false)
public static void EnableBuildEngine(bool beginBuild)
{
lock (enableDisableLock) {
if (!buildIsRunning && beginBuild) {
@ -58,7 +58,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -58,7 +58,9 @@ namespace ICSharpCode.SharpDevelop.Project
#endif
};
parameters.EnableNodeReuse = false;
parameters.MaxNodeCount = BuildOptions.DefaultParallelProjectCount;
// parallel build seems to break in-memory modifications of the project (additionalTargetFiles+_ComputeNonExistentFileProperty),
// so we keep it disabled for the moment.
parameters.MaxNodeCount = 1; //BuildOptions.DefaultParallelProjectCount;
BuildManager.DefaultBuildManager.BeginBuild(parameters);
}
enableCount++;

18
src/Main/Base/Project/Src/Project/MSBuildInternals.cs

@ -32,34 +32,34 @@ namespace ICSharpCode.SharpDevelop.Project @@ -32,34 +32,34 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
public readonly static object GlobalProjectCollectionLock = new object();
internal static void UnloadProject(MSBuild.Evaluation.Project project)
internal static void UnloadProject(MSBuild.Evaluation.ProjectCollection projectCollection, MSBuild.Evaluation.Project project)
{
lock (GlobalProjectCollectionLock) {
ProjectCollection.GlobalProjectCollection.UnloadProject(project);
projectCollection.UnloadProject(project);
}
}
internal static MSBuild.Evaluation.Project LoadProject(ProjectRootElement rootElement, IDictionary<string, string> globalProps)
internal static MSBuild.Evaluation.Project LoadProject(MSBuild.Evaluation.ProjectCollection projectCollection, ProjectRootElement rootElement, IDictionary<string, string> globalProps)
{
lock (GlobalProjectCollectionLock) {
string toolsVersion = rootElement.ToolsVersion;
if (string.IsNullOrEmpty(toolsVersion))
toolsVersion = ProjectCollection.GlobalProjectCollection.DefaultToolsVersion;
return new MSBuild.Evaluation.Project(rootElement, globalProps, toolsVersion, ProjectCollection.GlobalProjectCollection);
toolsVersion = projectCollection.DefaultToolsVersion;
return new MSBuild.Evaluation.Project(rootElement, globalProps, toolsVersion, projectCollection);
}
}
internal static ProjectInstance LoadProjectInstance(ProjectRootElement rootElement, IDictionary<string, string> globalProps)
internal static ProjectInstance LoadProjectInstance(MSBuild.Evaluation.ProjectCollection projectCollection, ProjectRootElement rootElement, IDictionary<string, string> globalProps)
{
lock (GlobalProjectCollectionLock) {
string toolsVersion = rootElement.ToolsVersion;
if (string.IsNullOrEmpty(toolsVersion))
toolsVersion = ProjectCollection.GlobalProjectCollection.DefaultToolsVersion;
return new ProjectInstance(rootElement, globalProps, toolsVersion, ProjectCollection.GlobalProjectCollection);
toolsVersion = projectCollection.DefaultToolsVersion;
return new ProjectInstance(rootElement, globalProps, toolsVersion, projectCollection);
}
}
const string MSBuildXmlNamespace = "http://schemas.microsoft.com/developer/msbuild/2003";
public const string MSBuildXmlNamespace = "http://schemas.microsoft.com/developer/msbuild/2003";
#region Escaping
/// <summary>

37
src/Main/Base/Project/Src/Project/ProjectLoadInformation.cs

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
/*
* Created by SharpDevelop.
* User: Daniel
* Date: 12.06.2009
* Time: 20:48
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Description of ProjectLoadInformation.
/// </summary>
public class ProjectLoadInformation
{
public Solution ParentSolution { get; private set; }
public string FileName { get; private set; }
public string ProjectName { get; private set; }
public string TypeGuid { get; set; }
public Gui.IProgressMonitor ProgressMonitor { get; set; }
public ProjectLoadInformation(Solution parentSolution, string fileName, string projectName)
{
if (parentSolution == null)
throw new ArgumentNullException("parentSolution");
if (fileName == null)
throw new ArgumentNullException("fileName");
if (projectName == null)
throw new ArgumentNullException("projectName");
this.ParentSolution = parentSolution;
this.FileName = fileName;
this.ProjectName = projectName;
}
}
}

16
src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs

@ -56,7 +56,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -56,7 +56,9 @@ namespace ICSharpCode.SharpDevelop.Project
return idGuid;
}
set {
idGuid = value;
lock (syncRoot) {
idGuid = value;
}
}
}
@ -66,7 +68,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -66,7 +68,9 @@ namespace ICSharpCode.SharpDevelop.Project
return location;
}
set {
location = value;
lock (syncRoot) {
location = value;
}
}
}
@ -76,7 +80,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -76,7 +80,9 @@ namespace ICSharpCode.SharpDevelop.Project
return name;
}
set {
name = value;
lock (syncRoot) {
name = value;
}
}
}
@ -98,7 +104,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -98,7 +104,9 @@ namespace ICSharpCode.SharpDevelop.Project
return typeGuid;
}
set {
typeGuid = value;
lock (syncRoot) {
typeGuid = value;
}
}
}
}

8
src/Main/Base/Project/Src/Project/Solution/Solution.cs

@ -32,8 +32,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -32,8 +32,11 @@ namespace ICSharpCode.SharpDevelop.Project
public Solution()
{
preferences = new SolutionPreferences(this);
this.MSBuildProjectCollection = new Microsoft.Build.Evaluation.ProjectCollection();
}
public Microsoft.Build.Evaluation.ProjectCollection MSBuildProjectCollection { get; private set; }
#region Enumerate projects/folders
public IProject FindProjectContainingFile(string fileName)
{
@ -526,7 +529,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -526,7 +529,10 @@ namespace ICSharpCode.SharpDevelop.Project
SolutionFolder newFolder = SolutionFolder.ReadFolder(sr, title, location, guid);
newSolution.AddFolder(newFolder);
} else {
IProject newProject = LanguageBindingService.LoadProject(newSolution, location, title, projectGuid, progressMonitor);
ProjectLoadInformation loadInfo = new ProjectLoadInformation(newSolution, location, title);
loadInfo.TypeGuid = projectGuid;
loadInfo.ProgressMonitor = progressMonitor;
IProject newProject = LanguageBindingService.LoadProject(loadInfo);
ReadProjectSections(sr, newProject.ProjectSections);
newProject.IdGuid = guid;
newSolution.AddFolder(newProject);

2
src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs

@ -24,7 +24,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -24,7 +24,7 @@ namespace ICSharpCode.SharpDevelop.Project
get;
}
IProject LoadProject(string fileName, string projectName);
IProject LoadProject(ProjectLoadInformation info);
/// <summary>
/// Creates a IProject out of the given ProjetCreateInformation object.

32
src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs

@ -88,19 +88,14 @@ namespace ICSharpCode.SharpDevelop @@ -88,19 +88,14 @@ namespace ICSharpCode.SharpDevelop
return null;
}
public static IProject LoadProject(Solution parentSolution, string location, string title)
public static IProject LoadProject(ProjectLoadInformation loadInformation)
{
return LoadProject(parentSolution, location, title, "{" + Guid.Empty.ToString() + "}", null);
}
public static IProject LoadProject(Solution parentSolution, string location, string title, string projectTypeGuid, IProgressMonitor progressMonitor)
{
if (location == null)
throw new ArgumentNullException("location");
if (title == null)
throw new ArgumentNullException("title");
if (projectTypeGuid == null)
throw new ArgumentNullException("projectTypeGuid");
if (loadInformation == null)
throw new ArgumentNullException("loadInformation");
string location = FileUtility.NormalizePath(loadInformation.FileName);
string title = loadInformation.ProjectName;
IProgressMonitor progressMonitor = loadInformation.ProgressMonitor;
if (progressMonitor != null) {
progressMonitor.BeginTask("Loading " + title, 0, false);
@ -109,24 +104,23 @@ namespace ICSharpCode.SharpDevelop @@ -109,24 +104,23 @@ namespace ICSharpCode.SharpDevelop
IProject newProject;
if (!File.Exists(location)) {
newProject = new MissingProject(location, title);
newProject.TypeGuid = projectTypeGuid;
newProject.TypeGuid = loadInformation.TypeGuid;
} else {
ILanguageBinding binding = LanguageBindingService.GetBindingPerProjectFile(location);
if (binding != null) {
location = FileUtility.NormalizePath(location);
try {
newProject = binding.LoadProject(location, title);
newProject = binding.LoadProject(loadInformation);
} catch (ProjectLoadException ex) {
LoggingService.Warn("Project load error", ex);
if (progressMonitor != null) progressMonitor.ShowingDialog = true;
newProject = new UnknownProject(location, title, ex.Message, true);
newProject.TypeGuid = projectTypeGuid;
newProject.TypeGuid = loadInformation.TypeGuid;
if (progressMonitor != null) progressMonitor.ShowingDialog = false;
} catch (UnauthorizedAccessException ex) {
LoggingService.Warn("Project load error", ex);
if (progressMonitor != null) progressMonitor.ShowingDialog = true;
newProject = new UnknownProject(location, title, ex.Message, true);
newProject.TypeGuid = projectTypeGuid;
newProject.TypeGuid = loadInformation.TypeGuid;
if (progressMonitor != null) progressMonitor.ShowingDialog = false;
}
} else {
@ -135,10 +129,10 @@ namespace ICSharpCode.SharpDevelop @@ -135,10 +129,10 @@ namespace ICSharpCode.SharpDevelop
|| ".build".Equals(ext, StringComparison.OrdinalIgnoreCase))
{
newProject = new MSBuildFileProject(location, title);
newProject.TypeGuid = projectTypeGuid;
newProject.TypeGuid = loadInformation.TypeGuid;
} else {
newProject = new UnknownProject(location, title);
newProject.TypeGuid = projectTypeGuid;
newProject.TypeGuid = loadInformation.TypeGuid;
}
}
}

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

@ -177,7 +177,7 @@ namespace ICSharpCode.SharpDevelop @@ -177,7 +177,7 @@ namespace ICSharpCode.SharpDevelop
// multiply Count with 2 so that the progress bar is only at 50% when references are done
progressMonitor.BeginTask("Loading references...", createdContents.Count * 2, false);
ParallelMSBuildManager.EnableBuildEngine();
ParallelMSBuildManager.EnableBuildEngine(false);
try {
for (int i = 0; i < createdContents.Count; i++) {
if (abortLoadSolutionProjectsThread) return;

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

@ -370,7 +370,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -370,7 +370,7 @@ namespace ICSharpCode.SharpDevelop.Project
ILanguageBinding binding = LanguageBindingService.GetBindingPerProjectFile(fileName);
IProject project;
if (binding != null) {
project = LanguageBindingService.LoadProject(solution, fileName, solution.Name);
project = LanguageBindingService.LoadProject(new ProjectLoadInformation(solution, fileName, solution.Name));
if (project is UnknownProject) {
if (((UnknownProject)project).WarningDisplayedToUser == false) {
((UnknownProject)project).ShowWarningMessageBox();

Loading…
Cancel
Save