Browse Source

Merge branch 'master' into Debugger

newNRvisualizers
David Srbecký 13 years ago
parent
commit
dc58692d04
  1. 542
      SharpDevelop.sln
  2. 38
      data/resources/StringResources.de.resx
  3. 57
      data/resources/StringResources.fr.resx
  4. 37
      data/resources/StringResources.it.resx
  5. 75
      data/resources/StringResources.nl.resx
  6. 58
      data/resources/StringResources.resx
  7. 3191
      data/resources/StringResources.tr.resx
  8. BIN
      data/templates/packages/Modernizr.1.7.nupkg
  9. BIN
      data/templates/packages/Modernizr.2.5.3.nupkg
  10. BIN
      data/templates/packages/jQuery.1.6.1.nupkg
  11. BIN
      data/templates/packages/jQuery.1.7.2.nupkg
  12. 2
      data/templates/project/CSharp/ConsoleProject.xpt
  13. 2
      data/templates/project/CSharp/FormsProject.xpt
  14. 8
      data/templates/project/CSharp/MvcRazorProject.xpt
  15. 8
      data/templates/project/CSharp/MvcWebProject.xpt
  16. 2
      data/templates/project/CSharp/NotifyIcon.xpt
  17. 27
      data/templates/project/CSharp/PortableAssemblyInfo.cs
  18. 58
      data/templates/project/CSharp/PortableLibrary.xpt
  19. 2
      data/templates/project/CSharp/Service.xpt
  20. 2
      data/templates/project/CSharp/WPFApplication.xpt
  21. 2
      data/templates/project/CSharp/WPFNavigationApplication.xpt
  22. 20
      data/templates/project/ComplexExample.xpt.test
  23. 2
      data/templates/project/VB/ConsoleProject.xpt
  24. 2
      data/templates/project/VB/FormsProject.xpt
  25. 8
      data/templates/project/VB/MvcRazorProject.xpt
  26. 8
      data/templates/project/VB/MvcWebProject.xpt
  27. 2
      data/templates/project/VB/NotifyIcon.xpt
  28. 2
      data/templates/project/VB/Service.xpt
  29. 2
      data/templates/project/VB/WPFApplication.xpt
  30. 2
      data/templates/project/VB/WPFNavigationApplication.xpt
  31. 69
      samples/MSTest/MSTest.SharpDevelop.Tests/MSTest.SharpDevelop.Tests.csproj
  32. 338
      samples/MSTest/MSTest.SharpDevelop.Tests/MSTestFrameworkTests.cs
  33. 184
      samples/MSTest/MSTest.SharpDevelop.Tests/MSTestResultsTests.cs
  34. 31
      samples/MSTest/MSTest.SharpDevelop.Tests/Properties/AssemblyInfo.cs
  35. 24
      samples/MSTest/MSTest.SharpDevelop.sln
  36. 103
      samples/MSTest/MSTest.SharpDevelop/MSTest.SharpDevelop.csproj
  37. 30
      samples/MSTest/MSTest.SharpDevelop/MSTest.addin
  38. 46
      samples/MSTest/MSTest.SharpDevelop/MSTestApplication.cs
  39. 37
      samples/MSTest/MSTest.SharpDevelop/MSTestApplicationCommandLine.cs
  40. 134
      samples/MSTest/MSTest.SharpDevelop/MSTestDebugger.cs
  41. 109
      samples/MSTest/MSTest.SharpDevelop/MSTestFramework.cs
  42. 26
      samples/MSTest/MSTest.SharpDevelop/MSTestOptions.cs
  43. 32
      samples/MSTest/MSTest.SharpDevelop/MSTestOptionsPanel.xaml
  44. 64
      samples/MSTest/MSTest.SharpDevelop/MSTestOptionsPanel.xaml.cs
  45. 31
      samples/MSTest/MSTest.SharpDevelop/MSTestQualifiedClassName.cs
  46. 93
      samples/MSTest/MSTest.SharpDevelop/MSTestResult.cs
  47. 91
      samples/MSTest/MSTest.SharpDevelop/MSTestResults.cs
  48. 27
      samples/MSTest/MSTest.SharpDevelop/MSTestResultsFileName.cs
  49. 138
      samples/MSTest/MSTest.SharpDevelop/MSTestRunner.cs
  50. 28
      samples/MSTest/MSTest.SharpDevelop/ProjectItemExtensions.cs
  51. 31
      samples/MSTest/MSTest.SharpDevelop/Properties/AssemblyInfo.cs
  52. 4
      src/AddIns/Analysis/CodeCoverage/Test/Testing/CodeCoverageTestRunnerTests.cs
  53. 4
      src/AddIns/Analysis/CodeCoverage/Test/Testing/PartCoverApplicationTests.cs
  54. 10
      src/AddIns/Analysis/UnitTesting/Src/NUnitConsoleApplication.cs
  55. 29
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/NUnitConsoleCommandLineTests.cs
  56. 2
      src/AddIns/Analysis/UnitTesting/Test/Frameworks/NUnitConsoleProcessStartInfoTestFixture.cs
  57. 2
      src/AddIns/Analysis/UnitTesting/Test/Tree/RunNUnitTestsForMethodTestFixture.cs
  58. 4
      src/AddIns/Analysis/UnitTesting/Test/Tree/RunNUnitTestsWithDebuggerTestFixture.cs
  59. 2
      src/AddIns/Analysis/UnitTesting/Test/Tree/RunTestInPadCommandTestFixture.cs
  60. 4
      src/AddIns/Analysis/UnitTesting/Test/Tree/RunTestWithDebuggerCommandTestFixture.cs
  61. 1
      src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs
  62. 2
      src/AddIns/Analysis/UnitTesting/UnitTesting.csproj
  63. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
  64. 77
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/ViewInBrowser.cs
  65. 87
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
  66. 2
      src/AddIns/BackendBindings/CSharpBinding/Tests/MockTextEditor.cs
  67. 2
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs
  68. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonResolverContext.cs
  69. 108
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/LoadFormWithButtonFollowedByTimerTestFixture.cs
  70. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
  71. 48
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs
  72. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/ProjectImports.cs
  73. 40
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
  74. 47
      src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/EndSubTests.cs
  75. 48
      src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/IndentationTests.cs
  76. 2
      src/AddIns/BackendBindings/VBNetBinding/Test/MockTextEditor.cs
  77. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MockTextEditor.cs
  78. 2
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs
  79. 10
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompilationUnit.cs
  80. 21
      src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptions.cs
  81. 14
      src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptionsPanel.xaml.cs
  82. 10
      src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingSymbolsPanel.cs
  83. 4
      src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingSymbolsPanel.resx
  84. 7
      src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs
  85. 10
      src/AddIns/Debugger/Debugger.AddIn/TreeModel/SharpTreeNodeAdapter.cs
  86. 4
      src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs
  87. 9
      src/AddIns/Debugger/Debugger.Core/IDStringProvider.cs
  88. 2
      src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs
  89. 7
      src/AddIns/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs
  90. 24
      src/AddIns/Debugger/Debugger.Core/Process.cs
  91. 5
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
  92. 16
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditSyntaxHighlighterAdapter.cs
  93. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  94. 38
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs
  95. 45
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  96. 29
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  97. 22
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/FoldingCommands.cs
  98. 92
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizableHighlightingColorizer.cs
  99. 10
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizedHighlightingColor.cs
  100. 6
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs
  101. Some files were not shown because too many files have changed in this diff Show More

542
SharpDevelop.sln

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # Visual Studio 2010
# SharpDevelop 4.2.0.8634-beta # SharpDevelop 4.2.0.8783
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
@ -1099,6 +1099,546 @@ Global
{062B7E01-AF3D-430D-BE33-17FF3EF4F647}.Release|Win32.ActiveCfg = Release|x86 {062B7E01-AF3D-430D-BE33-17FF3EF4F647}.Release|Win32.ActiveCfg = Release|x86
{062B7E01-AF3D-430D-BE33-17FF3EF4F647}.Release|x86.Build.0 = Release|x86 {062B7E01-AF3D-430D-BE33-17FF3EF4F647}.Release|x86.Build.0 = Release|x86
{062B7E01-AF3D-430D-BE33-17FF3EF4F647}.Release|x86.ActiveCfg = Release|x86 {062B7E01-AF3D-430D-BE33-17FF3EF4F647}.Release|x86.ActiveCfg = Release|x86
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Win32.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|x86.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|x86.ActiveCfg = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Win32.Build.0 = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Win32.ActiveCfg = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|x86.Build.0 = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|x86.ActiveCfg = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|Win32.Build.0 = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|x86.Build.0 = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|x86.ActiveCfg = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|Win32.Build.0 = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|Win32.ActiveCfg = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|x86.Build.0 = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|x86.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Win32.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Win32.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Win32.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.ActiveCfg = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|Win32.Build.0 = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|x86.Build.0 = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|x86.ActiveCfg = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|Win32.Build.0 = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|Win32.ActiveCfg = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|x86.Build.0 = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|x86.ActiveCfg = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Win32.Build.0 = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|x86.Build.0 = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|x86.ActiveCfg = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Win32.Build.0 = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Win32.ActiveCfg = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|x86.Build.0 = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|x86.ActiveCfg = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|Win32.Build.0 = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|Win32.ActiveCfg = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|x86.Build.0 = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|x86.ActiveCfg = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|Win32.Build.0 = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|Win32.ActiveCfg = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|x86.Build.0 = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|x86.ActiveCfg = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|Win32.Build.0 = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|Win32.ActiveCfg = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|x86.Build.0 = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|x86.ActiveCfg = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|Win32.Build.0 = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|Win32.ActiveCfg = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|x86.Build.0 = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|x86.ActiveCfg = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|Win32.Build.0 = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|Win32.ActiveCfg = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|x86.Build.0 = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|x86.ActiveCfg = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|Win32.Build.0 = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|Win32.ActiveCfg = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|x86.Build.0 = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|x86.ActiveCfg = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|Win32.Build.0 = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|x86.Build.0 = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|x86.ActiveCfg = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|Win32.Build.0 = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|Win32.ActiveCfg = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|x86.Build.0 = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|x86.ActiveCfg = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Win32.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|x86.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|x86.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Win32.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Win32.ActiveCfg = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|x86.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|x86.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Win32.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|x86.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|x86.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Win32.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Win32.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|x86.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|x86.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Win32.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Win32.ActiveCfg = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|x86.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|x86.ActiveCfg = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Win32.Build.0 = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Win32.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|x86.Build.0 = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|x86.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Win32.Build.0 = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|x86.Build.0 = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|x86.ActiveCfg = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Win32.Build.0 = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Win32.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|x86.Build.0 = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|x86.ActiveCfg = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Win32.Build.0 = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|x86.Build.0 = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|x86.ActiveCfg = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Win32.Build.0 = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Win32.ActiveCfg = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|x86.Build.0 = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|x86.ActiveCfg = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|Win32.Build.0 = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|x86.Build.0 = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|x86.ActiveCfg = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|Win32.Build.0 = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|Win32.ActiveCfg = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|x86.Build.0 = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|x86.ActiveCfg = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Win32.Build.0 = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|x86.Build.0 = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Win32.Build.0 = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Win32.ActiveCfg = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|x86.Build.0 = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|x86.ActiveCfg = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|Win32.Build.0 = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|Win32.ActiveCfg = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|x86.Build.0 = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|x86.ActiveCfg = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|Win32.Build.0 = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|Win32.ActiveCfg = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|x86.Build.0 = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|x86.ActiveCfg = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|Win32.Build.0 = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|x86.Build.0 = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|x86.ActiveCfg = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|Win32.Build.0 = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|Win32.ActiveCfg = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|x86.Build.0 = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|x86.ActiveCfg = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|Win32.Build.0 = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|x86.Build.0 = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|x86.ActiveCfg = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|Win32.Build.0 = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|Win32.ActiveCfg = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|x86.Build.0 = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|x86.ActiveCfg = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|Win32.Build.0 = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|x86.Build.0 = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|x86.ActiveCfg = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|Win32.Build.0 = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|Win32.ActiveCfg = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|x86.Build.0 = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|x86.ActiveCfg = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|Win32.Build.0 = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|x86.Build.0 = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|x86.ActiveCfg = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|Win32.Build.0 = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|Win32.ActiveCfg = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|x86.Build.0 = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|x86.ActiveCfg = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|Win32.Build.0 = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|x86.Build.0 = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|x86.ActiveCfg = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|Win32.Build.0 = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|Win32.ActiveCfg = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|x86.Build.0 = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|x86.ActiveCfg = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|Win32.Build.0 = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|x86.Build.0 = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|Win32.Build.0 = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|Win32.ActiveCfg = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|x86.Build.0 = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|x86.ActiveCfg = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|Win32.Build.0 = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|x86.Build.0 = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|x86.ActiveCfg = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|Win32.Build.0 = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|Win32.ActiveCfg = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|x86.Build.0 = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|x86.ActiveCfg = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|Win32.Build.0 = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|x86.Build.0 = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|x86.ActiveCfg = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|Win32.Build.0 = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|Win32.ActiveCfg = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|x86.Build.0 = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|x86.ActiveCfg = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|Win32.Build.0 = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|x86.Build.0 = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|x86.ActiveCfg = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|Win32.Build.0 = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|Win32.ActiveCfg = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|x86.Build.0 = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|x86.ActiveCfg = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Win32.Build.0 = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|x86.Build.0 = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|x86.ActiveCfg = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Win32.Build.0 = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Win32.ActiveCfg = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|x86.Build.0 = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|x86.ActiveCfg = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|Win32.Build.0 = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|Win32.ActiveCfg = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|x86.Build.0 = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|x86.ActiveCfg = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|Win32.Build.0 = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|Win32.ActiveCfg = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|x86.Build.0 = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|x86.ActiveCfg = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Win32.Build.0 = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Win32.ActiveCfg = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|x86.Build.0 = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|x86.ActiveCfg = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Win32.Build.0 = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Win32.ActiveCfg = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|x86.Build.0 = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|x86.ActiveCfg = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|Win32.Build.0 = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|x86.Build.0 = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|x86.ActiveCfg = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|Win32.Build.0 = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|Win32.ActiveCfg = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|x86.Build.0 = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|x86.ActiveCfg = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Win32.Build.0 = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|x86.Build.0 = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|x86.ActiveCfg = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Win32.Build.0 = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Win32.ActiveCfg = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|x86.Build.0 = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|x86.ActiveCfg = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Win32.Build.0 = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|x86.Build.0 = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|x86.ActiveCfg = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Win32.Build.0 = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Win32.ActiveCfg = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|x86.Build.0 = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|x86.ActiveCfg = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|Win32.Build.0 = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|x86.Build.0 = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|x86.ActiveCfg = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|Win32.Build.0 = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|Win32.ActiveCfg = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|x86.Build.0 = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|x86.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Win32.Build.0 = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|x86.Build.0 = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Win32.Build.0 = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Win32.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|x86.Build.0 = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|x86.ActiveCfg = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Win32.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|x86.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|x86.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Win32.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Win32.ActiveCfg = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|x86.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|x86.ActiveCfg = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|x86.Build.0 = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|x86.ActiveCfg = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|x86.Build.0 = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|x86.ActiveCfg = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|Win32.Build.0 = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|x86.Build.0 = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|x86.ActiveCfg = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|Win32.Build.0 = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|Win32.ActiveCfg = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|x86.Build.0 = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|x86.ActiveCfg = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|Win32.Build.0 = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|x86.Build.0 = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|Win32.Build.0 = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|Win32.ActiveCfg = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|x86.Build.0 = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|x86.ActiveCfg = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Win32.Build.0 = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|x86.Build.0 = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Win32.Build.0 = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Win32.ActiveCfg = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|x86.Build.0 = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|x86.ActiveCfg = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Win32.Build.0 = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Win32.ActiveCfg = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|x86.Build.0 = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|x86.ActiveCfg = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Win32.Build.0 = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Win32.ActiveCfg = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|x86.Build.0 = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|x86.ActiveCfg = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Win32.Build.0 = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|x86.Build.0 = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|x86.ActiveCfg = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Win32.Build.0 = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Win32.ActiveCfg = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|x86.Build.0 = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|x86.ActiveCfg = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|Win32.Build.0 = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|x86.Build.0 = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|x86.ActiveCfg = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|Win32.Build.0 = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|Win32.ActiveCfg = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|x86.Build.0 = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|x86.ActiveCfg = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|Win32.Build.0 = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|x86.Build.0 = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|x86.ActiveCfg = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|Win32.Build.0 = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|Win32.ActiveCfg = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|x86.Build.0 = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|x86.ActiveCfg = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Win32.Build.0 = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|x86.Build.0 = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|x86.ActiveCfg = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Win32.Build.0 = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Win32.ActiveCfg = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|x86.Build.0 = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|x86.ActiveCfg = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|Win32.Build.0 = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|x86.Build.0 = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|x86.ActiveCfg = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|Win32.Build.0 = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|Win32.ActiveCfg = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|x86.Build.0 = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|x86.ActiveCfg = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|Win32.Build.0 = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|x86.Build.0 = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|x86.ActiveCfg = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|Win32.Build.0 = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|Win32.ActiveCfg = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|x86.Build.0 = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|x86.ActiveCfg = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Win32.Build.0 = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Win32.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|x86.Build.0 = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|x86.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Win32.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Win32.ActiveCfg = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|x86.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|x86.ActiveCfg = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|Win32.Build.0 = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|x86.Build.0 = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|Win32.Build.0 = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|Win32.ActiveCfg = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|x86.Build.0 = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|x86.ActiveCfg = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|Win32.Build.0 = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|x86.Build.0 = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|x86.ActiveCfg = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|Win32.Build.0 = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|Win32.ActiveCfg = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|x86.Build.0 = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|x86.ActiveCfg = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|Win32.Build.0 = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|Win32.ActiveCfg = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|x86.Build.0 = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|x86.ActiveCfg = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|Win32.Build.0 = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|Win32.ActiveCfg = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|x86.Build.0 = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|x86.ActiveCfg = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|Win32.Build.0 = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|x86.Build.0 = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|x86.ActiveCfg = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|Win32.Build.0 = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|Win32.ActiveCfg = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|x86.Build.0 = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|x86.ActiveCfg = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Win32.Build.0 = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|x86.Build.0 = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Win32.Build.0 = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Win32.ActiveCfg = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|x86.Build.0 = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|x86.ActiveCfg = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Win32.Build.0 = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|x86.Build.0 = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|x86.ActiveCfg = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Win32.Build.0 = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Win32.ActiveCfg = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|x86.Build.0 = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|x86.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Win32.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|x86.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Win32.Build.0 = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Win32.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|x86.Build.0 = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|x86.ActiveCfg = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|Win32.Build.0 = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|x86.Build.0 = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|x86.ActiveCfg = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|Win32.Build.0 = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|Win32.ActiveCfg = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|x86.Build.0 = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|x86.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Win32.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|x86.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|x86.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Win32.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Win32.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|x86.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|x86.ActiveCfg = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|Win32.Build.0 = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|x86.Build.0 = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|x86.ActiveCfg = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|Win32.Build.0 = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|Win32.ActiveCfg = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|x86.Build.0 = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|x86.ActiveCfg = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|Win32.Build.0 = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|x86.Build.0 = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|Win32.Build.0 = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|Win32.ActiveCfg = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|x86.Build.0 = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|x86.ActiveCfg = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Win32.Build.0 = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|x86.Build.0 = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|x86.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Win32.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Win32.ActiveCfg = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|x86.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|x86.ActiveCfg = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Win32.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|x86.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|x86.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Win32.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Win32.ActiveCfg = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|x86.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|x86.ActiveCfg = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Win32.Build.0 = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|x86.Build.0 = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|x86.ActiveCfg = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Win32.Build.0 = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Win32.ActiveCfg = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|x86.Build.0 = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|x86.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Win32.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Win32.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|x86.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|x86.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Win32.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Win32.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|x86.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|x86.ActiveCfg = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Win32.Build.0 = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Win32.ActiveCfg = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|x86.Build.0 = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|x86.ActiveCfg = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Win32.Build.0 = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Win32.ActiveCfg = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|x86.Build.0 = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|x86.ActiveCfg = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|Win32.Build.0 = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|x86.Build.0 = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|Win32.Build.0 = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|Win32.ActiveCfg = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|x86.Build.0 = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|x86.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Win32.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|x86.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|x86.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Win32.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Win32.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|x86.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|x86.ActiveCfg = Release|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Win32.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|x86.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Win32.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Win32.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|x86.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|x86.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|Win32.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|x86.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|x86.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|Win32.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|Win32.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|x86.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|x86.ActiveCfg = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|Win32.Build.0 = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|x86.Build.0 = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|x86.ActiveCfg = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|Win32.Build.0 = Release|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|Win32.ActiveCfg = Release|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|x86.Build.0 = Release|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

38
data/resources/StringResources.de.resx

@ -1498,6 +1498,12 @@ Beispiele: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.HighlightingEditor.ColorDlg.Italic" xml:space="preserve"> <data name="Dialog.HighlightingEditor.ColorDlg.Italic" xml:space="preserve">
<value>Kursiv</value> <value>Kursiv</value>
</data> </data>
<data name="Dialog.HighlightingEditor.Export" xml:space="preserve">
<value>Hervorhebungsfarben exportieren</value>
</data>
<data name="Dialog.HighlightingEditor.Import" xml:space="preserve">
<value>Hervorhebungsfarben importieren</value>
</data>
<data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve"> <data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve">
<value>Wert</value> <value>Wert</value>
</data> </data>
@ -2181,11 +2187,14 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen?</value>
<value>Deaktiviert</value> <value>Deaktiviert</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve">
<value>Markierungen und Liniale</value> <value>Markierungen</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve">
<value>Markierungen und Liniale</value> <value>Markierungen und Liniale</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.RulersGroupBox" xml:space="preserve">
<value>Lineale</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox" xml:space="preserve">
<value>Verdeckte Definitionen anzeigen (nur geschweifte Klammern)</value> <value>Verdeckte Definitionen anzeigen (nur geschweifte Klammern)</value>
</data> </data>
@ -4033,6 +4042,12 @@ Grund: Der Wert zu dem zurückgesetzt werden soll ist ungültig weil sich eine a
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>Das öffentliche Schlüsseltoken der Assembly</value> <value>Das öffentliche Schlüsseltoken der Assembly</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Assembly referenzieren</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Wenn auf false gesetzt, gibt diese Referenz nur eine Build-Reihenfolgenabhängigkeit an und fügt keine Assembly-Referenz zum Projekt hinzu.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Festgelegte Version</value> <value>Festgelegte Version</value>
</data> </data>
@ -4979,6 +4994,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve">
<value>Kopiere Wert in Zwischenablage</value> <value>Kopiere Wert in Zwischenablage</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Name</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Nicht-öffentliche Mitglieder</value> <value>Nicht-öffentliche Mitglieder</value>
</data> </data>
@ -5000,6 +5018,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Statische Mitglieder</value> <value>Statische Mitglieder</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Typ</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Wert</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve"> <data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Speicher</value> <value>Speicher</value>
</data> </data>
@ -5375,6 +5399,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve"> <data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve">
<value>Öffne beinhaltenden Ordner im Explorer</value> <value>Öffne beinhaltenden Ordner im Explorer</value>
</data> </data>
<data name="OpenFileTabEventHandler.OpenCommandPromptHere" xml:space="preserve">
<value>Kommandozeile hier öffnen</value>
</data>
<data name="PortableLibrary.ChooseTargetFrameworks" xml:space="preserve">
<value>Ziel-Frameworks wählen</value>
</data>
<data name="PortableLibrary.CouldNotFindTools" xml:space="preserve">
<value>Konnte die Portable Class Library Tools nicht finden.</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve"> <data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Alle Knoten einklappen</value> <value>Alle Knoten einklappen</value>
</data> </data>
@ -5510,6 +5543,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve">
<value>Projekt sta&amp;rten</value> <value>Projekt sta&amp;rten</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.RunProjectWithoutDebugger" xml:space="preserve">
<value>Projekt ohne Debugger starten</value>
</data>
<data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve">
<value>Als St&amp;artprojekt festlegen</value> <value>Als St&amp;artprojekt festlegen</value>
</data> </data>

57
data/resources/StringResources.fr.resx

@ -1862,6 +1862,9 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.Debugging.Stepping" xml:space="preserve">
<value>Pas-à-pas en cours</value> <value>Pas-à-pas en cours</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.DecompileCodeWithoutSymbols" xml:space="preserve">
<value>Décompiler le code sans symboles</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.EnableJustMyCode" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.Debugging.Stepping.EnableJustMyCode" xml:space="preserve">
<value>Utiliser 'Seulement mon code' pour le pas-à-pas</value> <value>Utiliser 'Seulement mon code' pour le pas-à-pas</value>
</data> </data>
@ -3379,6 +3382,9 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<data name="ICSharpCode.Refactoring.NoClassOrOverridableSymbolUnderCursorError" xml:space="preserve"> <data name="ICSharpCode.Refactoring.NoClassOrOverridableSymbolUnderCursorError" xml:space="preserve">
<value>L'élément sélectionné n'est ni une classe ni un membre surchargeable: aucun symbole dérivé n'est disponible.</value> <value>L'élément sélectionné n'est ni une classe ni un membre surchargeable: aucun symbole dérivé n'est disponible.</value>
</data> </data>
<data name="ICSharpCode.Refactoring.NoClassUnderCursorError" xml:space="preserve">
<value>Impossible de trouver la définition du type sous le curseur.</value>
</data>
<data name="ICSharpCode.RubyBinding.SendLineToRubyConsole" xml:space="preserve"> <data name="ICSharpCode.RubyBinding.SendLineToRubyConsole" xml:space="preserve">
<value>Envoyer cette ligne vers la console Ruby</value> <value>Envoyer cette ligne vers la console Ruby</value>
</data> </data>
@ -3774,6 +3780,9 @@ Toutes les modifications seront perdues.</value>
<data name="ICSharpCode.SharpDevelop.FormDesigner.LoadErrorCheckSourceCodeForErrors" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.LoadErrorCheckSourceCodeForErrors" xml:space="preserve">
<value>Impossible de charger le concepteur. Vérifier les erreurs de syntaxe du code source et si toutes les références sont disponibles.</value> <value>Impossible de charger le concepteur. Vérifier les erreurs de syntaxe du code source et si toutes les références sont disponibles.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.ReportFlushErrors" xml:space="preserve">
<value>Une ou plusieurs erreurs sont survenues en essayant de vider le contenu du concepteur. C'est peut-être une exception non gérée dans un composant tiers sur le formulaire ou le contrôle.</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.ToolboxProvider.CantLoadSidbarComponentLibraryWarning" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.ToolboxProvider.CantLoadSidbarComponentLibraryWarning" xml:space="preserve">
<value>Ne peut charger la librairie contenant la barre de composants. <value>Ne peut charger la librairie contenant la barre de composants.
Les composants Windows Form ne seront pas accessibles, veuillez configurer manuellement la barre de composants (clic droit sur une catégorie de la barre de menu -&gt; Paramétrer la barre de menu).</value> Les composants Windows Form ne seront pas accessibles, veuillez configurer manuellement la barre de composants (clic droit sur une catégorie de la barre de menu -&gt; Paramétrer la barre de menu).</value>
@ -3988,6 +3997,12 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Culture.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Culture.Description" xml:space="preserve">
<value>La culture supportée par la référence</value> <value>La culture supportée par la référence</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.EmbedInteropTypes" xml:space="preserve">
<value>Embarquer les types interop</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.EmbedInteropTypes.Description" xml:space="preserve">
<value>Précise si les type d'interop COM définis dans l'assembly référencé sont embarqués dans l'assembly cible.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.LocalCopy" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.LocalCopy" xml:space="preserve">
<value>Copie locale</value> <value>Copie locale</value>
</data> </data>
@ -4006,6 +4021,12 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>Le jeton de clé publique</value> <value>Le jeton de clé publique</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Référencer l'assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Si positionné à Faux, cette référence spécifie uniquement une dépendance dans l'ordre de la construction sans référencer l'assembly.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Version Spécifique</value> <value>Version Spécifique</value>
</data> </data>
@ -4051,6 +4072,9 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve">
<value>Chargement de ${Filename}...</value> <value>Chargement de ${Filename}...</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.CloseSolution" xml:space="preserve">
<value>Fermer la solution</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.KeepOldSolution" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.KeepOldSolution" xml:space="preserve">
<value>Laisser la solution précédente ouverte</value> <value>Laisser la solution précédente ouverte</value>
</data> </data>
@ -4084,6 +4108,14 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve">
<value>Mettre à jour le projet</value> <value>Mettre à jour le projet</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateOnLoadDueToMissingMSBuild" xml:space="preserve">
<value>Le projet '${ProjectName}' cible MSBuild ${OldToolsVersion}, mais cette version n'est pas installée.
Voulez vous mettre à jour le projet vers MSBuild ${NewToolsVersion}?
Le projet ne sera pas ouvert sans cette mise à jour.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateToMSBuildButton" xml:space="preserve">
<value>Mettre à jour vers MSBuild ${NewToolsVersion}</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve">
<value>Cette solution a été créée par une précédente version de SharpDevelop. <value>Cette solution a été créée par une précédente version de SharpDevelop.
La mettre à jour vous permet d'utiliser de nouveaux languages, ou les évolutions du framework.</value> La mettre à jour vous permet d'utiliser de nouveaux languages, ou les évolutions du framework.</value>
@ -4165,7 +4197,7 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v
<value>Processus de travail {0} ASP.NET/IIS(Express) introuvable.</value> <value>Processus de travail {0} ASP.NET/IIS(Express) introuvable.</value>
</data> </data>
<data name="ICSharpCode.WebProjectOptionsPanel.NoProjectUrlOrProgramAction" xml:space="preserve"> <data name="ICSharpCode.WebProjectOptionsPanel.NoProjectUrlOrProgramAction" xml:space="preserve">
<value>Pas d'URL du projet spécifiée ou de programme externe. Vérifier le serveur web dans Propriétés du projet - Onglet debug.</value> <value>Aucun programme externe ni URL spécifié. Vérifier le serveur web dans Propriétés du projet - onglet Web.</value>
</data> </data>
<data name="ICSharpCode.WebProjectOptionsPanel.Port" xml:space="preserve"> <data name="ICSharpCode.WebProjectOptionsPanel.Port" xml:space="preserve">
<value>Port:</value> <value>Port:</value>
@ -4783,7 +4815,7 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<value>Vous ne pouvez pas changer pour une fonction sans symboles.</value> <value>Vous ne pouvez pas changer pour une fonction sans symboles.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.CallStack.CannotSwitchWithoutSymbolsOrDecompiledCodeOptions" xml:space="preserve"> <data name="MainWindow.Windows.Debug.CallStack.CannotSwitchWithoutSymbolsOrDecompiledCodeOptions" xml:space="preserve">
<value>Les options de décompilation du code doivent être activés pour aller vers une fonction sans symboles.</value> <value>Impossible de basculer vers une méthode sans symboles de déboguage.Recompilez avec les symboles ou activer l'option de décompilation du code sans symboles.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.CallStack.ExternalMethods" xml:space="preserve"> <data name="MainWindow.Windows.Debug.CallStack.ExternalMethods" xml:space="preserve">
<value>[Méthodes externes]</value> <value>[Méthodes externes]</value>
@ -4941,6 +4973,9 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve">
<value>Copier la valeur dans le presse-papier</value> <value>Copier la valeur dans le presse-papier</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Nom</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Membres non publics</value> <value>Membres non publics</value>
</data> </data>
@ -4962,6 +4997,12 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Membres statiques</value> <value>Membres statiques</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Type</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Valeur</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve"> <data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Mémoire</value> <value>Mémoire</value>
</data> </data>
@ -5001,12 +5042,18 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve">
<value>Adresse</value> <value>Adresse</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.DynamicModule" xml:space="preserve">
<value>(dynamique)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve">
<value>Aucun symbole n'est chargé.</value> <value>Aucun symbole n'est chargé.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve">
<value>Symboles chargés.</value> <value>Symboles chargés.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.InMemoryModule" xml:space="preserve">
<value>(en mémoire)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve">
<value>Ordre</value> <value>Ordre</value>
</data> </data>
@ -5331,6 +5378,9 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve"> <data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve">
<value>Ouvrir le répertoire dans l'explorateur</value> <value>Ouvrir le répertoire dans l'explorateur</value>
</data> </data>
<data name="OpenFileTabEventHandler.OpenCommandPromptHere" xml:space="preserve">
<value>Ouvrir une invite de commande ici</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve"> <data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Réduire tous les noeuds</value> <value>Réduire tous les noeuds</value>
</data> </data>
@ -5466,6 +5516,9 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve">
<value>Lance&amp;r projet</value> <value>Lance&amp;r projet</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.RunProjectWithoutDebugger" xml:space="preserve">
<value>Exécuter ce projet sans débogueur</value>
</data>
<data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve">
<value>Définir comme projet de dém&amp;arrage</value> <value>Définir comme projet de dém&amp;arrage</value>
</data> </data>

37
data/resources/StringResources.it.resx

@ -1860,6 +1860,9 @@ Vuoi aggiungere il nuovo file al progetto ${CurrentProjectName}?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.Debugging.Stepping" xml:space="preserve">
<value>Stepping</value> <value>Stepping</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.DecompileCodeWithoutSymbols" xml:space="preserve">
<value>Decompila codice senza simboli</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.EnableJustMyCode" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.Debugging.Stepping.EnableJustMyCode" xml:space="preserve">
<value>Usa 'Just My Code' per debug passo-passo</value> <value>Usa 'Just My Code' per debug passo-passo</value>
</data> </data>
@ -3692,7 +3695,7 @@ ${File}
<value>Proprietà Griglia</value> <value>Proprietà Griglia</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.HeightLabel" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.HeightLabel" xml:space="preserve">
<value>A&amp;ltezza</value> <value>&amp;Altezza</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.InPlaceEditCheckBox" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.FormDesigner.Gui.OptionPanels.GridOptionsPanel.InPlaceEditCheckBox" xml:space="preserve">
<value>Abilita modifica in-linea dei ToolStrips</value> <value>Abilita modifica in-linea dei ToolStrips</value>
@ -4011,6 +4014,9 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>Il token di chiave pubblica</value> <value>Il token di chiave pubblica</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Referenzia assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Versione Specifica</value> <value>Versione Specifica</value>
</data> </data>
@ -4056,6 +4062,9 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value>
<data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve">
<value>Caricamento ${Filename}...</value> <value>Caricamento ${Filename}...</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.CloseSolution" xml:space="preserve">
<value>Chiudi soluzione</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.KeepOldSolution" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.KeepOldSolution" xml:space="preserve">
<value>Mantieni aperta la vecchia soluzione</value> <value>Mantieni aperta la vecchia soluzione</value>
</data> </data>
@ -4089,6 +4098,13 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'.</value>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve">
<value>Aggiorna Progetto</value> <value>Aggiorna Progetto</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateOnLoadDueToMissingMSBuild" xml:space="preserve">
<value>Il progetto '${ProjectName}' usa MSBuild ${OldToolsVersion}, ma questa versione non è installata.
Vuoi aggiornare il progetto a MSBuild ${NewToolsVersion}? Il progetto non può essere aperto senza essere aggiornato.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateToMSBuildButton" xml:space="preserve">
<value>Aggiorna a MSBuild ${NewToolsVersion}</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve">
<value>Questa soluzione è stata creata con una versione precedente di SharpDevelop. Potresti volerla aggiornare così da utilizzare le nuove funzionalità del linguaggio o del framework.</value> <value>Questa soluzione è stata creata con una versione precedente di SharpDevelop. Potresti volerla aggiornare così da utilizzare le nuove funzionalità del linguaggio o del framework.</value>
</data> </data>
@ -4169,7 +4185,7 @@ Vai a 'Opzioni-&gt;Stile visuale' e cambia l'attuale ambiente di linguaggio.</va
<value>ASP.NET/IIS (Express) worker process ({0}) non trovato.</value> <value>ASP.NET/IIS (Express) worker process ({0}) non trovato.</value>
</data> </data>
<data name="ICSharpCode.WebProjectOptionsPanel.NoProjectUrlOrProgramAction" xml:space="preserve"> <data name="ICSharpCode.WebProjectOptionsPanel.NoProjectUrlOrProgramAction" xml:space="preserve">
<value>Non è stato specificato nessun Url di Progetto o programma esterno. Controlla il web server su Proprietà Progetto - Debug.</value> <value>Non è stato specificato nessun Url di Progetto o programma esterno. Controlla il web server sulla linguetta Proprietà Progetto - Web.</value>
</data> </data>
<data name="ICSharpCode.WebProjectOptionsPanel.Port" xml:space="preserve"> <data name="ICSharpCode.WebProjectOptionsPanel.Port" xml:space="preserve">
<value>Porta server:</value> <value>Porta server:</value>
@ -4788,7 +4804,7 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<value>Non si può passare ad una funzione senza simboli di debug.</value> <value>Non si può passare ad una funzione senza simboli di debug.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.CallStack.CannotSwitchWithoutSymbolsOrDecompiledCodeOptions" xml:space="preserve"> <data name="MainWindow.Windows.Debug.CallStack.CannotSwitchWithoutSymbolsOrDecompiledCodeOptions" xml:space="preserve">
<value>Non puoi passare ad una funzione senza simboli senza attivare le opzioni di decompilazione del codice.</value> <value>Non puoi passare ad una funzione senza simboli. Ricompila con i simboli o attiva "Decompila codice senza simboli" nelle opzioni.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.CallStack.ExternalMethods" xml:space="preserve"> <data name="MainWindow.Windows.Debug.CallStack.ExternalMethods" xml:space="preserve">
<value>[Metodi esterni]</value> <value>[Metodi esterni]</value>
@ -4946,6 +4962,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve">
<value>Copia il valore negli Appunti</value> <value>Copia il valore negli Appunti</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Nome</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Membro Non-Pubblico</value> <value>Membro Non-Pubblico</value>
</data> </data>
@ -4967,6 +4986,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Membri statici</value> <value>Membri statici</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Tipo</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Valore</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve"> <data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Memoria</value> <value>Memoria</value>
</data> </data>
@ -5006,12 +5031,18 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve">
<value>Indirizzo</value> <value>Indirizzo</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.DynamicModule" xml:space="preserve">
<value>(dinamico)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve">
<value>Nessun simbolo caricato.</value> <value>Nessun simbolo caricato.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve">
<value>Simboli caricati.</value> <value>Simboli caricati.</value>
</data> </data>
<data name="MainWindow.Windows.Debug.Modules.InMemoryModule" xml:space="preserve">
<value>(in memoria)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve"> <data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve">
<value>Ordine</value> <value>Ordine</value>
</data> </data>

75
data/resources/StringResources.nl.resx

@ -1501,6 +1501,12 @@ Voorbeelden: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.HighlightingEditor.ColorDlg.Italic" xml:space="preserve"> <data name="Dialog.HighlightingEditor.ColorDlg.Italic" xml:space="preserve">
<value>Cursief</value> <value>Cursief</value>
</data> </data>
<data name="Dialog.HighlightingEditor.Export" xml:space="preserve">
<value>Selectie kleuren expoorteren</value>
</data>
<data name="Dialog.HighlightingEditor.Import" xml:space="preserve">
<value>Selectie kleuren importeren</value>
</data>
<data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve"> <data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve">
<value>Waarde</value> <value>Waarde</value>
</data> </data>
@ -2184,11 +2190,14 @@ Wilt u het nieuwe bestand toevoegen aan project ${CurrentProjectName}?</value>
<value>Geen</value> <value>Geen</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve">
<value>Markeringen en Linealen</value> <value>Markeringen</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve">
<value>Markeringen en Linealen</value> <value>Markeringen en Linealen</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.RulersGroupBox" xml:space="preserve">
<value>Linealen</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox" xml:space="preserve">
<value>Toon &amp;verborgen definities(alleen haakjes)</value> <value>Toon &amp;verborgen definities(alleen haakjes)</value>
</data> </data>
@ -2355,7 +2364,7 @@ Wilt u het nieuwe bestand toevoegen aan project ${CurrentProjectName}?</value>
<value>32 bit Intel-compatibele processor</value> <value>32 bit Intel-compatibele processor</value>
</data> </data>
<data name="Dialog.ProjectOptions.Build.TargetFramework" xml:space="preserve"> <data name="Dialog.ProjectOptions.Build.TargetFramework" xml:space="preserve">
<value>Doel Framework:</value> <value>Doel raamwerk:</value>
</data> </data>
<data name="Dialog.ProjectOptions.Build.TreatWarningsAsErrors" xml:space="preserve"> <data name="Dialog.ProjectOptions.Build.TreatWarningsAsErrors" xml:space="preserve">
<value>Behandel waarschuwingen als fouten</value> <value>Behandel waarschuwingen als fouten</value>
@ -3046,7 +3055,7 @@ Er kan worden gekozen voor opslag van de instellingen in het .user bestand inpla
<value>Bezig met Code Analyse...</value> <value>Bezig met Code Analyse...</value>
</data> </data>
<data name="ICSharpCode.Build.UnknownTargetMonoFrameworkVersion" xml:space="preserve"> <data name="ICSharpCode.Build.UnknownTargetMonoFrameworkVersion" xml:space="preserve">
<value>Onbekend doel Mono Framework Versie:</value> <value>Onbekend doel Mono Raamwerk Versie:</value>
</data> </data>
<data name="ICSharpCode.CodeAnalysis" xml:space="preserve"> <data name="ICSharpCode.CodeAnalysis" xml:space="preserve">
<value>Code Analyse</value> <value>Code Analyse</value>
@ -4023,6 +4032,12 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>De openbare sleutel token</value> <value>De openbare sleutel token</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Referentie assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Indien false, specificeert deze referentie enkel een bouw-volgorde afhankelijkheid en heeft niet tot gevolg dat de assembly gerefereerd wordt.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Specifieke versie</value> <value>Specifieke versie</value>
</data> </data>
@ -4084,7 +4099,7 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value>
<value>Converteer geselecteerde &amp;projecten naar</value> <value>Converteer geselecteerde &amp;projecten naar</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeTargetFrameworkLabel" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeTargetFrameworkLabel" xml:space="preserve">
<value>Wijzig doel framework</value> <value>Wijzig doel Raamwerk:</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeVersionGroupBoxHeader" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.ChangeVersionGroupBoxHeader" xml:space="preserve">
<value>Versie van geselecteerde projecten wijzigen</value> <value>Versie van geselecteerde projecten wijzigen</value>
@ -4099,7 +4114,7 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value>
<value>&lt;niet wijzigen&gt;</value> <value>&lt;niet wijzigen&gt;</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.TargetFramework" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.TargetFramework" xml:space="preserve">
<value>Doel framework</value> <value>Doel Raamwerk</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve">
<value>Project opwaarderen</value> <value>Project opwaarderen</value>
@ -4113,7 +4128,7 @@ Zonder opwaarderen kan het project niet geopend wordenh.</value>
<value>Opwaarderen naar MSBuild ${NewToolsVersion}</value> <value>Opwaarderen naar MSBuild ${NewToolsVersion}</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve">
<value>Deze oplossing werd met een vorige versie van SharpDevelop gemaakt. Door te upgraden kan gebruik gemaakt worden van nieuwe taal of framework mogelijkheden.</value> <value>Deze oplossing werd met een eerdere versie van SharpDevelop gemaakt. Door te upgraden kan gebruik gemaakt worden van nieuwe taal- of raamwerk mogelijkheden.</value>
</data> </data>
<data name="ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError" xml:space="preserve"> <data name="ICSharpCode.SharpDevelop.Services.AmbienceService.AmbienceNotFoundError" xml:space="preserve">
<value>Momentele ambience niet gevonden. <value>Momentele ambience niet gevonden.
@ -4421,7 +4436,7 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<value>WiX localisatie bestanden</value> <value>WiX localisatie bestanden</value>
</data> </data>
<data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve"> <data name="ICSharpCode.WixBinding.WixNetFxExtensionTitle" xml:space="preserve">
<value>.NET Framework uitbreiding</value> <value>.NET Raamwerk uitbreiding</value>
</data> </data>
<data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve"> <data name="ICSharpCode.WixBinding.WixPackageFilesDiffControl.NoDiffFound" xml:space="preserve">
<value>Geen verschil gevonden.</value> <value>Geen verschil gevonden.</value>
@ -4969,6 +4984,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve">
<value>Kopieer waarde naar klembord</value> <value>Kopieer waarde naar klembord</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Naam</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Niet openbare leden</value> <value>Niet openbare leden</value>
</data> </data>
@ -4990,6 +5008,12 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Statische leden</value> <value>Statische leden</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Type</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Waarde</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve"> <data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Geheugen</value> <value>Geheugen</value>
</data> </data>
@ -5365,6 +5389,30 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve"> <data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve">
<value>Open de document bevattende map in de Explorer</value> <value>Open de document bevattende map in de Explorer</value>
</data> </data>
<data name="OpenFileTabEventHandler.OpenCommandPromptHere" xml:space="preserve">
<value>Open hier de commando prompt</value>
</data>
<data name="PortableLibrary.ChooseTargetFrameworks" xml:space="preserve">
<value>Selecteer doel-raamwerken.</value>
</data>
<data name="PortableLibrary.CouldNotFindTools" xml:space="preserve">
<value>Kan Portable Klasse-bibliotheek gereedschap niet vinden.</value>
</data>
<data name="PortableLibrary.PortableSubset" xml:space="preserve">
<value>.NET Portable subset</value>
</data>
<data name="PortableLibrary.SelectAtLeastTwoFrameworks" xml:space="preserve">
<value>Er moeten tenminste twee raamwerken worden geselecteerd.</value>
</data>
<data name="PortableLibrary.SelectedProfile" xml:space="preserve">
<value>Gekozen profiel:</value>
</data>
<data name="PortableLibrary.SelectProfileDialog.Title" xml:space="preserve">
<value>Kies een Portable Bibliotheek profiel.</value>
</data>
<data name="PortableLibrary.ToolsInstallationHelp" xml:space="preserve">
<value>Om de portabele Klassebibliotheek gereedschappen te installeren zonder Visual Studio te installeren, sla het download bestand op (PortableLibraryTools.exe) op uw computer en voer de installatie uit via de commndoregel. Inclusief de /bouwmachine schakeling op de commandoregel.</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve"> <data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Alle knooppunten invouwen</value> <value>Alle knooppunten invouwen</value>
</data> </data>
@ -5500,6 +5548,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve">
<value>P&amp;roject starten</value> <value>P&amp;roject starten</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.RunProjectWithoutDebugger" xml:space="preserve">
<value>Project uitvoeren zonder foutopsporing</value>
</data>
<data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve">
<value>Als startproject instellen.</value> <value>Als startproject instellen.</value>
</data> </data>
@ -6618,6 +6669,12 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value>
<data name="Templates.Project.GtkSharpProject.Name" xml:space="preserve"> <data name="Templates.Project.GtkSharpProject.Name" xml:space="preserve">
<value>Gtk# toepassing</value> <value>Gtk# toepassing</value>
</data> </data>
<data name="Templates.Project.PortableLibrary.Description" xml:space="preserve">
<value>Bibliotheek, bruikbaar bij Windows, Silverlight, Windows Phone en Xbox.</value>
</data>
<data name="Templates.Project.PortableLibrary.Name" xml:space="preserve">
<value>Portable Klassen-bibliotheek</value>
</data>
<data name="Templates.Project.SetupProject.Description" xml:space="preserve"> <data name="Templates.Project.SetupProject.Description" xml:space="preserve">
<value>Windows installatie project om een MSI installatie programma te maken.</value> <value>Windows installatie project om een MSI installatie programma te maken.</value>
</data> </data>
@ -6769,7 +6826,7 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value>
<value>Ontkoppel</value> <value>Ontkoppel</value>
</data> </data>
<data name="XML.MainMenu.DebugMenu.Error.BadAssembly" xml:space="preserve"> <data name="XML.MainMenu.DebugMenu.Error.BadAssembly" xml:space="preserve">
<value>Kan .NET Framework versie van het programma niet krijgen. Ga na of het programma een beheerde assembly is.</value> <value>Kan .NET Raamwerk versie van het programma niet oproepen. Ga na of het programma een gemanagede assembly is.</value>
</data> </data>
<data name="XML.MainMenu.DebugMenu.Error.CannotAttachToProcess" xml:space="preserve"> <data name="XML.MainMenu.DebugMenu.Error.CannotAttachToProcess" xml:space="preserve">
<value>Kan niet bij proces aanhaken.</value> <value>Kan niet bij proces aanhaken.</value>
@ -6784,7 +6841,7 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze.</value>
<value>Kan SharpDevelop foutopsporing niet starten omdat kernel foutopsporing is aangezet. Om de kernel foutopsporing uit te zetten, dient de schakeling "/debug" uit bestand Boot.ini verwijderd te worden en de computer opnieuw te worden opgestart.</value> <value>Kan SharpDevelop foutopsporing niet starten omdat kernel foutopsporing is aangezet. Om de kernel foutopsporing uit te zetten, dient de schakeling "/debug" uit bestand Boot.ini verwijderd te worden en de computer opnieuw te worden opgestart.</value>
</data> </data>
<data name="XML.MainMenu.DebugMenu.Error.Net10NotSupported" xml:space="preserve"> <data name="XML.MainMenu.DebugMenu.Error.Net10NotSupported" xml:space="preserve">
<value>Foutopsporing bij .NET Framework 1.0 programmas is niet ondersteund.</value> <value>Foutopsporing bij .NET Raamwerk 1.0 programmas is niet ondersteund.</value>
</data> </data>
<data name="XML.MainMenu.DebugMenu.Error.NotDebugging" xml:space="preserve"> <data name="XML.MainMenu.DebugMenu.Error.NotDebugging" xml:space="preserve">
<value>Kan actie niet uitvoeren omdat er geen foutopsporing van een proces plaatsvindt.</value> <value>Kan actie niet uitvoeren omdat er geen foutopsporing van een proces plaatsvindt.</value>

58
data/resources/StringResources.resx

@ -1550,6 +1550,12 @@ Examples: "120", "MainClass", "Main.cs, 120".</value>
<data name="Dialog.HighlightingEditor.ColorDlg.Italic" xml:space="preserve"> <data name="Dialog.HighlightingEditor.ColorDlg.Italic" xml:space="preserve">
<value>Italic</value> <value>Italic</value>
</data> </data>
<data name="Dialog.HighlightingEditor.Export" xml:space="preserve">
<value>Export highlighting colors</value>
</data>
<data name="Dialog.HighlightingEditor.Import" xml:space="preserve">
<value>Import highlighting colors</value>
</data>
<data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve"> <data name="Dialog.HighlightingEditor.Properties.Value" xml:space="preserve">
<value>Value</value> <value>Value</value>
</data> </data>
@ -2256,11 +2262,14 @@ system. I don't think that it needs translation.</comment>
<value>None</value> <value>None</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox" xml:space="preserve">
<value>Markers and Rulers</value> <value>Markers</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.PanelName" xml:space="preserve">
<value>Markers and Rulers</value> <value>Markers and Rulers</value>
</data> </data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.RulersGroupBox" xml:space="preserve">
<value>Rulers</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox" xml:space="preserve"> <data name="Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox" xml:space="preserve">
<value>Show &amp;hidden definitions (brackets only)</value> <value>Show &amp;hidden definitions (brackets only)</value>
</data> </data>
@ -5270,6 +5279,9 @@ Stop/terminate the debuggee.</comment>
<value>Copy value to clipboard</value> <value>Copy value to clipboard</value>
<comment>Item in variable's context menu</comment> <comment>Item in variable's context menu</comment>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Name</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Non-Public members</value> <value>Non-Public members</value>
</data> </data>
@ -5297,6 +5309,12 @@ Shows the full callstack of the error.</comment>
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve"> <data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Static members</value> <value>Static members</value>
</data> </data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Type</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Value</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve"> <data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Memory</value> <value>Memory</value>
</data> </data>
@ -5686,6 +5704,35 @@ Removed the end part of the original message ", reason '${Message}'" since this
<value>Open containing folder in Explorer</value> <value>Open containing folder in Explorer</value>
<comment>String for the editor tab context menu that will open the directory in which a documents file is contained in Windows Explorer.</comment> <comment>String for the editor tab context menu that will open the directory in which a documents file is contained in Windows Explorer.</comment>
</data> </data>
<data name="OpenFileTabEventHandler.OpenCommandPromptHere" xml:space="preserve">
<value>Open command prompt here</value>
</data>
<data name="PortableLibrary.ChooseTargetFrameworks" xml:space="preserve">
<value>choose target frameworks</value>
<comment>Option in the "target framework" combobox in the "project upgrade" view that causes the "select portable profile" dialog to appear</comment>
</data>
<data name="PortableLibrary.CouldNotFindTools" xml:space="preserve">
<value>Could not find Portable Class Library Tools.</value>
</data>
<data name="PortableLibrary.PortableSubset" xml:space="preserve">
<value>.NET Portable Subset</value>
<comment>Name for the portable target framework, shown in Project Upgrade view</comment>
</data>
<data name="PortableLibrary.SelectAtLeastTwoFrameworks" xml:space="preserve">
<value>Two or more frameworks must be selected.</value>
<comment>Label shown when only 0 or 1 frameworks are selected</comment>
</data>
<data name="PortableLibrary.SelectedProfile" xml:space="preserve">
<value>Selected profile:</value>
<comment>Label that shows the selected portable library profile</comment>
</data>
<data name="PortableLibrary.SelectProfileDialog.Title" xml:space="preserve">
<value>Select Portable Library Profile</value>
<comment>Title of the dialog used to pick the target frameworks for a portable library project</comment>
</data>
<data name="PortableLibrary.ToolsInstallationHelp" xml:space="preserve">
<value>To install the Portable Class Library Tools without installing Visual Studio, save the download file (PortableLibraryTools.exe) on your computer, and run the installation program from a Command Prompt window. Include the /buildmachine switch on the command line.</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve"> <data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Collapse all nodes</value> <value>Collapse all nodes</value>
</data> </data>
@ -5830,6 +5877,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve">
<value>&amp;Run Project</value> <value>&amp;Run Project</value>
</data> </data>
<data name="ProjectComponent.ContextMenu.RunProjectWithoutDebugger" xml:space="preserve">
<value>Run Project without Debugger</value>
</data>
<data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve"> <data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve">
<value>Set as St&amp;artUp Project</value> <value>Set as St&amp;artUp Project</value>
</data> </data>
@ -6997,6 +7047,12 @@ The resources files have been renamed/moved accordingly.</value>
<value>Gtk# Application</value> <value>Gtk# Application</value>
<comment>Name of Gtk# project template.</comment> <comment>Name of Gtk# project template.</comment>
</data> </data>
<data name="Templates.Project.PortableLibrary.Description" xml:space="preserve">
<value>Library that can be used on Windows, Silverlight, Windows Phone, and Xbox.</value>
</data>
<data name="Templates.Project.PortableLibrary.Name" xml:space="preserve">
<value>Portable Class Library</value>
</data>
<data name="Templates.Project.SetupProject.Description" xml:space="preserve"> <data name="Templates.Project.SetupProject.Description" xml:space="preserve">
<value>A windows installer project for creating a MSI installer.</value> <value>A windows installer project for creating a MSI installer.</value>
</data> </data>

3191
data/resources/StringResources.tr.resx

File diff suppressed because it is too large Load Diff

BIN
data/templates/packages/Modernizr.1.7.nupkg

Binary file not shown.

BIN
data/templates/packages/Modernizr.2.5.3.nupkg

Binary file not shown.

BIN
data/templates/packages/jQuery.1.6.1.nupkg

Binary file not shown.

BIN
data/templates/packages/jQuery.1.7.2.nupkg

Binary file not shown.

2
data/templates/project/CSharp/ConsoleProject.xpt

@ -17,7 +17,7 @@
</Actions> </Actions>
<!-- Template Content --> <!-- Template Content -->
<Project language = "C#"> <Project language = "C#" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

2
data/templates/project/CSharp/FormsProject.xpt

@ -18,7 +18,7 @@
<Open filename = "MainForm.cs"/> <Open filename = "MainForm.cs"/>
</Actions> </Actions>
<Project language = "C#"> <Project language = "C#" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

8
data/templates/project/CSharp/MvcRazorProject.xpt

@ -273,8 +273,8 @@ Aliquam suscipit tellus vel nunc elementum fringilla.</p>
<head> <head>
<title>@ViewBag.Title</title> <title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css"> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css">
<script src="@Url.Content("~/Scripts/modernizer-1.7.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/modernizr-2.5.3.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.6.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script>
</head> </head>
<body> <body>
<div id="page"> <div id="page">
@ -300,8 +300,8 @@ Aliquam suscipit tellus vel nunc elementum fringilla.</p>
<File name="packages.config"> <File name="packages.config">
<![CDATA[<?xml version="1.0" encoding="utf-8"?> <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="jQuery" version="1.6.1" /> <package id="jQuery" version="1.7.2" />
<package id="Modernizr" version="1.7" /> <package id="Modernizr" version="2.5.3" />
</packages> </packages>
]]> ]]>
</File> </File>

8
data/templates/project/CSharp/MvcWebProject.xpt

@ -280,8 +280,8 @@ namespace ${StandardNamespace}
<head runat="server"> <head runat="server">
<title><asp:ContentPlaceHolder id="Title" runat="server"/></title> <title><asp:ContentPlaceHolder id="Title" runat="server"/></title>
<link href="<%: Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css"> <link href="<%: Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css">
<script src="<%: Url.Content("~/Scripts/modernizer-1.7.min.js") %>" type="text/javascript"></script> <script src="<%: Url.Content("~/Scripts/modernizr-2.5.3.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery-1.6.1.min.js") %>" type="text/javascript"></script> <script src="<%: Url.Content("~/Scripts/jquery-1.7.2.min.js") %>" type="text/javascript"></script>
</head> </head>
<body> <body>
<div id="page"> <div id="page">
@ -307,8 +307,8 @@ namespace ${StandardNamespace}
<File name="packages.config"> <File name="packages.config">
<![CDATA[<?xml version="1.0" encoding="utf-8"?> <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="jQuery" version="1.6.1" /> <package id="jQuery" version="1.7.2" />
<package id="Modernizr" version="1.7" /> <package id="Modernizr" version="2.5.3" />
</packages> </packages>
]]> ]]>
</File> </File>

2
data/templates/project/CSharp/NotifyIcon.xpt

@ -18,7 +18,7 @@
<Open filename = "NotificationIcon.cs"/> <Open filename = "NotificationIcon.cs"/>
</Actions> </Actions>
<Project language="C#"> <Project language="C#" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

27
data/templates/project/CSharp/PortableAssemblyInfo.cs

@ -0,0 +1,27 @@
#region Using directives
using System;
using System.Reflection;
using System.Runtime.InteropServices;
#endregion
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("${ProjectName}")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("${ProjectName}")]
[assembly: AssemblyCopyright("Copyright ${DATE:yyyy}")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]

58
data/templates/project/CSharp/PortableLibrary.xpt

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<Template originator = "Daniel Grunwald" created = "05/17/2012">
<!-- Template Header -->
<TemplateConfiguration>
<Name>${res:Templates.Project.PortableLibrary.Name}</Name>
<Category>C#</Category>
<Icon>C#.Project.Library</Icon>
<Description>${res:Templates.Project.PortableLibrary.Description}</Description>
</TemplateConfiguration>
<!-- Actions -->
<Actions>
<Open filename = "MyClass.cs"/>
</Actions>
<!-- Template Content -->
<Project language="C#">
<PreCreateActions>
<RunCommand path="/SharpDevelop/BackendBindings/TemplateCommands/CheckPortableLibraryInstalled"/>
</PreCreateActions>
<PropertyGroup>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile1</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup escapeValue="False">
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<ProjectItems />
<Imports clear="True">
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
</Imports>
<Files>
<File name="MyClass.cs"><![CDATA[${StandardHeader.C#}
using System;
using System.Collections.Generic;
namespace ${StandardNamespace}
{
/// <summary>
/// Description of MyClass.
/// </summary>
public class MyClass
{
}
}]]></File>
<File name="Properties\AssemblyInfo.cs" src="PortableAssemblyInfo.cs"/>
</Files>
</Project>
</Template>

2
data/templates/project/CSharp/Service.xpt

@ -19,7 +19,7 @@
</Actions> </Actions>
<!-- Template Content --> <!-- Template Content -->
<Project language = "C#"> <Project language = "C#" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Configuration.Install" /> <Reference Include="System.Configuration.Install" />

2
data/templates/project/CSharp/WPFApplication.xpt

@ -16,7 +16,7 @@
<Open filename = "Window1.xaml"/> <Open filename = "Window1.xaml"/>
</Actions> </Actions>
<Project language = "C#"> <Project language = "C#" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

2
data/templates/project/CSharp/WPFNavigationApplication.xpt

@ -16,7 +16,7 @@
<Open filename = "Page1.xaml"/> <Open filename = "Page1.xaml"/>
</Actions> </Actions>
<Project language = "C#"> <Project language = "C#" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

20
data/templates/project/ComplexExample.xpt.test

@ -16,6 +16,8 @@
<!-- Actions --> <!-- Actions -->
<Actions> <Actions>
<Open filename = "Main.cs"/> <Open filename = "Main.cs"/>
<!-- Runs a command from the AddIn Tree. ICommand.Owner will be the ProjectCreateInformation -->
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/PostCreationAction"/>
</Actions> </Actions>
<!-- Template Content --> <!-- Template Content -->
@ -33,7 +35,17 @@
<!-- Solution folders can contain: nested solution folders and projects --> <!-- Solution folders can contain: nested solution folders and projects -->
<SolutionFolder name = "Nested Sub Folder"/> <SolutionFolder name = "Nested Sub Folder"/>
<Project name = "VBNetProject" directory = "VBNetSubProject" language="VBNet"> <Project name = "VBNetProject" directory = "VBNetSubProject" language="VBNet" defaultPlatform="x86">
<!-- Actions that get executed before the project is created. ICommand.Owner will be the ProjectCreateInformation. -->
<PreCreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/CheckPortableLibraryInstalled"/>
</PreCreateActions>
<!-- Actions that get executed after the project was created. ICommand.Owner will be the IProject. -->
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/PostCreationAction"/>
</CreateActions>
<!-- add a PropertyGroup to the project to set MSBuild properties --> <!-- add a PropertyGroup to the project to set MSBuild properties -->
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
@ -123,11 +135,7 @@ End Class
</Project> </Project>
</SolutionFolder> </SolutionFolder>
<Project name = "${ProjectName}" directory = "." language = "C#"> <Project name = "${ProjectName}" directory = "." language = "C#" defaultPlatform="AnyCPU">
<CreateActions>
<RunCommand path = "/SharpDevelop/BackendBindings/TemplateCommands/AddDotNet35ReferencesIfTargetFrameworkIs35"/>
</CreateActions>
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

2
data/templates/project/VB/ConsoleProject.xpt

@ -20,7 +20,7 @@
<!-- Template Content --> <!-- Template Content -->
<Project language = "VBNet"> <Project language = "VBNet" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

2
data/templates/project/VB/FormsProject.xpt

@ -19,7 +19,7 @@
</Actions> </Actions>
<!-- Template Content --> <!-- Template Content -->
<Project language="VBNet"> <Project language="VBNet" defaultPlatform="x86">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>

8
data/templates/project/VB/MvcRazorProject.xpt

@ -265,8 +265,8 @@ Aliquam suscipit tellus vel nunc elementum fringilla.</p>
<head> <head>
<title>@ViewData("Title")</title> <title>@ViewData("Title")</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css"> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css">
<script src="@Url.Content("~/Scripts/modernizer-1.7.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/modernizr-2.5.3.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.6.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script>
</head> </head>
<body> <body>
<div id="page"> <div id="page">
@ -292,8 +292,8 @@ Aliquam suscipit tellus vel nunc elementum fringilla.</p>
<File name="packages.config"> <File name="packages.config">
<![CDATA[<?xml version="1.0" encoding="utf-8"?> <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="jQuery" version="1.6.1" /> <package id="jQuery" version="1.7.2" />
<package id="Modernizr" version="1.7" /> <package id="Modernizr" version="2.5.3" />
</packages> </packages>
]]> ]]>
</File> </File>

8
data/templates/project/VB/MvcWebProject.xpt

@ -272,8 +272,8 @@ End Class
<head runat="server"> <head runat="server">
<title><asp:ContentPlaceHolder id="Title" runat="server"/></title> <title><asp:ContentPlaceHolder id="Title" runat="server"/></title>
<link href="<%: Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css"> <link href="<%: Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css">
<script src="<%: Url.Content("~/Scripts/modernizer-1.7.min.js") %>" type="text/javascript"></script> <script src="<%: Url.Content("~/Scripts/modernizr-2.5.3.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery-1.6.1.min.js") %>" type="text/javascript"></script> <script src="<%: Url.Content("~/Scripts/jquery-1.7.2.min.js") %>" type="text/javascript"></script>
</head> </head>
<body> <body>
<div id="page"> <div id="page">
@ -299,8 +299,8 @@ End Class
<File name="packages.config"> <File name="packages.config">
<![CDATA[<?xml version="1.0" encoding="utf-8"?> <![CDATA[<?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="jQuery" version="1.6.1" /> <package id="jQuery" version="1.7.2" />
<package id="Modernizr" version="1.7" /> <package id="Modernizr" version="2.5.3" />
</packages> </packages>
]]> ]]>
</File> </File>

2
data/templates/project/VB/NotifyIcon.xpt

@ -18,7 +18,7 @@
<Open filename = "NotificationIcon.vb"/> <Open filename = "NotificationIcon.vb"/>
</Actions> </Actions>
<Project language="VBNet"> <Project language="VBNet" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

2
data/templates/project/VB/Service.xpt

@ -18,7 +18,7 @@
<Open filename = "${ProjectName}.vb"/> <Open filename = "${ProjectName}.vb"/>
</Actions> </Actions>
<Project language="VBNet"> <Project language="VBNet" defaultPlatform="x86">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>

2
data/templates/project/VB/WPFApplication.xpt

@ -16,7 +16,7 @@
<Open filename = "Window1.xaml"/> <Open filename = "Window1.xaml"/>
</Actions> </Actions>
<Project language = "VBNet"> <Project language = "VBNet" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

2
data/templates/project/VB/WPFNavigationApplication.xpt

@ -16,7 +16,7 @@
<Open filename = "Page1.xaml"/> <Open filename = "Page1.xaml"/>
</Actions> </Actions>
<Project language = "VBNet"> <Project language = "VBNet" defaultPlatform="x86">
<ProjectItems> <ProjectItems>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />

69
samples/MSTest/MSTest.SharpDevelop.Tests/MSTest.SharpDevelop.Tests.csproj

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<ProjectGuid>{51D56190-67B7-4A49-BA0A-24010460CCC6}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputType>Library</OutputType>
<RootNamespace>MSTest.SharpDevelop.Tests</RootNamespace>
<AssemblyName>MSTest.SharpDevelop.Tests</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AppDesignerFolder>Properties</AppDesignerFolder>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x86' ">
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<DebugSymbols>True</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\</OutputPath>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="ICSharpCode.Core">
<HintPath>..\..\..\bin\ICSharpCode.Core.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpDevelop">
<HintPath>..\..\..\bin\ICSharpCode.SharpDevelop.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpDevelop.Dom">
<HintPath>..\..\..\bin\ICSharpCode.SharpDevelop.Dom.dll</HintPath>
</Reference>
<Reference Include="nunit.framework">
<HintPath>..\..\..\src\Tools\NUnit\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="Rhino.Mocks">
<HintPath>..\..\..\src\Libraries\RhinoMocks\Rhino.Mocks.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="UnitTesting">
<HintPath>..\..\..\AddIns\Analysis\UnitTesting\UnitTesting.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="MSTestFrameworkTests.cs" />
<Compile Include="MSTestResultsTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MSTest.SharpDevelop\MSTest.SharpDevelop.csproj">
<Project>{8DF3A610-47F9-4448-B455-952BD57CB5CC}</Project>
<Name>MSTest.SharpDevelop</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

338
samples/MSTest/MSTest.SharpDevelop.Tests/MSTestFrameworkTests.cs

@ -0,0 +1,338 @@
// 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.Collections.ObjectModel;
using System.Linq;
using ICSharpCode.MSTest;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.UnitTesting;
using NUnit.Framework;
using Rhino.Mocks;
namespace MSTest.SharpDevelop.Tests
{
[TestFixture]
public class MSTestFrameworkTests
{
MSTestFramework testFramework;
IProject fakeProject;
[SetUp]
public void Init()
{
testFramework = new MSTestFramework();
fakeProject = MockRepository.GenerateStub<IProject>();
fakeProject.Stub(p => p.SyncRoot).Return(fakeProject);
}
void AddReferencesToProject(params string[] referenceNames)
{
List<ProjectItem> projectItems = referenceNames
.Select(name => new ReferenceProjectItem(fakeProject, name) as ProjectItem)
.ToList();
AddItemsToProject(projectItems);
}
void AddItemsToProject(List<ProjectItem> projectItems)
{
fakeProject
.Stub(project => project.Items)
.Return(new ReadOnlyCollection<ProjectItem>(projectItems));
}
void AddFileAndReferenceToProject(string fileName, string reference)
{
var projectItems = new List<ProjectItem>();
projectItems.Add(new FileProjectItem(fakeProject, ItemType.Compile, fileName));
projectItems.Add(new ReferenceProjectItem(fakeProject, reference));
AddItemsToProject(projectItems);
}
void NoItemsInProject()
{
AddReferencesToProject();
}
IClass CreateClassWithoutAnyAttributes()
{
IClass fakeClass = MockRepository.GenerateStub<IClass>();
AddAttributesToClass(fakeClass, new List<IAttribute>());
return fakeClass;
}
void AddAttributesToClass(IClass fakeClass, List<IAttribute> attributes)
{
fakeClass.Stub(c => c.Attributes).Return(attributes);
}
IClass CreateClassWithAttributes(params string[] attributeNames)
{
IClass fakeClass = MockRepository.GenerateStub<IClass>();
List<IAttribute> attributes = CreateAttributes(attributeNames);
AddAttributesToClass(fakeClass, attributes);
return fakeClass;
}
List<IAttribute> CreateAttributes(params string[] attributeNames)
{
return attributeNames.Select(name => CreateAttribute(name)).ToList();
}
IAttribute CreateAttribute(string name)
{
IReturnType returnType = MockRepository.GenerateStub<IReturnType>();
returnType.Stub(t => t.FullyQualifiedName).Return(name);
IAttribute attribute = MockRepository.GenerateStub<IAttribute>();
attribute.Stub(a => a.AttributeType).Return(returnType);
return attribute;
}
void MakeClassAbstract(IClass fakeClass)
{
fakeClass.Stub(c => c.IsAbstract).Return(true);
}
IMethod CreateMethodWithoutAnyAttributes()
{
IMethod fakeMethod = MockRepository.GenerateStub<IMethod>();
AddAttributesToMethod(fakeMethod, new List<IAttribute>());
return fakeMethod;
}
IMethod CreateMethodWithAttributes(params string[] attributeNames)
{
IMethod fakeMethod = MockRepository.GenerateStub<IMethod>();
List<IAttribute> attributes = CreateAttributes(attributeNames);
AddAttributesToMethod(fakeMethod, attributes);
return fakeMethod;
}
void AddAttributesToMethod(IMethod method, List<IAttribute> attributes)
{
method.Stub(m => m.Attributes).Return(attributes);
}
List<TestMember> GetTestMembersFor(IClass fakeClass)
{
return testFramework.GetTestMembersFor(fakeClass).ToList();
}
void AddMethodsToClass(IClass fakeClass, List<IMethod> methods)
{
fakeClass.Stub(c => c.Methods).Return(methods);
}
[Test]
public void IsTestProject_NullProject_ReturnsFalse()
{
bool result = testFramework.IsTestProject(null);
Assert.IsFalse(result);
}
[Test]
public void IsTestProject_ProjectWithMSTestAssemblyReference_ReturnsTrue()
{
AddReferencesToProject("System", "Microsoft.VisualStudio.QualityTools.UnitTestFramework");
bool result = testFramework.IsTestProject(fakeProject);
Assert.IsTrue(result);
}
[Test]
public void IsTestProject_ProjectWithoutMSTestAssemblyReference_ReturnsFalse()
{
NoItemsInProject();
bool result = testFramework.IsTestProject(fakeProject);
Assert.IsFalse(result);
}
[Test]
public void IsTestProject_ProjectWithMSTestAssemblyReferenceInUpperCase_ReturnsTrue()
{
AddReferencesToProject("MICROSOFT.VISUALSTUDIO.QUALITYTOOLS.UNITTESTFRAMEWORK");
bool result = testFramework.IsTestProject(fakeProject);
Assert.IsTrue(result);
}
[Test]
public void IsTestProject_ProjectWithMSTestAssemblyReferenceAndFileProjectItem_ReturnsTrue()
{
AddFileAndReferenceToProject("test.cs", "Microsoft.VisualStudio.QualityTools.UnitTestFramework");
bool result = testFramework.IsTestProject(fakeProject);
Assert.IsTrue(result);
}
[Test]
public void IsTestProject_ProjectWithMSTestAssemblyReferenceUsingFullName_ReturnsTrue()
{
AddReferencesToProject("Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=2.5.3.9345, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77");
bool result = testFramework.IsTestProject(fakeProject);
Assert.IsTrue(result);
}
[Test]
public void IsTestClass_ClassHasNoAttributes_ReturnsFalse()
{
IClass fakeClass = CreateClassWithoutAnyAttributes();
bool result = testFramework.IsTestClass(fakeClass);
Assert.IsFalse(result);
}
[Test]
public void IsTestClass_ClassHasTestFixtureAttributeMissingAttributePart_ReturnsTrue()
{
IClass fakeClass = CreateClassWithAttributes("TestClass");
bool result = testFramework.IsTestClass(fakeClass);
Assert.IsTrue(result);
}
[Test]
public void IsTestClass_ClassHasTestClassAttributeAndIsAbstract_ReturnsFalse()
{
IClass fakeClass = CreateClassWithAttributes("TestClass");
MakeClassAbstract(fakeClass);
bool result = testFramework.IsTestClass(fakeClass);
Assert.IsFalse(result);
}
[Test]
public void IsTestClass_ClassHasTestClassAttributeIncludingAttributePart_ReturnsTrue()
{
IClass fakeClass = CreateClassWithAttributes("TestClassAttribute");
bool result = testFramework.IsTestClass(fakeClass);
Assert.IsTrue(result);
}
[Test]
public void IsTestClass_ClassHasFullyQualifiedMSTestClassAttribute_ReturnsTrue()
{
IClass fakeClass = CreateClassWithAttributes("Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute");
bool result = testFramework.IsTestClass(fakeClass);
Assert.IsTrue(result);
}
[Test]
public void IsTestClass_ClassIsNull_ReturnsFalse()
{
bool result = testFramework.IsTestClass(null);
Assert.IsFalse(result);
}
[Test]
public void IsTestMember_MethodHasNoAttributes_ReturnsFalse()
{
IMethod method = CreateMethodWithoutAnyAttributes();
bool result = testFramework.IsTestMember(method);
Assert.IsFalse(result);
}
[Test]
public void IsTestMember_MethodHasTestMethodAttributeWithoutAttributePart_ReturnsTrue()
{
IMethod method = CreateMethodWithAttributes("TestMethod");
bool result = testFramework.IsTestMember(method);
Assert.IsTrue(result);
}
[Test]
public void IsTestMember_MethodHasTestMethodAttributeAttribute_ReturnsTrue()
{
IMethod method = CreateMethodWithAttributes("TestMethodAttribute");
bool result = testFramework.IsTestMember(method);
Assert.IsTrue(result);
}
[Test]
public void IsTestMember_MethodHasFullyQualifiedMSTestTestMethodAttribute_ReturnsTrue()
{
IMethod method = CreateMethodWithAttributes("Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute");
bool result = testFramework.IsTestMember(method);
Assert.IsTrue(result);
}
[Test]
public void IsTestMember_MethodIsNull_ReturnsFalse()
{
bool result = testFramework.IsTestMember(null);
Assert.IsFalse(result);
}
[Test]
public void IsTestMember_MemberNotMethod_ReturnsFalse()
{
IMember member = MockRepository.GenerateStub<IMember>();
bool result = testFramework.IsTestMember(member);
Assert.IsFalse(result);
}
[Test]
public void GetTestMembersFor_ClassHasNoMethods_ReturnsFalse()
{
IClass fakeClass = CreateClassWithAttributes("TestClass");
AddMethodsToClass(fakeClass, new List<IMethod>());
List<TestMember> testMembers = GetTestMembersFor(fakeClass);
Assert.AreEqual(0, testMembers.Count);
}
[Test]
public void GetTestMembersFor_ClassHasTwoMethodsAndSecondOneIsTestMethod_ReturnsSecondTestMethodOnly()
{
IClass fakeClass = CreateClassWithAttributes("TestClass");
var methods = new List<IMethod>();
methods.Add(CreateMethodWithoutAnyAttributes());
IMethod testMethod = CreateMethodWithAttributes("TestMethod");
methods.Add(testMethod);
AddMethodsToClass(fakeClass, methods);
List<TestMember> testMembers = GetTestMembersFor(fakeClass);
Assert.AreEqual(1, testMembers.Count);
Assert.AreEqual(testMethod, testMembers[0].Member);
}
}
}

184
samples/MSTest/MSTest.SharpDevelop.Tests/MSTestResultsTests.cs

@ -0,0 +1,184 @@
// 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.IO;
using System.Linq;
using System.Xml;
using ICSharpCode.MSTest;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.UnitTesting;
using NUnit.Framework;
namespace MSTest.SharpDevelop.Tests
{
[TestFixture]
public class MSTestResultsTests
{
MSTestResults testResults;
void CreateMSTestResults(string xml)
{
using (var reader = new XmlTextReader(new StringReader(xml))) {
testResults = new MSTestResults(reader);
}
}
void AssertTestResultsAreEqual(TestResult[] expectedResults)
{
List<string> expectedResultsAsString = ConvertToStrings(expectedResults);
List<string> actualResultsAsString = ConvertToStrings(testResults);
CollectionAssert.AreEqual(expectedResultsAsString, actualResultsAsString);
}
List<string> ConvertToStrings(IEnumerable<TestResult> results)
{
return results.Select(
result => String.Format(
"Name: {0}, Result: {1}, Message: '{2}', StackTrace: '{3}', StackPosition: {4}",
result.Name,
result.ResultType,
result.Message,
result.StackTrace,
result.StackTraceFilePosition))
.ToList();
}
[Test]
public void Results_OneClassWithTwoPassingTestMethods_ReturnsTwoResults()
{
CreateMSTestResults(oneClassWithTwoPassingTestMethods);
var expectedResults = new TestResult[] {
new TestResult("FooTest.UnitTest1.TestMethod1") {
ResultType = TestResultType.Success
},
new TestResult("FooTest.UnitTest1.TestMethod2") {
ResultType = TestResultType.Success
},
};
AssertTestResultsAreEqual(expectedResults);
}
string oneClassWithTwoPassingTestMethods =
@"<?xml version=""1.0"" encoding=""UTF-8""?>
<TestRun id=""13473da1-70ea-422c-86a5-3b5d04610561"" name=""FEYNMAN 2012-05-06 11:02:13"" runUser=""Feynman\Matt"" xmlns=""http://microsoft.com/schemas/VisualStudio/TeamTest/2010"">
<TestSettings name=""Local"" id=""1af0c4fe-35c7-49e5-b22a-40677255db56"">
<Description>These are default test settings for a local test run.</Description>
<Deployment runDeploymentRoot=""FEYNMAN 2012-05-06 11_02_13"">
<DeploymentItem filename=""T4Scaffolding.Test\ExampleScripts\"" />
</Deployment>
<Execution>
<TestTypeSpecific>
<UnitTestRunConfig testTypeId=""13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"">
<AssemblyResolution>
<TestDirectory useLoadContext=""true"" />
</AssemblyResolution>
</UnitTestRunConfig>
<WebTestRunConfiguration testTypeId=""4e7599fa-5ecb-43e9-a887-cd63cf72d207"">
<Browser name=""Internet Explorer 7.0"">
<Headers>
<Header name=""User-Agent"" value=""Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"" />
<Header name=""Accept"" value=""*/*"" />
<Header name=""Accept-Language"" value=""{{$IEAcceptLanguage}}"" />
<Header name=""Accept-Encoding"" value=""GZIP"" />
</Headers>
</Browser>
</WebTestRunConfiguration>
</TestTypeSpecific>
<AgentRule name=""LocalMachineDefaultRole"">
</AgentRule>
</Execution>
</TestSettings>
<Times creation=""2012-05-06T11:02:13.0655060+01:00"" queuing=""2012-05-06T11:02:16.0845060+01:00"" start=""2012-05-06T11:02:16.4355060+01:00"" finish=""2012-05-06T11:02:17.8915060+01:00"" />
<ResultSummary outcome=""Completed"">
<Counters total=""2"" executed=""2"" passed=""2"" error=""0"" failed=""0"" timeout=""0"" aborted=""0"" inconclusive=""0"" passedButRunAborted=""0"" notRunnable=""0"" notExecuted=""0"" disconnected=""0"" warning=""0"" completed=""0"" inProgress=""0"" pending=""0"" />
</ResultSummary>
<TestDefinitions>
<UnitTest name=""TestMethod2"" storage=""d:\temp\test\mvcscaffolding_31fa7ea49b52\footest\bin\debug\footest.dll"" id=""760d70dc-fcd4-bd05-26dd-50b565053466"">
<Execution id=""4d09aff0-ba01-4c01-9c3c-dd6475e89ef2"" />
<TestMethod codeBase=""D:/projects/FooTest/bin/Debug/FooTest.DLL"" adapterTypeName=""Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapter, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" className=""FooTest.UnitTest1, FooTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" name=""TestMethod2"" />
</UnitTest>
<UnitTest name=""TestMethod1"" storage=""d:\temp\test\mvcscaffolding_31fa7ea49b52\footest\bin\debug\footest.dll"" id=""752967dd-f45f-65ac-ca4a-dcd30f56a25a"">
<Execution id=""ba931d00-d381-43c3-b0f9-f4cf37015438"" />
<TestMethod codeBase=""D:/projects/FooTest/bin/Debug/FooTest.DLL"" adapterTypeName=""Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapter, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" className=""FooTest.UnitTest1, FooTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" name=""TestMethod1"" />
</UnitTest>
</TestDefinitions>
<TestLists>
<TestList name=""Results Not in a List"" id=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" />
<TestList name=""All Loaded Results"" id=""19431567-8539-422a-85d7-44ee4e166bda"" />
</TestLists>
<TestEntries>
<TestEntry testId=""752967dd-f45f-65ac-ca4a-dcd30f56a25a"" executionId=""ba931d00-d381-43c3-b0f9-f4cf37015438"" testListId=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" />
<TestEntry testId=""760d70dc-fcd4-bd05-26dd-50b565053466"" executionId=""4d09aff0-ba01-4c01-9c3c-dd6475e89ef2"" testListId=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" />
</TestEntries>
<Results>
<UnitTestResult executionId=""ba931d00-d381-43c3-b0f9-f4cf37015438"" testId=""752967dd-f45f-65ac-ca4a-dcd30f56a25a"" testName=""TestMethod1"" computerName=""FEYNMAN"" duration=""00:00:00.0501283"" startTime=""2012-05-06T11:02:16.5755060+01:00"" endTime=""2012-05-06T11:02:17.7465060+01:00"" testType=""13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"" outcome=""Passed"" testListId=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" relativeResultsDirectory=""ba931d00-d381-43c3-b0f9-f4cf37015438"">
</UnitTestResult>
<UnitTestResult executionId=""4d09aff0-ba01-4c01-9c3c-dd6475e89ef2"" testId=""760d70dc-fcd4-bd05-26dd-50b565053466"" testName=""TestMethod2"" computerName=""FEYNMAN"" duration=""00:00:00.0018331"" startTime=""2012-05-06T11:02:17.7655060+01:00"" endTime=""2012-05-06T11:02:17.7785060+01:00"" testType=""13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"" outcome=""Passed"" testListId=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" relativeResultsDirectory=""4d09aff0-ba01-4c01-9c3c-dd6475e89ef2"">
</UnitTestResult>
</Results>
</TestRun>";
[Test]
public void Results_OneTestMethodThrowsException_ReturnsOneErrorResultWithStackTrace()
{
CreateMSTestResults(oneTestMethodThrowsException);
var expectedResults = new TestResult[] {
new TestResult("FooTest.UnitTest1.TestMethod1") {
ResultType = TestResultType.Failure,
Message = "System.ApplicationException: asdfafds",
StackTrace = " at FooTest.UnitTest1.TestMethod1() in d:\\projects\\FooTest\\UnitTest1.cs:line 21\r\n",
StackTraceFilePosition = new FilePosition(@"d:\projects\FooTest\UnitTest1.cs", 21, 1)
}
};
AssertTestResultsAreEqual(expectedResults);
}
string oneTestMethodThrowsException =
@"<?xml version=""1.0"" encoding=""UTF-8""?>
<TestRun id=""7c0b0a20-13c6-4c28-b74c-e29c271f2ec4"" name=""FEYNMAN 2012-05-06 13:07:05"" runUser=""Feynman\Matt"" xmlns=""http://microsoft.com/schemas/VisualStudio/TeamTest/2010"">
<TestSettings name=""Default Test Settings"" id=""03cf0958-a7e3-4b25-b98b-435f01359ee1"">
<Execution>
<TestTypeSpecific />
<AgentRule name=""Execution Agents"">
</AgentRule>
</Execution>
<Deployment runDeploymentRoot=""FEYNMAN 2012-05-06 13_07_05"" />
</TestSettings>
<Times creation=""2012-05-06T13:07:05.9187060+01:00"" queuing=""2012-05-06T13:07:06.6519060+01:00"" start=""2012-05-06T13:07:06.8235060+01:00"" finish=""2012-05-06T13:07:08.0403060+01:00"" />
<ResultSummary outcome=""Failed"">
<Counters total=""1"" executed=""1"" passed=""0"" error=""0"" failed=""1"" timeout=""0"" aborted=""0"" inconclusive=""0"" passedButRunAborted=""0"" notRunnable=""0"" notExecuted=""0"" disconnected=""0"" warning=""0"" completed=""0"" inProgress=""0"" pending=""0"" />
</ResultSummary>
<TestDefinitions>
<UnitTest name=""TestMethod1"" storage=""d:\projects\footest\bin\debug\footest.dll"" id=""752967dd-f45f-65ac-ca4a-dcd30f56a25a"">
<Execution id=""c147e8ae-7ee7-4f28-9db3-a708e350c68d"" />
<TestMethod codeBase=""D:/projects/FooTest/bin/Debug/FooTest.DLL"" adapterTypeName=""Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapter, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"" className=""FooTest.UnitTest1, FooTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" name=""TestMethod1"" />
</UnitTest>
</TestDefinitions>
<TestLists>
<TestList name=""Results Not in a List"" id=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" />
<TestList name=""All Loaded Results"" id=""19431567-8539-422a-85d7-44ee4e166bda"" />
</TestLists>
<TestEntries>
<TestEntry testId=""752967dd-f45f-65ac-ca4a-dcd30f56a25a"" executionId=""c147e8ae-7ee7-4f28-9db3-a708e350c68d"" testListId=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" />
</TestEntries>
<Results>
<UnitTestResult executionId=""c147e8ae-7ee7-4f28-9db3-a708e350c68d"" testId=""752967dd-f45f-65ac-ca4a-dcd30f56a25a"" testName=""TestMethod1"" computerName=""FEYNMAN"" duration=""00:00:00.0404760"" startTime=""2012-05-06T13:07:06.9015060+01:00"" endTime=""2012-05-06T13:07:07.8375060+01:00"" testType=""13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"" outcome=""Failed"" testListId=""8c84fa94-04c1-424b-9868-57a2d4851a1d"" relativeResultsDirectory=""c147e8ae-7ee7-4f28-9db3-a708e350c68d"">
<Output>
<ErrorInfo>
<Message>Test method FooTest.UnitTest1.TestMethod1 threw exception:
System.ApplicationException: asdfafds</Message>
<StackTrace> at FooTest.UnitTest1.TestMethod1() in d:\projects\FooTest\UnitTest1.cs:line 21
</StackTrace>
</ErrorInfo>
</Output>
</UnitTestResult>
</Results>
</TestRun>";
}
}

31
samples/MSTest/MSTest.SharpDevelop.Tests/Properties/AssemblyInfo.cs

@ -0,0 +1,31 @@
#region Using directives
using System;
using System.Reflection;
using System.Runtime.InteropServices;
#endregion
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MSTest.SharpDevelop.Tests")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MSTest.SharpDevelop.Tests")]
[assembly: AssemblyCopyright("Copyright 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// This sets the default COM visibility of types in the assembly to invisible.
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
[assembly: ComVisible(false)]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0")]

24
samples/MSTest/MSTest.SharpDevelop.sln

@ -0,0 +1,24 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.0.8749-Beta 2
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSTest.SharpDevelop", "MSTest.SharpDevelop\MSTest.SharpDevelop.csproj", "{8DF3A610-47F9-4448-B455-952BD57CB5CC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSTest.SharpDevelop.Tests", "MSTest.SharpDevelop.Tests\MSTest.SharpDevelop.Tests.csproj", "{51D56190-67B7-4A49-BA0A-24010460CCC6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8DF3A610-47F9-4448-B455-952BD57CB5CC}.Debug|x86.Build.0 = Debug|x86
{8DF3A610-47F9-4448-B455-952BD57CB5CC}.Debug|x86.ActiveCfg = Debug|x86
{8DF3A610-47F9-4448-B455-952BD57CB5CC}.Release|x86.Build.0 = Release|x86
{8DF3A610-47F9-4448-B455-952BD57CB5CC}.Release|x86.ActiveCfg = Release|x86
{51D56190-67B7-4A49-BA0A-24010460CCC6}.Debug|x86.Build.0 = Debug|x86
{51D56190-67B7-4A49-BA0A-24010460CCC6}.Debug|x86.ActiveCfg = Debug|x86
{51D56190-67B7-4A49-BA0A-24010460CCC6}.Release|x86.Build.0 = Release|x86
{51D56190-67B7-4A49-BA0A-24010460CCC6}.Release|x86.ActiveCfg = Release|x86
EndGlobalSection
EndGlobal

103
samples/MSTest/MSTest.SharpDevelop/MSTest.SharpDevelop.csproj

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<ProjectGuid>{8DF3A610-47F9-4448-B455-952BD57CB5CC}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.MSTest</RootNamespace>
<AssemblyName>MSTest.SharpDevelop</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AppDesignerFolder>Properties</AppDesignerFolder>
<OutputPath>..\..\..\AddIns\Samples\MSTest</OutputPath>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x86' ">
<PlatformTarget>x86</PlatformTarget>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="ICSharpCode.Core">
<HintPath>..\..\..\bin\ICSharpCode.Core.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ICSharpCode.Core.Presentation">
<HintPath>..\..\..\bin\ICSharpCode.Core.Presentation.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ICSharpCode.SharpDevelop">
<HintPath>..\..\..\bin\ICSharpCode.SharpDevelop.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ICSharpCode.SharpDevelop.Dom">
<HintPath>..\..\..\bin\ICSharpCode.SharpDevelop.Dom.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ICSharpCode.SharpDevelop.Widgets">
<HintPath>..\..\..\bin\ICSharpCode.SharpDevelop.Widgets.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="UnitTesting">
<HintPath>..\..\..\AddIns\Analysis\UnitTesting\UnitTesting.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="MSTestApplication.cs" />
<Compile Include="MSTestApplicationCommandLine.cs" />
<Compile Include="MSTestDebugger.cs" />
<Compile Include="MSTestFramework.cs" />
<Compile Include="MSTestOptions.cs" />
<Compile Include="MSTestOptionsPanel.xaml.cs">
<DependentUpon>MSTestOptionsPanel.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MSTestQualifiedClassName.cs" />
<Compile Include="MSTestResult.cs" />
<Compile Include="MSTestResults.cs" />
<Compile Include="MSTestResultsFileName.cs" />
<Compile Include="MSTestRunner.cs" />
<Compile Include="ProjectItemExtensions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="MSTest.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Page Include="MSTestOptionsPanel.xaml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

30
samples/MSTest/MSTest.SharpDevelop/MSTest.addin

@ -0,0 +1,30 @@
<AddIn
name="MSTest"
author="Matt Ward"
copyright="prj:///doc/copyright.txt"
description="MSTest support">
<Manifest>
<Identity name="ICSharpCode.MSTest"/>
</Manifest>
<Runtime>
<Import assembly=":ICSharpCode.SharpDevelop"/>
<Import assembly="$ICSharpCode.UnitTesting/UnitTesting.dll"/>
<Import assembly="MSTest.SharpDevelop.dll"/>
</Runtime>
<Path name="/SharpDevelop/UnitTesting/TestFrameworks">
<TestFramework
id="mstest"
class="ICSharpCode.MSTest.MSTestFramework"
supportedProjects=".csproj"/>
</Path>
<Path name="/SharpDevelop/Dialogs/OptionsDialog/ToolsOptions">
<OptionPanel
id="MSTestOptionsPanel"
label="MS Test"
class="ICSharpCode.MSTest.MSTestOptionsPanel"/>
</Path>
</AddIn>

46
samples/MSTest/MSTest.SharpDevelop/MSTestApplication.cs

@ -0,0 +1,46 @@
// 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.Diagnostics;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestApplication
{
SelectedTests selectedTests;
string resultsFileName;
public MSTestApplication(SelectedTests selectedTests, string resultsFileName)
{
this.selectedTests = selectedTests;
this.resultsFileName = resultsFileName;
GetProcessStartInfo();
}
void GetProcessStartInfo()
{
ProcessStartInfo = new ProcessStartInfo(MSTestOptions.MSTestPath, GetCommandLine());
}
string GetCommandLine()
{
var commandLine = new MSTestApplicationCommandLine();
commandLine.AppendQuoted("testcontainer", selectedTests.Project.OutputAssemblyFullPath);
commandLine.AppendQuoted("resultsfile", resultsFileName);
commandLine.Append("detail", "errorstacktrace");
if (selectedTests.NamespaceFilter != null) {
commandLine.Append("test", selectedTests.NamespaceFilter);
} else if (selectedTests.Member != null) {
commandLine.Append("test", selectedTests.Member.FullyQualifiedName);
} else if (selectedTests.Class != null) {
commandLine.Append("test", selectedTests.Class.FullyQualifiedName);
}
return commandLine.ToString();
}
public ProcessStartInfo ProcessStartInfo { get; private set; }
}
}

37
samples/MSTest/MSTest.SharpDevelop/MSTestApplicationCommandLine.cs

@ -0,0 +1,37 @@
// 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.Text;
namespace ICSharpCode.MSTest
{
public class MSTestApplicationCommandLine
{
StringBuilder commandLine = new StringBuilder();
public MSTestApplicationCommandLine()
{
}
public void Append(string argument, string value)
{
AppendFormat("/{0}:{1} ", argument, value);
}
public void AppendQuoted(string argument, string value)
{
AppendFormat("/{0}:\"{1}\" ", argument, value);
}
void AppendFormat(string format, string argument, string value)
{
commandLine.AppendFormat(format, argument, value);
}
public override string ToString()
{
return commandLine.ToString();
}
}
}

134
samples/MSTest/MSTest.SharpDevelop/MSTestDebugger.cs

@ -0,0 +1,134 @@
// 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.Diagnostics;
using System.IO;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestDebugger : TestRunnerBase
{
IUnitTestDebuggerService debuggerService;
IUnitTestMessageService messageService;
IDebugger debugger;
string resultsFileName;
public MSTestDebugger()
: this(
new UnitTestDebuggerService(),
new UnitTestMessageService())
{
}
public MSTestDebugger(
IUnitTestDebuggerService debuggerService,
IUnitTestMessageService messageService)
{
this.debuggerService = debuggerService;
this.messageService = messageService;
this.debugger = debuggerService.CurrentDebugger;
}
public override void Start(SelectedTests selectedTests)
{
ProcessStartInfo startInfo = GetProcessStartInfo(selectedTests);
if (IsDebuggerRunning) {
if (CanStopDebugging()) {
debugger.Stop();
Start(startInfo);
}
} else {
Start(startInfo);
}
}
protected override ProcessStartInfo GetProcessStartInfo(SelectedTests selectedTests)
{
resultsFileName = new MSTestResultsFileName(selectedTests).FileName;
CreateDirectoryForResultsFile();
var mstestApplication = new MSTestApplication(selectedTests, resultsFileName);
return mstestApplication.ProcessStartInfo;
}
public bool IsDebuggerRunning {
get { return debuggerService.IsDebuggerLoaded && debugger.IsDebugging; }
}
bool CanStopDebugging()
{
string question = "${res:XML.MainMenu.RunMenu.Compile.StopDebuggingQuestion}";
string caption = "${res:XML.MainMenu.RunMenu.Compile.StopDebuggingTitle}";
return messageService.AskQuestion(question, caption);
}
void CreateDirectoryForResultsFile()
{
string path = Path.GetDirectoryName(resultsFileName);
if (!Directory.Exists(path)) {
Directory.CreateDirectory(path);
}
}
void Start(ProcessStartInfo startInfo)
{
StartDebugger(startInfo);
}
void StartDebugger(ProcessStartInfo startInfo)
{
LogCommandLine(startInfo);
bool running = false;
debugger.DebugStopped += DebugStopped;
try {
debugger.Start(startInfo);
running = true;
} finally {
if (!running) {
debugger.DebugStopped -= DebugStopped;
}
}
}
void DebugStopped(object source, EventArgs e)
{
debugger.DebugStopped -= DebugStopped;
if (File.Exists(resultsFileName)) {
var testResults = new MSTestResults(resultsFileName);
var workbench = new UnitTestWorkbench();
workbench.SafeThreadAsyncCall(() => UpdateTestResults(testResults));
} else {
messageService.ShowFormattedErrorMessage("Unable to find test results file: '{0}'.", resultsFileName);
OnAllTestsFinished(source, e);
}
}
void UpdateTestResults(MSTestResults testResults)
{
foreach (TestResult result in testResults) {
OnTestFinished(this, new TestFinishedEventArgs(result));
}
OnAllTestsFinished(this, new EventArgs());
}
public override void Stop()
{
if (debugger.IsDebugging) {
debugger.Stop();
}
}
public override void Dispose()
{
Stop();
try {
File.Delete(resultsFileName);
} catch { }
}
}
}

109
samples/MSTest/MSTest.SharpDevelop/MSTestFramework.cs

@ -0,0 +1,109 @@
// 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.Linq;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestFramework : ITestFramework
{
public bool IsBuildNeededBeforeTestRun {
get { return true; }
}
public bool IsTestMember(IMember member)
{
var method = member as IMethod;
if (method == null)
return false;
return IsTestMethod(method);
}
bool IsTestMethod(IMethod method)
{
foreach (IAttribute attribute in method.Attributes) {
if (IsMSTestMethodAttribute(attribute)) {
return true;
}
}
return false;
}
bool IsMSTestMethodAttribute(IAttribute attribute)
{
return IsMSTestMethodAttribute(attribute.AttributeType.FullyQualifiedName);
}
bool IsMSTestMethodAttribute(string name)
{
return
name == "TestMethod" ||
name == "TestMethodAttribute" ||
name == "Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute";
}
public bool IsTestClass(IClass c)
{
if ((c == null) || (c.IsAbstract))
return false;
foreach (IAttribute attribute in c.Attributes) {
if (IsMSTestClassAttribute(attribute)) {
return true;
}
}
return false;
}
bool IsMSTestClassAttribute(IAttribute attribute)
{
return IsMSTestClassAttribute(attribute.AttributeType.FullyQualifiedName);
}
bool IsMSTestClassAttribute(string name)
{
return
name == "TestClass" ||
name == "TestClassAttribute" ||
name == "Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute";
}
public bool IsTestProject(IProject project)
{
if (project == null)
return false;
foreach (ProjectItem item in project.Items) {
if (item.IsMSTestAssemblyReference()) {
return true;
}
}
return false;
}
public IEnumerable<TestMember> GetTestMembersFor(IClass c)
{
return c.Methods
.Where(IsTestMethod)
.Select(method => new TestMember(method));
}
public ITestRunner CreateTestRunner()
{
return new MSTestRunner();
}
public ITestRunner CreateTestDebugger()
{
return new MSTestDebugger();
}
}
}

26
samples/MSTest/MSTest.SharpDevelop/MSTestOptions.cs

@ -0,0 +1,26 @@
// 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.IO;
using ICSharpCode.Core;
namespace ICSharpCode.MSTest
{
public static class MSTestOptions
{
static Properties properties = PropertyService.Get("MSTestOptions", new Properties());
public static string MSTestPath {
get { return properties.Get<string>("MSTestPath", GetDefaultMSTestPath()); }
set { properties.Set("MSTestPath", value); }
}
static string GetDefaultMSTestPath()
{
return Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),
@"Microsoft Visual Studio 10.0\Common7\IDE\mstest.exe");
}
}
}

32
samples/MSTest/MSTest.SharpDevelop/MSTestOptionsPanel.xaml

@ -0,0 +1,32 @@
<gui:OptionPanel
x:Class="ICSharpCode.MSTest.MSTestOptionsPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:sd="clr-namespace:ICSharpCode.SharpDevelop"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:widgets="http://icsharpcode.net/sharpdevelop/widgets"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels">
<StackPanel>
<GroupBox Header="MS Test">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Label Content="Path:"/>
<TextBox
Grid.Column="1"
Text="{Binding MSTestPath}"/>
<Button
Grid.Column="2"
Content="..."
Command="{Binding BrowseCommand}"
Padding="4, 0"
Margin="4,0"/>
</Grid>
</GroupBox>
</StackPanel>
</gui:OptionPanel>

64
samples/MSTest/MSTest.SharpDevelop/MSTestOptionsPanel.xaml.cs

@ -0,0 +1,64 @@
// 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.ComponentModel;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Widgets;
using Microsoft.Win32;
namespace ICSharpCode.MSTest
{
public partial class MSTestOptionsPanel : OptionPanel, INotifyPropertyChanged
{
string msTestPath;
bool changed;
public MSTestOptionsPanel()
{
InitializeComponent();
BrowseCommand = new RelayCommand(Browse);
msTestPath = MSTestOptions.MSTestPath;
DataContext = this;
}
public ICommand BrowseCommand { get; private set; }
void Browse()
{
var dialog = new OpenFileDialog();
if (dialog.ShowDialog() ?? false) {
MSTestPath = dialog.FileName;
}
}
public string MSTestPath {
get { return msTestPath; }
set {
msTestPath = value;
changed = true;
OnPropertyChanged("MSTestPath");
}
}
public override bool SaveOptions()
{
if (changed) {
MSTestOptions.MSTestPath = msTestPath;
}
return true;
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string name)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
}

31
samples/MSTest/MSTest.SharpDevelop/MSTestQualifiedClassName.cs

@ -0,0 +1,31 @@
// 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.MSTest
{
public class MSTestQualifiedClassName
{
public MSTestQualifiedClassName(string qualifiedClassName)
{
ClassName = GetClassName(qualifiedClassName);
}
string GetClassName(string qualifiedClassName)
{
int index = qualifiedClassName.IndexOf(',');
if (index > 0) {
return qualifiedClassName.Substring(0, index);
}
return qualifiedClassName;
}
public string ClassName { get; private set; }
public string GetQualifiedMethodName(string methodName)
{
return String.Format("{0}.{1}", ClassName, methodName);
}
}
}

93
samples/MSTest/MSTest.SharpDevelop/MSTestResult.cs

@ -0,0 +1,93 @@
// 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.IO;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestResult
{
public MSTestResult(string id)
{
this.Id = id;
}
public string Id { get; private set; }
public string Name { get; private set; }
public TestResultType ResultType { get; private set; }
public string StackTrace { get; set; }
public string Message { get; set; }
public void UpdateTestName(string qualifiedClassName, string methodName)
{
UpdateTestName(new MSTestQualifiedClassName(qualifiedClassName), methodName);
}
public void UpdateTestName(MSTestQualifiedClassName qualifiedClassName, string methodName)
{
this.Name = qualifiedClassName.GetQualifiedMethodName(methodName);
}
public void UpdateResult(string result)
{
if (result == "Passed") {
this.ResultType = TestResultType.Success;
} else if (result == "Failed") {
this.ResultType = TestResultType.Failure;
}
}
public bool IsError {
get { return ResultType == TestResultType.Failure; }
}
public TestResult ToTestResult()
{
return new TestResult(Name) {
ResultType = ResultType,
Message = GetMessage(),
StackTrace = StackTrace,
StackTraceFilePosition = GetStackTraceFilePosition()
};
}
string GetMessage()
{
if (String.IsNullOrEmpty(Message))
return String.Empty;
int index = Message.IndexOf('\n');
if (index > 0) {
return Message.Substring(index + 1);
}
return Message;
}
FilePosition GetStackTraceFilePosition()
{
if (!String.IsNullOrEmpty(StackTrace)) {
return ParseFilePositionFromStackTrace();
}
return FilePosition.Empty;
}
FilePosition ParseFilePositionFromStackTrace()
{
FileLineReference fileLineRef = OutputTextLineParser.GetNUnitOutputFileLineReference(StackTrace, true);
if (fileLineRef != null) {
return CreateFilePosition(fileLineRef);
}
return FilePosition.Empty;
}
FilePosition CreateFilePosition(FileLineReference fileLineRef)
{
string fileName = Path.GetFullPath(fileLineRef.FileName);
return new FilePosition(fileName, fileLineRef.Line, fileLineRef.Column + 1);
}
}
}

91
samples/MSTest/MSTest.SharpDevelop/MSTestResults.cs

@ -0,0 +1,91 @@
// 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.Xml;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestResults : List<TestResult>
{
Dictionary<string, MSTestResult> testDefinitions = new Dictionary<string, MSTestResult>();
public MSTestResults(string fileName)
: this(new XmlTextReader(fileName))
{
}
public MSTestResults(XmlTextReader reader)
{
ReadResults(reader);
}
void ReadResults(XmlTextReader reader)
{
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
if (reader.Name == "UnitTest") {
ReadUnitTest(reader);
} else if (reader.Name == "UnitTestResult") {
ReadUnitTestResult(reader);
}
break;
}
}
}
void ReadUnitTest(XmlTextReader reader)
{
var testResult = new MSTestResult(reader.GetAttribute("id"));
testDefinitions.Add(testResult.Id, testResult);
if (reader.ReadToDescendant("TestMethod")) {
testResult.UpdateTestName(reader.GetAttribute("className"), reader.GetAttribute("name"));
}
}
void ReadUnitTestResult(XmlTextReader reader)
{
string testId = reader.GetAttribute("testId");
MSTestResult testResult = FindTestResult(testId);
if (testResult != null) {
testResult.UpdateResult(reader.GetAttribute("outcome"));
if (testResult.IsError) {
ReadErrorInformation(testResult, reader);
}
Add(testResult.ToTestResult());
}
}
void ReadErrorInformation(MSTestResult testResult, XmlTextReader reader)
{
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.EndElement:
if (reader.Name == "UnitTestResult") {
return;
}
break;
case XmlNodeType.Element:
if (reader.Name == "Message") {
testResult.Message = reader.ReadElementContentAsString();
} else if (reader.Name == "StackTrace") {
testResult.StackTrace = reader.ReadElementContentAsString();
}
break;
}
}
}
MSTestResult FindTestResult(string testId)
{
MSTestResult testResult = null;
testDefinitions.TryGetValue(testId, out testResult);
return testResult;
}
}
}

27
samples/MSTest/MSTest.SharpDevelop/MSTestResultsFileName.cs

@ -0,0 +1,27 @@
// 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.IO;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestResultsFileName
{
public MSTestResultsFileName(SelectedTests selectedTests)
{
FileName = GetFileName(selectedTests);
}
public string FileName { get; private set; }
string GetFileName(SelectedTests selectedTests)
{
return Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"Temp",
selectedTests.Project.Name + "-Results.trx");
}
}
}

138
samples/MSTest/MSTest.SharpDevelop/MSTestRunner.cs

@ -0,0 +1,138 @@
// 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.Diagnostics;
using System.IO;
using ICSharpCode.SharpDevelop.Util;
using ICSharpCode.UnitTesting;
namespace ICSharpCode.MSTest
{
public class MSTestRunner : TestRunnerBase
{
IUnitTestProcessRunner processRunner;
IFileSystem fileSystem;
IUnitTestMessageService messageService;
string resultsFileName;
public MSTestRunner()
: this(new UnitTestProcessRunner(),
new UnitTestFileService(),
new UnitTestMessageService())
{
}
public MSTestRunner(
IUnitTestProcessRunner processRunner,
IFileSystem fileSystem,
IUnitTestMessageService messageService)
{
this.processRunner = processRunner;
this.fileSystem = fileSystem;
this.messageService = messageService;
processRunner.LogStandardOutputAndError = false;
processRunner.OutputLineReceived += OutputLineReceived;
processRunner.ErrorLineReceived += OutputLineReceived;
processRunner.ProcessExited += ProcessRunnerExited;
}
void ProcessRunnerExited(object source, EventArgs e)
{
// Read all tests.
if (FileExists(resultsFileName)) {
var testResults = new MSTestResults(resultsFileName);
var workbench = new UnitTestWorkbench();
workbench.SafeThreadAsyncCall(() => UpdateTestResults(testResults));
} else {
messageService.ShowFormattedErrorMessage("Unable to find test results file: '{0}'.", resultsFileName);
OnAllTestsFinished(source, e);
}
}
void UpdateTestResults(MSTestResults testResults)
{
foreach (TestResult result in testResults) {
OnTestFinished(this, new TestFinishedEventArgs(result));
}
OnAllTestsFinished(this, new EventArgs());
}
void OutputLineReceived(object source, LineReceivedEventArgs e)
{
OnMessageReceived(e.Line);
}
public override void Start(SelectedTests selectedTests)
{
ProcessStartInfo startInfo = GetProcessStartInfo(selectedTests);
TryDeleteResultsFile();
Start(startInfo);
}
protected override ProcessStartInfo GetProcessStartInfo(SelectedTests selectedTests)
{
resultsFileName = new MSTestResultsFileName(selectedTests).FileName;
CreateDirectoryForResultsFile();
var mstestApplication = new MSTestApplication(selectedTests, resultsFileName);
return mstestApplication.ProcessStartInfo;
}
void Start(ProcessStartInfo processStartInfo)
{
LogCommandLine(processStartInfo);
if (FileExists(processStartInfo.FileName)) {
processRunner.WorkingDirectory = processStartInfo.WorkingDirectory;
processRunner.Start(processStartInfo.FileName, processStartInfo.Arguments);
} else {
ShowApplicationDoesNotExistMessage(processStartInfo.FileName);
}
}
void CreateDirectoryForResultsFile()
{
string path = Path.GetDirectoryName(resultsFileName);
if (!Directory.Exists(path)) {
Directory.CreateDirectory(path);
}
}
bool FileExists(string fileName)
{
return fileSystem.FileExists(fileName);
}
void ShowApplicationDoesNotExistMessage(string fileName)
{
string resourceString = "${res:ICSharpCode.UnitTesting.TestRunnerNotFoundMessageFormat}";
messageService.ShowFormattedErrorMessage(resourceString, fileName);
}
public override void Stop()
{
processRunner.Kill();
}
public override void Dispose()
{
processRunner.ErrorLineReceived -= OutputLineReceived;
processRunner.OutputLineReceived -= OutputLineReceived;
processRunner.ProcessExited -= ProcessRunnerExited;
TryDeleteResultsFile();
}
void TryDeleteResultsFile()
{
try {
Console.WriteLine("Deleting results file: " + resultsFileName);
File.Delete(resultsFileName);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
}
}

28
samples/MSTest/MSTest.SharpDevelop/ProjectItemExtensions.cs

@ -0,0 +1,28 @@
// 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 ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.MSTest
{
public static class ProjectItemExtensions
{
public static bool IsMSTestAssemblyReference(this ProjectItem item)
{
var referenceItem = item as ReferenceProjectItem;
if (referenceItem == null)
return false;
return IsMSTestAssemblyReference(referenceItem);
}
public static bool IsMSTestAssemblyReference(this ReferenceProjectItem item)
{
return String.Equals(
item.ShortName,
"Microsoft.VisualStudio.QualityTools.UnitTestFramework",
StringComparison.OrdinalIgnoreCase);
}
}
}

31
samples/MSTest/MSTest.SharpDevelop/Properties/AssemblyInfo.cs

@ -0,0 +1,31 @@
#region Using directives
using System;
using System.Reflection;
using System.Runtime.InteropServices;
#endregion
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MSTest.SharpDevelop")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MSTest.SharpDevelop")]
[assembly: AssemblyCopyright("Copyright 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// This sets the default COM visibility of types in the assembly to invisible.
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
[assembly: ComVisible(false)]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0")]

4
src/AddIns/Analysis/CodeCoverage/Test/Testing/CodeCoverageTestRunnerTests.cs

@ -118,7 +118,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
string expectedCommandLine = string expectedCommandLine =
"--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " + "--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " + "--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " +
"--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /results=\\\"d:\\temp\\results.txt\\\"\" " + "--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml /results=\\\"d:\\temp\\results.txt\\\"\" " +
"--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " + "--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " +
"--include [MyTests]*"; "--include [MyTests]*";
@ -218,7 +218,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
"\"d:\\sharpdevelop\\bin\\Tools\\PartCover\\PartCover.exe\" " + "\"d:\\sharpdevelop\\bin\\Tools\\PartCover\\PartCover.exe\" " +
"--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " + "--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " + "--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " +
"--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\"\" " + "--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml\" " +
"--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " + "--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " +
"--include [*]*"; "--include [*]*";
} }

4
src/AddIns/Analysis/CodeCoverage/Test/Testing/PartCoverApplicationTests.cs

@ -133,7 +133,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
string expectedCommandLine = string expectedCommandLine =
"--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " + "--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " + "--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " +
"--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\"\" " + "--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml\" " +
"--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " + "--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " +
"--include [*]*"; "--include [*]*";
@ -157,7 +157,7 @@ namespace ICSharpCode.CodeCoverage.Tests.Testing
string expectedCommandLine = string expectedCommandLine =
"--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " + "--target \"d:\\sharpdevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " + "--target-work-dir \"c:\\projects\\MyTests\\bin\\Debug\" " +
"--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\"\" " + "--target-args \"\\\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\\\" /noxml\" " +
"--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " + "--output \"c:\\projects\\MyTests\\PartCover\\coverage.xml\" " +
"--include [MyTests]* " + "--include [MyTests]* " +
"--include [MoreTests]* " + "--include [MoreTests]* " +

10
src/AddIns/Analysis/UnitTesting/Src/NUnitConsoleCommandLine.cs → src/AddIns/Analysis/UnitTesting/Src/NUnitConsoleApplication.cs

@ -51,6 +51,7 @@ namespace ICSharpCode.UnitTesting
NoDots = options.NoDots; NoDots = options.NoDots;
Labels = options.Labels; Labels = options.Labels;
ShadowCopy = !options.NoShadow; ShadowCopy = !options.NoShadow;
NoXmlOutputFile = !options.CreateXmlOutputFile;
if (options.CreateXmlOutputFile) { if (options.CreateXmlOutputFile) {
GenerateXmlOutputFileName(); GenerateXmlOutputFileName();
@ -121,6 +122,11 @@ namespace ICSharpCode.UnitTesting
/// </summary> /// </summary>
public string XmlOutputFile; public string XmlOutputFile;
/// <summary>
/// Use /noxml.
/// </summary>
public bool NoXmlOutputFile = true;
/// <summary> /// <summary>
/// Fixture to test. Null = test all fixtures. /// Fixture to test. Null = test all fixtures.
/// </summary> /// </summary>
@ -195,7 +201,9 @@ namespace ICSharpCode.UnitTesting
b.Append(" /labels"); b.Append(" /labels");
if (NoDots) if (NoDots)
b.Append(" /nodots"); b.Append(" /nodots");
if (XmlOutputFile != null) { if (NoXmlOutputFile) {
b.Append(" /noxml");
} else if (XmlOutputFile != null) {
b.Append(" /xml=\""); b.Append(" /xml=\"");
b.Append(XmlOutputFile); b.Append(XmlOutputFile);
b.Append('"'); b.Append('"');

29
src/AddIns/Analysis/UnitTesting/Test/Frameworks/NUnitConsoleCommandLineTests.cs

@ -32,6 +32,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoXmlOutputFile = false;
app.Results = @"C:\results.txt"; app.Results = @"C:\results.txt";
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /results=\"C:\\results.txt\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /results=\"C:\\results.txt\"";
@ -45,6 +46,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = true; app.NoLogo = true;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /nologo"; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /nologo";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -57,6 +59,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = false; app.ShadowCopy = false;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /noshadow"; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /noshadow";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -70,6 +73,7 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoThread = true; app.NoThread = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /nothread"; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /nothread";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -83,6 +87,7 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoDots = true; app.NoDots = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /nodots"; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /nodots";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -96,6 +101,7 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.Labels = true; app.Labels = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /labels"; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /labels";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -109,6 +115,7 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.Fixture = "TestFixture"; app.Fixture = "TestFixture";
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture\"";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -122,6 +129,7 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NamespaceFilter = "TestFixture"; app.NamespaceFilter = "TestFixture";
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture\"";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -135,11 +143,26 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.XmlOutputFile = @"C:\NUnit.xml"; app.XmlOutputFile = @"C:\NUnit.xml";
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /xml=\"C:\\NUnit.xml\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /xml=\"C:\\NUnit.xml\"";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
} }
[Test]
public void NoXmlWhenXmlOutputFileSpecified()
{
SelectedTests selectedTests = new SelectedTests(project);
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = false;
app.ShadowCopy = true;
app.XmlOutputFile = @"C:\NUnit.xml";
app.NoXmlOutputFile = true;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /noxml";
Assert.AreEqual(expectedCommandLine, app.GetArguments());
}
[Test] [Test]
public void TestMethod() public void TestMethod()
{ {
@ -149,6 +172,7 @@ namespace UnitTesting.Tests.Frameworks
app.ShadowCopy = true; app.ShadowCopy = true;
app.Fixture = "TestFixture"; app.Fixture = "TestFixture";
app.Test = "Test"; app.Test = "Test";
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture.Test\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture.Test\"";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -163,6 +187,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture.Test\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"TestFixture.Test\"";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -175,6 +200,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"Project.MyTests\""; string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" /run=\"Project.MyTests\"";
Assert.AreEqual(expectedCommandLine, app.GetArguments()); Assert.AreEqual(expectedCommandLine, app.GetArguments());
@ -187,6 +213,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = true; app.NoLogo = true;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoXmlOutputFile = false;
FileUtility.ApplicationRootPath = @"C:\SharpDevelop"; FileUtility.ApplicationRootPath = @"C:\SharpDevelop";
@ -211,6 +238,7 @@ namespace UnitTesting.Tests.Frameworks
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.Results = @"C:\results.txt"; app.Results = @"C:\results.txt";
app.NoXmlOutputFile = false;
string expectedCommandLine = string expectedCommandLine =
"\"C:\\Projects\\MyTests\\MyTests.dll\" " + "\"C:\\Projects\\MyTests\\MyTests.dll\" " +
@ -235,6 +263,7 @@ namespace UnitTesting.Tests.Frameworks
NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests); NUnitConsoleApplication app = new NUnitConsoleApplication(selectedTests);
app.NoLogo = false; app.NoLogo = false;
app.ShadowCopy = true; app.ShadowCopy = true;
app.NoXmlOutputFile = false;
string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" " + string expectedCommandLine = "\"C:\\Projects\\MyTests\\MyTests.dll\" " +
"/run=\"MyTests.TestFixture+InnerTest\""; "/run=\"MyTests.TestFixture+InnerTest\"";

2
src/AddIns/Analysis/UnitTesting/Test/Frameworks/NUnitConsoleProcessStartInfoTestFixture.cs

@ -50,7 +50,7 @@ namespace UnitTesting.Tests.Frameworks
public void CommandLineArgumentsAreNUnitConsoleExeCommandLineArguments() public void CommandLineArgumentsAreNUnitConsoleExeCommandLineArguments()
{ {
string expectedCommandLine = string expectedCommandLine =
"\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\""; "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" /noxml";
Assert.AreEqual(expectedCommandLine, info.Arguments); Assert.AreEqual(expectedCommandLine, info.Arguments);
} }

2
src/AddIns/Analysis/UnitTesting/Test/Tree/RunNUnitTestsForMethodTestFixture.cs

@ -173,7 +173,7 @@ namespace UnitTesting.Tests.Tree
StartNUnitTestRunner(); StartNUnitTestRunner();
string expectedArgs = string expectedArgs =
"\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" " + "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" /noxml " +
"/results=\"c:\\temp\\tmp66.tmp\" " + "/results=\"c:\\temp\\tmp66.tmp\" " +
"/run=\"MyTests.MyTestClass.MyTestMethod\""; "/run=\"MyTests.MyTestClass.MyTestMethod\"";
Assert.AreEqual(expectedArgs, context.MockProcessRunner.CommandArgumentsPassedToStartMethod); Assert.AreEqual(expectedArgs, context.MockProcessRunner.CommandArgumentsPassedToStartMethod);

4
src/AddIns/Analysis/UnitTesting/Test/Tree/RunNUnitTestsWithDebuggerTestFixture.cs

@ -57,7 +57,7 @@ namespace UnitTesting.Tests.Tree
StartTestDebugger(); StartTestDebugger();
string expectedArguments = string expectedArguments =
"\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" " + "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" " +
"/noshadow " + "/noshadow /noxml " +
"/results=\"c:\\temp\\tmp66.tmp\" " + "/results=\"c:\\temp\\tmp66.tmp\" " +
"/run=\"MyTests.MyTestClass.MyTestMethod\""; "/run=\"MyTests.MyTestClass.MyTestMethod\"";
@ -167,7 +167,7 @@ namespace UnitTesting.Tests.Tree
string commandLine = "\"C:\\SharpDevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " + string commandLine = "\"C:\\SharpDevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" " + "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" " +
"/noshadow " + "/noshadow /noxml " +
"/results=\"c:\\temp\\tmp66.tmp\" " + "/results=\"c:\\temp\\tmp66.tmp\" " +
"/run=\"MyTests.MyTestClass.MyTestMethod\""; "/run=\"MyTests.MyTestClass.MyTestMethod\"";
Assert.AreEqual(commandLine, message); Assert.AreEqual(commandLine, message);

2
src/AddIns/Analysis/UnitTesting/Test/Tree/RunTestInPadCommandTestFixture.cs

@ -79,7 +79,7 @@ namespace UnitTesting.Tests.Tree
{ {
runCommand.Run(); runCommand.Run();
buildProject.FireBuildCompleteEvent(); buildProject.FireBuildCompleteEvent();
string expectedArgs = "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\""; string expectedArgs = "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" /noxml";
Assert.AreEqual(expectedArgs, processRunner.CommandArgumentsPassedToStartMethod); Assert.AreEqual(expectedArgs, processRunner.CommandArgumentsPassedToStartMethod);
} }

4
src/AddIns/Analysis/UnitTesting/Test/Tree/RunTestWithDebuggerCommandTestFixture.cs

@ -34,7 +34,7 @@ namespace UnitTesting.Tests.Tree
public void DebuggerStartsUnitTestApplicationWithCorrectCommandLineArguments() public void DebuggerStartsUnitTestApplicationWithCorrectCommandLineArguments()
{ {
string expectedArguments = string expectedArguments =
"\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\""; "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" /noxml";
string actualArguments = debuggerService.MockDebugger.ProcessStartInfo.Arguments; string actualArguments = debuggerService.MockDebugger.ProcessStartInfo.Arguments;
Assert.AreEqual(expectedArguments, actualArguments); Assert.AreEqual(expectedArguments, actualArguments);
@ -54,7 +54,7 @@ namespace UnitTesting.Tests.Tree
{ {
string expectedText = string expectedText =
"\"D:\\SharpDevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " + "\"D:\\SharpDevelop\\bin\\Tools\\NUnit\\nunit-console-x86.exe\" " +
"\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\"\r\n"; "\"c:\\projects\\MyTests\\bin\\Debug\\MyTests.dll\" /noxml\r\n";
string actualText = context.UnitTestCategory.Text; string actualText = context.UnitTestCategory.Text;
Assert.AreEqual(expectedText, actualText); Assert.AreEqual(expectedText, actualText);

1
src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs

@ -21,6 +21,7 @@ namespace UnitTesting.Tests.Utils
: base(new ProjectCreateInformation { : base(new ProjectCreateInformation {
Solution = solution, Solution = solution,
ProjectName = name, ProjectName = name,
Platform = "x86",
TargetFramework = TargetFramework.Net40Client, TargetFramework = TargetFramework.Net40Client,
OutputProjectFileName = "c:\\projects\\" + name + "\\" + name + ".csproj" OutputProjectFileName = "c:\\projects\\" + name + "\\" + name + ".csproj"
}) })

2
src/AddIns/Analysis/UnitTesting/UnitTesting.csproj

@ -126,7 +126,7 @@
<Compile Include="Src\TestTreeView.cs"> <Compile Include="Src\TestTreeView.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
<Compile Include="Src\NUnitConsoleCommandLine.cs" /> <Compile Include="Src\NUnitConsoleApplication.cs" />
<Compile Include="Src\AbstractRunTestCommand.cs" /> <Compile Include="Src\AbstractRunTestCommand.cs" />
<Compile Include="Configuration\AssemblyInfo.cs" /> <Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="..\..\..\Main\GlobalAssemblyInfo.cs"> <Compile Include="..\..\..\Main\GlobalAssemblyInfo.cs">

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj

@ -231,7 +231,6 @@
<Compile Include="Src\SelectedMvcFolder.cs" /> <Compile Include="Src\SelectedMvcFolder.cs" />
<Compile Include="Src\SelectedMvcViewFolder.cs" /> <Compile Include="Src\SelectedMvcViewFolder.cs" />
<Compile Include="Src\SlideBehaviour.cs" /> <Compile Include="Src\SlideBehaviour.cs" />
<Compile Include="Src\ViewInBrowser.cs" />
<Compile Include="Src\ViewModelBase.cs" /> <Compile Include="Src\ViewModelBase.cs" />
<Compile Include="Src\VisualStudioProjectExtension.cs" /> <Compile Include="Src\VisualStudioProjectExtension.cs" />
<Compile Include="Src\WebBehavior.cs" /> <Compile Include="Src\WebBehavior.cs" />

77
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/ViewInBrowser.cs

@ -1,77 +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.IO;
//using System.Linq;
//
//using ICSharpCode.Core;
//using ICSharpCode.SharpDevelop.Gui.OptionPanels;
//using ICSharpCode.SharpDevelop.Project;
//using ICSharpCode.SharpDevelop.Project.Commands;
//
//namespace ICSharpCode.AspNet.Mvc
//{
// public class ViewInBrowser : AbstractMenuCommand
// {
// public override void Run()
// {
// var node = ProjectBrowserPad.Instance.SelectedNode as FileNode;
// if (node == null) {
// return;
// }
//
// var project = ProjectService.CurrentProject as CompilableProject;
// if (project == null) {
// return;
// }
//
// if (!project.IsWebProject) {
// MessageService.ShowError("${res:ProjectComponent.ContextMenu.NotAWebProject}");
// return;
// }
//
// if (!WebProjectService.IsIISOrIISExpressInstalled) {
// MessageService.ShowError("${res:ICSharpCode.WebProjectOptionsPanel.IISNotFound}");
// return;
// }
//
// string fileName = node.FileName;
//
//// // set project options
//// project.StartAction = StartAction.StartURL;
//// string directoryName = Path.GetDirectoryName(project.FileName) + "\\";
//// project.StartUrl = fileName.Replace(directoryName, "/").Replace("\\", "/");
//
// // set web server options
// string projectName = project.Name;
// WebProjectOptions existingOptions = WebProjectsOptions.Instance.GetWebProjectOptions(projectName);
//
// var options = new WebProjectOptions {
// Data = new WebProjectDebugData {
// WebServer = WebProjectService.IsIISExpressInstalled ? WebServer.IISExpress : WebServer.IIS,
// Port = (existingOptions != null && existingOptions.Data != null) ? existingOptions.Data.Port : "8080", //TODO: port collision detection
// ProjectUrl = string.Format("{0}/{1}", WebBehavior.LocalHost, project.Name)
// },
// ProjectName = projectName
// };
//
// if (options.Data.WebServer == WebServer.IISExpress) {
// options.Data.ProjectUrl = string.Format(
// @"{0}:{1}/{2}", WebBehavior.LocalHost, options.Data.Port, projectName);
// }
//
// WebProjectsOptions.Instance.SetWebProjectOptions(projectName, options);
//
// // create virtual directory
// string error = WebProjectService.CreateVirtualDirectory(
// options.Data.WebServer,
// projectName,
// Path.GetDirectoryName(ProjectService.CurrentProject.FileName));
// LoggingService.Info(error ?? string.Empty);
//
// // RunProject
// new RunProject().Run();
// }
// }
//}

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

@ -46,8 +46,7 @@ namespace CSharpBinding
Init(); Init();
} }
public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.CSharp.Targets"; public const string DefaultTargetsFile = @"$(MSBuildToolsPath)\Microsoft.CSharp.targets";
public const string ExtendedTargetsFile = @"$(SharpDevelopBinPath)\SharpDevelop.Build.CSharp.targets";
public CSharpProject(ProjectCreateInformation info) public CSharpProject(ProjectCreateInformation info)
: base(info) : base(info)
@ -80,13 +79,35 @@ namespace CSharpBinding
} }
} }
protected override ProjectBehavior CreateDefaultBehavior()
{
return new CSharpProjectBehavior(this, base.CreateDefaultBehavior());
}
}
public class CSharpProjectBehavior : ProjectBehavior
{
public CSharpProjectBehavior(CSharpProject project, ProjectBehavior next = null)
: base(project, next)
{
}
public override ItemType GetDefaultItemType(string fileName)
{
if (string.Equals(Path.GetExtension(fileName), ".cs", StringComparison.OrdinalIgnoreCase))
return ItemType.Compile;
else
return base.GetDefaultItemType(fileName);
}
static readonly CompilerVersion msbuild20 = new CompilerVersion(new Version(2, 0), "C# 2.0"); static readonly CompilerVersion msbuild20 = new CompilerVersion(new Version(2, 0), "C# 2.0");
static readonly CompilerVersion msbuild35 = new CompilerVersion(new Version(3, 5), "C# 3.0"); static readonly CompilerVersion msbuild35 = new CompilerVersion(new Version(3, 5), "C# 3.0");
static readonly CompilerVersion msbuild40 = new CompilerVersion(new Version(4, 0), DotnetDetection.IsDotnet45Installed() ? "C# 5.0" : "C# 4.0"); static readonly CompilerVersion msbuild40 = new CompilerVersion(new Version(4, 0), DotnetDetection.IsDotnet45Installed() ? "C# 5.0" : "C# 4.0");
public override CompilerVersion CurrentCompilerVersion { public override CompilerVersion CurrentCompilerVersion {
get { get {
switch (MinimumSolutionVersion) { switch (Project.MinimumSolutionVersion) {
case Solution.SolutionVersionVS2005: case Solution.SolutionVersionVS2005:
return msbuild20; return msbuild20;
case Solution.SolutionVersionVS2008: case Solution.SolutionVersionVS2008:
@ -110,65 +131,5 @@ namespace CSharpBinding
versions.Add(msbuild40); versions.Add(msbuild40);
return versions; return versions;
} }
/*
protected override void AddOrRemoveExtensions()
{
// Test if SharpDevelop-Build extensions are required
bool needExtensions = false;
foreach (var p in GetAllProperties("TargetFrameworkVersion")) {
if (p.IsImported == false) {
if (p.Value.StartsWith("CF")) {
needExtensions = true;
}
}
}
foreach (Microsoft.Build.BuildEngine.Import import in MSBuildProject.Imports) {
if (needExtensions) {
if (DefaultTargetsFile.Equals(import.ProjectPath, StringComparison.OrdinalIgnoreCase)) {
//import.ProjectPath = extendedTargets;
MSBuildInternals.SetImportProjectPath(this, import, ExtendedTargetsFile);
// Workaround for SD2-1490. It would be better if the project browser could refresh itself
// when necessary.
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
break;
}
} else {
if (ExtendedTargetsFile.Equals(import.ProjectPath, StringComparison.OrdinalIgnoreCase)) {
//import.ProjectPath = defaultTargets;
MSBuildInternals.SetImportProjectPath(this, import, DefaultTargetsFile);
// Workaround for SD2-1490. It would be better if the project browser could refresh itself
// when necessary.
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
break;
}
}
}
}
*/
protected override ProjectBehavior CreateDefaultBehavior()
{
return new CSharpProjectBehavior(this, base.CreateDefaultBehavior());
}
}
public class CSharpProjectBehavior : ProjectBehavior
{
public CSharpProjectBehavior(CSharpProject project, ProjectBehavior next = null)
: base(project, next)
{
}
public override ItemType GetDefaultItemType(string fileName)
{
if (string.Equals(Path.GetExtension(fileName), ".cs", StringComparison.OrdinalIgnoreCase))
return ItemType.Compile;
else
return base.GetDefaultItemType(fileName);
}
} }
} }

2
src/AddIns/BackendBindings/CSharpBinding/Tests/MockTextEditor.cs

@ -31,7 +31,7 @@ namespace CSharpBinding.Tests
pc = new DefaultProjectContent(); pc = new DefaultProjectContent();
pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib); pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor)); // this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor));
this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#"); this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#");
} }

2
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonComponentWalker.cs

@ -165,7 +165,7 @@ namespace ICSharpCode.PythonBinding
MemberExpression eventExpression = node.Left as MemberExpression; MemberExpression eventExpression = node.Left as MemberExpression;
string eventName = eventExpression.Name.ToString(); string eventName = eventExpression.Name.ToString();
PythonControlFieldExpression field = PythonControlFieldExpression.Create(eventExpression); fieldExpression = PythonControlFieldExpression.Create(eventExpression);
MemberExpression eventHandlerExpression = node.Right as MemberExpression; MemberExpression eventHandlerExpression = node.Right as MemberExpression;
string eventHandlerName = eventHandlerExpression.Name.ToString(); string eventHandlerName = eventHandlerExpression.Name.ToString();

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

@ -4,6 +4,8 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PythonBinding namespace ICSharpCode.PythonBinding
@ -118,7 +120,7 @@ namespace ICSharpCode.PythonBinding
public bool PartialNamespaceExistsInProjectReferences(string name) public bool PartialNamespaceExistsInProjectReferences(string name)
{ {
foreach (IProjectContent referencedContent in projectContent.ReferencedContents) { foreach (IProjectContent referencedContent in projectContent.ThreadSafeGetReferencedContents()) {
if (PartialNamespaceExists(referencedContent, name)) { if (PartialNamespaceExists(referencedContent, name)) {
return true; return true;
} }

108
src/AddIns/BackendBindings/Python/PythonBinding/Test/Designer/LoadFormWithButtonFollowedByTimerTestFixture.cs

@ -0,0 +1,108 @@
// 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.ComponentModel;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using ICSharpCode.PythonBinding;
using ICSharpCode.Scripting.Tests.Utils;
using NUnit.Framework;
using PythonBinding.Tests.Utils;
namespace PythonBinding.Tests.Designer
{
/// <summary>
/// Fix ArgumentNullException when form has a button followed by a timer and the
/// first timer statement is the setting of the event handler.
/// </summary>
[TestFixture]
public class LoadFormWithButtonFollowedByTimerTestFixture : LoadFormTestFixtureBase
{
MockPropertyDescriptor mockTickPropertyDescriptor;
public override string PythonCode {
get {
return
"import System.Drawing\r\n" +
"import System.Windows.Forms\r\n" +
"\r\n" +
"from System.Drawing import *\r\n" +
"from System.Windows.Forms import *\r\n" +
"\r\n" +
"class MainForm(Form):\r\n" +
" def __init__(self):\r\n" +
" self.InitializeComponent()\r\n" +
"\r\n" +
" def InitializeComponent(self):\r\n" +
" self._components = System.ComponentModel.Container()\r\n" +
" self._button1 = System.Windows.Forms.Button()\r\n" +
" self._timer1 = System.Windows.Forms.Timer(self._components)\r\n" +
" self.SuspendLayout()\r\n" +
" # \r\n" +
" # button1\r\n" +
" # \r\n" +
" self._button1.Location = System.Drawing.Point(37, 29)\r\n" +
" self._button1.Name = \"button1\"\r\n" +
" self._button1.Size = System.Drawing.Size(75, 23)\r\n" +
" self._button1.TabIndex = 0\r\n" +
" self._button1.Text = \"button1\"\r\n" +
" self._button1.UseVisualStyleBackColor = True\r\n" +
" # \r\n" +
" # timer1\r\n" +
" # \r\n" +
" self._timer1.Tick += self.Timer1Tick\r\n" +
" # \r\n" +
" # MainForm\r\n" +
" # \r\n" +
" self.ClientSize = System.Drawing.Size(284, 264)\r\n" +
" self.Controls.Add(self._button1)\r\n" +
" self.Name = \"MainForm\"\r\n" +
" self.Text = \"PyWinTest\"\r\n" +
" self.ResumeLayout(False)\r\n" +
"\r\n" +
"\r\n" +
" def Timer1Tick(self, sender, e):\r\n" +
" pass";
}
}
public override void BeforeSetUpFixture()
{
mockTickPropertyDescriptor = new MockPropertyDescriptor("Tick", null, false);
ComponentCreator.SetEventPropertyDescriptor(mockTickPropertyDescriptor);
}
[Test]
public void EventDescriptorUsedToGetEventProperty()
{
Assert.IsNotNull(ComponentCreator.EventDescriptorPassedToGetEventProperty);
}
[Test]
public void EventDescriptorNameUsedToGetEventPropertyIsTick()
{
Assert.AreEqual("Tick", ComponentCreator.EventDescriptorPassedToGetEventProperty.Name);
}
[Test]
public void GetPropertyValueSetForTimer()
{
string value = mockTickPropertyDescriptor.GetValue(null) as String;
Assert.AreEqual("Timer1Tick", value);
}
[Test]
public void GetComponentUsedWhenSettingTickHandler()
{
IComponent expectedComponent = ComponentCreator.GetComponent("timer1");
object component = mockTickPropertyDescriptor.GetSetValueComponent();
Assert.AreEqual(expectedComponent, component);
}
}
}

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

@ -265,6 +265,7 @@
<Compile Include="Designer\LoadFontTestFixture.cs" /> <Compile Include="Designer\LoadFontTestFixture.cs" />
<Compile Include="Designer\LoadFormTestFixtureBase.cs" /> <Compile Include="Designer\LoadFormTestFixtureBase.cs" />
<Compile Include="Designer\LoadFormWithBooleanPropertiesSetTestFixture.cs" /> <Compile Include="Designer\LoadFormWithBooleanPropertiesSetTestFixture.cs" />
<Compile Include="Designer\LoadFormWithButtonFollowedByTimerTestFixture.cs" />
<Compile Include="Designer\LoadFormWithSysPathAppendStatementTestFixture.cs" /> <Compile Include="Designer\LoadFormWithSysPathAppendStatementTestFixture.cs" />
<Compile Include="Designer\LoadInheritedProtectedPanelFormTestFixture.cs" /> <Compile Include="Designer\LoadInheritedProtectedPanelFormTestFixture.cs" />
<Compile Include="Designer\LoadInheritedPublicPanelFormTestFixture.cs" /> <Compile Include="Designer\LoadInheritedPublicPanelFormTestFixture.cs" />

48
src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs

@ -143,7 +143,7 @@ namespace ICSharpCode.VBNetBinding
InsertDocumentationComments(editor, lineNr, cursorOffset); InsertDocumentationComments(editor, lineNr, cursorOffset);
} }
if (ch == '\n' && lineAboveText != null) { if (ch == '\n' && lineAbove != null) {
if (LanguageUtils.IsInsideDocumentationComment(editor, lineAbove, lineAbove.EndOffset)) { if (LanguageUtils.IsInsideDocumentationComment(editor, lineAbove, lineAbove.EndOffset)) {
editor.Document.Insert(cursorOffset, "''' "); editor.Document.Insert(cursorOffset, "''' ");
return; return;
@ -410,7 +410,7 @@ namespace ICSharpCode.VBNetBinding
while ((currentToken = lexer.NextToken()).Kind != Tokens.EOF) { while ((currentToken = lexer.NextToken()).Kind != Tokens.EOF) {
if (prevToken == null) if (prevToken == null)
prevToken = currentToken; prevToken = currentToken;
if (IsBlockStart(lexer, currentToken, prevToken)) { if (IsBlockStart(lexer, currentToken, prevToken) && !IsAutomaticPropertyWithDefaultValue(lexer, currentToken, prevToken)) {
if ((tokens.Count > 0 && tokens.Peek().Kind != Tokens.Interface) || IsDeclaration(currentToken.Kind)) if ((tokens.Count > 0 && tokens.Peek().Kind != Tokens.Interface) || IsDeclaration(currentToken.Kind))
tokens.Push(currentToken); tokens.Push(currentToken);
} }
@ -438,6 +438,30 @@ namespace ICSharpCode.VBNetBinding
return false; return false;
} }
static bool IsAutomaticPropertyWithDefaultValue(ILexer lexer, Token currentToken, Token prevToken)
{
if (currentToken.Kind != Tokens.Property)
return false;
lexer.StartPeek();
int parenthesesNesting = 0;
// look for parameter list, = or EOL
Token t;
while ((t = lexer.Peek()).Kind != Tokens.EOF) {
if (t.Kind == Tokens.OpenParenthesis)
parenthesesNesting++;
if (t.Kind == Tokens.CloseParenthesis)
parenthesesNesting--;
if (parenthesesNesting == 0 && t.Kind == Tokens.Assign)
return true;
if (t.Kind == Tokens.EOL)
return false;
}
return false;
}
static Token GetClosestMissing(List<Token> missingEnds, VBStatement statement, ITextEditor editor, int lineNr) static Token GetClosestMissing(List<Token> missingEnds, VBStatement statement, ITextEditor editor, int lineNr)
{ {
Token closest = null; Token closest = null;
@ -612,7 +636,7 @@ namespace ICSharpCode.VBNetBinding
Indent(editor, indentation, new string(' ', endColumn - startColumn - 1)); Indent(editor, indentation, new string(' ', endColumn - startColumn - 1));
} }
if (!inInterface && !isMustOverride && !isDeclare && !isDelegate) { if (!inInterface && !isMustOverride && !isDeclare && !isDelegate && !IsAutomaticPropertyWithDefaultValue(lexer, currentToken, prevToken)) {
Indent(editor, indentation); Indent(editor, indentation);
if (currentToken.Kind == Tokens.Select) if (currentToken.Kind == Tokens.Select)
@ -808,22 +832,14 @@ namespace ICSharpCode.VBNetBinding
internal static bool IsBlockEnd(Token current, Token prev) internal static bool IsBlockEnd(Token current, Token prev)
{ {
if (current.Kind == Tokens.Next) { if (current.Kind == Tokens.Next)
if (prev.Kind == Tokens.Resume) return prev.Kind == Tokens.EOL || prev.Kind == Tokens.Colon;
return false;
else
return true;
}
if (current.Kind == Tokens.Loop) if (current.Kind == Tokens.Loop)
return true; return prev.Kind == Tokens.EOL || prev.Kind == Tokens.Colon;
if (blockTokens.Contains(current.Kind)) { if (blockTokens.Contains(current.Kind))
if (prev.Kind == Tokens.End) return prev.Kind == Tokens.End;
return true;
else
return false;
}
return IsSpecialCase(current, prev); return IsSpecialCase(current, prev);
} }

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/OptionPanels/ProjectImports.cs

@ -35,7 +35,7 @@ namespace ICSharpCode.VBNetBinding.OptionPanels
} }
IProjectContent projectContent = ParserService.GetProjectContent(project); IProjectContent projectContent = ParserService.GetProjectContent(project);
foreach(IProjectContent refProjectContent in projectContent.ReferencedContents) { foreach(IProjectContent refProjectContent in projectContent.ThreadSafeGetReferencedContents()) {
AddNamespaces(refProjectContent); AddNamespaces(refProjectContent);
} }

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

@ -49,8 +49,7 @@ namespace ICSharpCode.VBNetBinding
InitVB(); InitVB();
} }
public const string DefaultTargetsFile = @"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets"; public const string DefaultTargetsFile = @"$(MSBuildToolsPath)\Microsoft.VisualBasic.targets";
public const string ExtendedTargetsFile = @"$(SharpDevelopBinPath)\SharpDevelop.Build.VisualBasic.targets";
public VBNetProject(ProjectCreateInformation info) public VBNetProject(ProjectCreateInformation info)
: base(info) : base(info)
@ -108,43 +107,6 @@ namespace ICSharpCode.VBNetBinding
} }
} }
/*
protected override void AddOrRemoveExtensions()
{
// Test if SharpDevelop-Build extensions are required
bool needExtensions = false;
foreach (var p in GetAllProperties("TargetFrameworkVersion")) {
if (p.IsImported == false) {
if (p.Value.StartsWith("CF")) {
needExtensions = true;
}
}
}
foreach (Microsoft.Build.BuildEngine.Import import in MSBuildProject.Imports) {
if (needExtensions) {
if (DefaultTargetsFile.Equals(import.ProjectPath, StringComparison.OrdinalIgnoreCase)) {
//import.ProjectPath = extendedTargets;
MSBuildInternals.SetImportProjectPath(this, import, ExtendedTargetsFile);
// Workaround for SD2-1490. It would be better if the project browser could refresh itself
// when necessary.
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
break;
}
} else {
if (ExtendedTargetsFile.Equals(import.ProjectPath, StringComparison.OrdinalIgnoreCase)) {
//import.ProjectPath = defaultTargets;
MSBuildInternals.SetImportProjectPath(this, import, DefaultTargetsFile);
// Workaround for SD2-1490. It would be better if the project browser could refresh itself
// when necessary.
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
break;
}
}
}
}*/
public Nullable<bool> OptionInfer { public Nullable<bool> OptionInfer {
get { return GetValue("OptionInfer", false); } get { return GetValue("OptionInfer", false); }
} }

47
src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/EndSubTests.cs

@ -173,5 +173,52 @@ namespace ICSharpCode.VBNetBinding.Tests
RunTest(code, cursorOffset, expectedCode, expectedOffset, '\n'); RunTest(code, cursorOffset, expectedCode, expectedOffset, '\n');
} }
[Test]
public void AutomaticPropertyWithInitializer()
{
string code = "Public Class Foo\r\n" +
"\tPublic Property Bar As Boolean = True\r\n" +
"\r\n" + // This extra new line is required. This is the new line just entered by the user.
"End Class";
string bar = "= True\r\n";
int cursorOffset = code.IndexOf(bar) + bar.Length;
string expectedCode = "Public Class Foo\r\n" +
"\tPublic Property Bar As Boolean = True\r\n" +
"\t\r\n" +
"End Class";
int expectedOffset = ("Public Class Foo\r\n" +
"\tPublic Property Bar As Boolean = True\r\n" +
"\t").Length;
RunTest(code, cursorOffset, expectedCode, expectedOffset, '\n');
}
[Test]
public void StandardProperty()
{
string code = "Public Class Foo\r\n" +
"\tPublic Property Bar As Boolean\r\n" +
"\r\n" + // This extra new line is required. This is the new line just entered by the user.
"End Class";
string bar = "As Boolean\r\n";
int cursorOffset = code.IndexOf(bar) + bar.Length;
string expectedCode = "Public Class Foo\r\n" +
"\tPublic Property Bar As Boolean\r\n" +
"\t\t\r\n" +
"\tEnd Property\r\n" +
"End Class";
int expectedOffset = ("Public Class Foo\r\n" +
"\tPublic Property Bar As Boolean\r\n" +
"\t\t").Length;
RunTest(code, cursorOffset, expectedCode, expectedOffset, '\n');
}
} }
} }

48
src/AddIns/BackendBindings/VBNetBinding/Test/FormattingStrategy/IndentationTests.cs

@ -524,6 +524,54 @@ End Module";
RunFormatTest(code, expected); RunFormatTest(code, expected);
} }
[Test]
public void ForNextOneLine()
{
string expected = @"Module Core
Sub Main
Dim a = 1
For i = 0 To 10 : Console.WriteLine(i) : Next
Dim b = 2
End Sub
End Module";
string code = @"Module Core
Sub Main
Dim a = 1
For i = 0 To 10 : Console.WriteLine(i) : Next
Dim b = 2
End Sub
End Module";
RunFormatTest(code, expected);
}
[Test]
public void RandomNext()
{
string expected = @"Module Core
Public Function GetRandomNumber( _
Optional ByVal Low As Integer = 1, _
Optional ByVal High As Integer = 100) As Integer
' Returns a random number,
' between the optional Low and High parameters
Return objRandom.Next(Low, High + 1)
End Function
End Module";
string code = @"Module Core
Public Function GetRandomNumber( _
Optional ByVal Low As Integer = 1, _
Optional ByVal High As Integer = 100) As Integer
' Returns a random number,
' between the optional Low and High parameters
Return objRandom.Next(Low, High + 1)
End Function
End Module";
RunFormatTest(code, expected);
}
void RunFormatTest(string code, string expectedCode) void RunFormatTest(string code, string expectedCode)
{ {
AvalonEditTextEditorAdapter editor = new AvalonEditTextEditorAdapter(new TextEditor()); AvalonEditTextEditorAdapter editor = new AvalonEditTextEditorAdapter(new TextEditor());

2
src/AddIns/BackendBindings/VBNetBinding/Test/MockTextEditor.cs

@ -49,7 +49,7 @@ namespace ICSharpCode.VBNetBinding.Tests
} }
} }
this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor)); // this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor));
this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("VBNet"); this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("VBNet");
new VBNetLanguageBinding().Attach(this); new VBNetLanguageBinding().Attach(this);

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/MockTextEditor.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.XamlBinding.Tests
} }
} }
this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor)); // this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor));
this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("XML"); this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("XML");
new XamlLanguageBinding().Attach(this); new XamlLanguageBinding().Attach(this);

2
src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs

@ -311,7 +311,7 @@ namespace ICSharpCode.XamlBinding
{ {
List<XmlnsCompletionItem> list = new List<XmlnsCompletionItem>(); List<XmlnsCompletionItem> list = new List<XmlnsCompletionItem>();
foreach (IProjectContent content in projectContent.ReferencedContents) { foreach (IProjectContent content in projectContent.ThreadSafeGetReferencedContents()) {
foreach (IAttribute att in content.GetAssemblyAttributes()) { foreach (IAttribute att in content.GetAssemblyAttributes()) {
if (att.PositionalArguments.Count == 2 if (att.PositionalArguments.Count == 2
&& att.AttributeType.FullyQualifiedName == "System.Windows.Markup.XmlnsDefinitionAttribute") { && att.AttributeType.FullyQualifiedName == "System.Windows.Markup.XmlnsDefinitionAttribute") {

10
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlCompilationUnit.cs

@ -2,10 +2,12 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Linq;
using ICSharpCode.SharpDevelop.Dom;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.XamlBinding namespace ICSharpCode.XamlBinding
{ {
@ -81,7 +83,7 @@ namespace ICSharpCode.XamlBinding
IReturnType type = FindTypeInAssembly(pc, xmlNamespace, className); IReturnType type = FindTypeInAssembly(pc, xmlNamespace, className);
if (type != null) if (type != null)
return type; return type;
foreach (IProjectContent p in pc.ReferencedContents) { foreach (IProjectContent p in pc.ThreadSafeGetReferencedContents()) {
type = FindTypeInAssembly(p, xmlNamespace, className); type = FindTypeInAssembly(p, xmlNamespace, className);
if (type != null) if (type != null)
return type; return type;
@ -117,7 +119,7 @@ namespace ICSharpCode.XamlBinding
else { else {
var list = new List<ICompletionEntry>(); var list = new List<ICompletionEntry>();
AddNamespaceMembersInAssembly(pc, xmlNamespace, list); AddNamespaceMembersInAssembly(pc, xmlNamespace, list);
foreach (IProjectContent p in pc.ReferencedContents) { foreach (IProjectContent p in pc.ThreadSafeGetReferencedContents()) {
AddNamespaceMembersInAssembly(p, xmlNamespace, list); AddNamespaceMembersInAssembly(p, xmlNamespace, list);
} }
return list.OfType<IClass>(); return list.OfType<IClass>();

21
src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptions.cs

@ -40,5 +40,26 @@ namespace ICSharpCode.SharpDevelop.Services
// Properties for the DebuggeeExceptionForm // Properties for the DebuggeeExceptionForm
public FormWindowState DebuggeeExceptionWindowState { get; set; } public FormWindowState DebuggeeExceptionWindowState { get; set; }
/// <summary>
/// Used to update status of some debugger properties while debugger is running.
/// </summary>
internal static void ResetStatus(Action<Process> resetStatus)
{
Process proc = WindowsDebugger.CurrentProcess;
// debug session is running
if (proc != null) {
bool wasPausedNow = false;
// if it is not paused, break execution
if (!proc.IsPaused) {
proc.Break();
wasPausedNow = true;
}
resetStatus(proc);
// continue if it was not paused before
if (wasPausedNow)
proc.AsyncContinue();
}
}
} }
} }

14
src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptionsPanel.xaml.cs

@ -50,19 +50,7 @@ namespace Debugger.AddIn.Options
public override bool SaveOptions() public override bool SaveOptions()
{ {
bool result = base.SaveOptions(); bool result = base.SaveOptions();
Process proc = WindowsDebugger.CurrentProcess; DebuggingOptions.ResetStatus(proc => proc.Debugger.ResetJustMyCodeStatus());
// debug session is running
if (proc != null) {
bool wasPausedNow = false;
// if it is not paused, break execution
if (!proc.IsPaused) {
proc.Break();
wasPausedNow = true;
}
proc.Debugger.ResetJustMyCodeStatus();
// continue if it was not paused before
if (wasPausedNow) proc.AsyncContinue();
}
return result; return result;
} }
} }

10
src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingSymbolsPanel.cs

@ -30,11 +30,11 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
public override bool StorePanelContents() public override bool StorePanelContents()
{ {
DebuggingOptions.Instance.SymbolsSearchPaths = pathList.GetList(); DebuggingOptions.Instance.SymbolsSearchPaths = pathList.GetList();
Process proc = WindowsDebugger.CurrentProcess; DebuggingOptions.ResetStatus(
if (proc != null) { proc => {
proc.Debugger.ReloadModuleSymbols(); proc.Debugger.ReloadModuleSymbols();
proc.Debugger.ResetJustMyCodeStatus(); proc.Debugger.ResetJustMyCodeStatus();
} });
return true; return true;
} }
} }

4
src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingSymbolsPanel.resx

@ -112,9 +112,9 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
</root> </root>

7
src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs

@ -46,12 +46,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
this.tree.ShowRoot = false; this.tree.ShowRoot = false;
this.tree.View = (GridView)res["variableGridView"]; this.tree.View = (GridView)res["variableGridView"];
this.tree.ContextMenu = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu"); this.tree.ContextMenu = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu");
this.tree.KeyUp += delegate(object sender, KeyEventArgs e) {
if (e.Key == Key.Delete) {
RemoveWatchCommand cmd = new RemoveWatchCommand { Owner = this };
cmd.Run();
}
};
this.tree.MouseDoubleClick += delegate(object sender, MouseButtonEventArgs e) { this.tree.MouseDoubleClick += delegate(object sender, MouseButtonEventArgs e) {
if (this.tree.SelectedItem == null) { if (this.tree.SelectedItem == null) {
AddWatchCommand cmd = new AddWatchCommand { Owner = this }; AddWatchCommand cmd = new AddWatchCommand { Owner = this };
@ -103,6 +97,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
} catch (GetValueException e) { } catch (GetValueException e) {
node = new TreeNode("Icons.16x16.Error", name, e.Message, string.Empty, null); node = new TreeNode("Icons.16x16.Error", name, e.Message, string.Empty, null);
} }
node.CanDelete = true;
node.CanSetName = true; node.CanSetName = true;
node.PropertyChanged += (s, e) => { if (e.PropertyName == "Name") WindowsDebugger.RefreshPads(); }; node.PropertyChanged += (s, e) => { if (e.PropertyName == "Name") WindowsDebugger.RefreshPads(); };
return node.ToSharpTreeNode(); return node.ToSharpTreeNode();

10
src/AddIns/Debugger/Debugger.AddIn/TreeModel/SharpTreeNodeAdapter.cs

@ -35,6 +35,16 @@ namespace Debugger.AddIn.Pads.Controls
get { return this.Node.GetChildren != null; } get { return this.Node.GetChildren != null; }
} }
public override bool CanDelete()
{
return this.Node.CanDelete;
}
public override void Delete()
{
Parent.Children.Remove(this);
}
protected override void LoadChildren() protected override void LoadChildren()
{ {
if (this.Node.GetChildren != null) { if (this.Node.GetChildren != null) {

4
src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs

@ -25,7 +25,9 @@ namespace Debugger.AddIn.TreeModel
string name; string name;
string value; string value;
string type; string type;
public bool CanDelete { get; set; }
public IImage Image { public IImage Image {
get { get {
OnPropertyRead("Image"); OnPropertyRead("Image");

9
src/AddIns/Debugger/Debugger.Core/IDStringProvider.cs

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using Debugger.MetaData;
namespace Debugger namespace Debugger
{ {
@ -42,7 +43,11 @@ namespace Debugger
MethodInfo mr = (MethodInfo)member; MethodInfo mr = (MethodInfo)member;
if (mr.IsGenericMethod) { if (mr.IsGenericMethod) {
b.Append("``"); b.Append("``");
b.Append(mr.GetGenericArguments().Length); // DebugMethodInfo does not implement GetGenericArguments
if (mr is DebugMethodInfo)
b.Append(((DebugMethodInfo)mr).GenericParameterCount);
else
b.Append(mr.GetGenericArguments().Length);
} }
parameters = mr.GetParameters(); parameters = mr.GetParameters();
if (mr.Name == "op_Implicit" || mr.Name == "op_Explicit") { if (mr.Name == "op_Implicit" || mr.Name == "op_Explicit") {
@ -73,7 +78,7 @@ namespace Debugger
return; return;
} }
if (type.IsGenericType) { if (type.IsGenericType) {
AppendTypeNameWithArguments(b, type.GetElementType(), type.GetGenericArguments()); AppendTypeNameWithArguments(b, type, type.GetGenericArguments());
} else if (type.HasElementType) { } else if (type.HasElementType) {
AppendTypeName(b, type.GetElementType()); AppendTypeName(b, type.GetElementType());
if (type.IsArray) { if (type.IsArray) {

2
src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs

@ -447,7 +447,7 @@ namespace Debugger
public void ExitThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread) public void ExitThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread)
{ {
Thread thread = process.TryGetThread(pThread); Thread thread = process.GetThread(pThread);
// ICorDebugThread is still not dead and can be used for some operations // ICorDebugThread is still not dead and can be used for some operations
if (thread != null) { if (thread != null) {

7
src/AddIns/Debugger/Debugger.Core/MetaData/DebugMethodInfo.cs

@ -185,6 +185,13 @@ namespace Debugger.MetaData
get { return this.MethodDefSig.GenericParameterCount > 0; } get { return this.MethodDefSig.GenericParameterCount > 0; }
} }
/// <summary>
/// Gets the number of generic parameters on this method.
/// </summary>
public int GenericParameterCount {
get { return this.MethodDefSig.GenericParameterCount; }
}
/// <inheritdoc/> /// <inheritdoc/>
public override RuntimeMethodHandle MethodHandle { public override RuntimeMethodHandle MethodHandle {
get { throw new NotSupportedException(); } get { throw new NotSupportedException(); }

24
src/AddIns/Debugger/Debugger.Core/Process.cs

@ -191,7 +191,8 @@ namespace Debugger
throw new DebuggerException("Eval not found for given ICorDebugEval"); throw new DebuggerException("Eval not found for given ICorDebugEval");
} }
public Module GetModule(string filename) { public Module GetModule(string filename)
{
foreach(Module module in this.Modules) { foreach(Module module in this.Modules) {
if (module.Name == filename) { if (module.Name == filename) {
return module; return module;
@ -200,7 +201,8 @@ namespace Debugger
throw new DebuggerException("Module \"" + filename + "\" is not in collection"); throw new DebuggerException("Module \"" + filename + "\" is not in collection");
} }
internal Module GetModule(ICorDebugModule corModule) { internal Module GetModule(ICorDebugModule corModule)
{
foreach(Module module in this.Modules) { foreach(Module module in this.Modules) {
if (module.CorModule == corModule) { if (module.CorModule == corModule) {
return module; return module;
@ -209,22 +211,18 @@ namespace Debugger
throw new DebuggerException("Module is not in collection"); throw new DebuggerException("Module is not in collection");
} }
internal Thread GetThread(ICorDebugThread corThread) { internal Thread GetThread(ICorDebugThread corThread)
foreach(Thread thread in this.Threads) { {
if (thread.CorThread == corThread) {
return thread;
}
}
throw new DebuggerException("Thread is not in collection");
}
internal Thread TryGetThread(ICorDebugThread corThread) {
foreach(Thread thread in this.Threads) { foreach(Thread thread in this.Threads) {
if (thread.CorThread == corThread) { if (thread.CorThread == corThread) {
return thread; return thread;
} }
} }
return null; // Sometimes, the thread is not reported for some unkown reason
TraceMessage("Thread not found in collection");
Thread newThread = new Thread(this, corThread);
this.threads.Add(newThread);
return newThread;
} }
/// <summary> Read the specified amount of memory at the given memory address </summary> /// <summary> Read the specified amount of memory at the given memory address </summary>

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

@ -64,6 +64,9 @@
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="System.Xaml" /> <Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase"> <Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework> <RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference> </Reference>
@ -72,6 +75,7 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Src\AvalonEditSyntaxHighlighterAdapter.cs" />
<Compile Include="Src\DocumentSequence.cs" /> <Compile Include="Src\DocumentSequence.cs" />
<Compile Include="Src\Snippets\CodeSnippetComparer.cs" /> <Compile Include="Src\Snippets\CodeSnippetComparer.cs" />
<Compile Include="Src\Utils.cs" /> <Compile Include="Src\Utils.cs" />
@ -241,7 +245,6 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\MyersDiff" />
<Folder Include="Src\HiddenDefinition" /> <Folder Include="Src\HiddenDefinition" />
</ItemGroup> </ItemGroup>
</Project> </Project>

16
src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditSyntaxHighlighterAdapter.cs → src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditSyntaxHighlighterAdapter.cs

@ -3,12 +3,15 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Windows;
using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit namespace ICSharpCode.AvalonEdit.AddIn
{ {
public class AvalonEditSyntaxHighlighterAdapter : ISyntaxHighlighter public class AvalonEditSyntaxHighlighterAdapter : ISyntaxHighlighter
{ {
@ -35,5 +38,16 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit
return Enumerable.Empty<string>(); return Enumerable.Empty<string>();
} }
} }
public HighlightingColor GetNamedColor(string name)
{
TextEditor editor = textEditor.GetService(typeof(TextEditor)) as TextEditor;
if (editor == null)
return null;
var highlighting = editor.SyntaxHighlighting;
if (highlighting == null)
return null;
return CustomizableHighlightingColorizer.CustomizeColor(name, CustomizedHighlightingColor.FetchCustomizations(highlighting.Name));
}
} }
} }

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs

@ -275,7 +275,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
{ {
if (trackedFeature != null) if (trackedFeature != null)
trackedFeature.EndTracking(); trackedFeature.EndTracking();
this.PrimaryFile.IsDirtyChanged -= PrimaryFile_IsDirtyChanged; if (PrimaryFile != null)
this.PrimaryFile.IsDirtyChanged -= PrimaryFile_IsDirtyChanged;
base.Dispose(); base.Dispose();
BookmarksDetach(); BookmarksDetach();
codeEditor.Dispose(); codeEditor.Dispose();

38
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs

@ -39,11 +39,39 @@ namespace ICSharpCode.AvalonEdit.AddIn
{ {
if (!disposed) { if (!disposed) {
changeWatcher.ChangeOccurred -= ChangeOccurred; changeWatcher.ChangeOccurred -= ChangeOccurred;
changeWatcher.Dispose();
disposed = true; disposed = true;
} }
} }
#region Brushes
public static readonly DependencyProperty AddedLineBrushProperty =
DependencyProperty.Register("AddedLineBrush", typeof(Brush), typeof(ChangeMarkerMargin),
new FrameworkPropertyMetadata(Brushes.LightGreen));
public Brush AddedLineBrush {
get { return (Brush)GetValue(AddedLineBrushProperty); }
set { SetValue(AddedLineBrushProperty, value); }
}
public static readonly DependencyProperty ChangedLineBrushProperty =
DependencyProperty.Register("ChangedLineBrush", typeof(Brush), typeof(ChangeMarkerMargin),
new FrameworkPropertyMetadata(Brushes.LightBlue));
public Brush ChangedLineBrush {
get { return (Brush)GetValue(ChangedLineBrushProperty); }
set { SetValue(ChangedLineBrushProperty, value); }
}
public static readonly DependencyProperty UnsavedLineBrushProperty =
DependencyProperty.Register("UnsavedLineBrush", typeof(Brush), typeof(ChangeMarkerMargin),
new FrameworkPropertyMetadata(Brushes.Yellow));
public Brush UnsavedLineBrush {
get { return (Brush)GetValue(UnsavedLineBrushProperty); }
set { SetValue(UnsavedLineBrushProperty, value); }
}
#endregion
protected override void OnRender(DrawingContext drawingContext) protected override void OnRender(DrawingContext drawingContext)
{ {
Size renderSize = this.RenderSize; Size renderSize = this.RenderSize;
@ -53,7 +81,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
var zeroLineInfo = changeWatcher.GetChange(0); var zeroLineInfo = changeWatcher.GetChange(0);
foreach (VisualLine line in textView.VisualLines) { foreach (VisualLine line in textView.VisualLines) {
Rect rect = new Rect(0, line.VisualTop - textView.ScrollOffset.Y, 5, line.Height); Rect rect = new Rect(0, line.VisualTop - textView.ScrollOffset.Y - 1, 5, line.Height + 2);
LineChangeInfo info = changeWatcher.GetChange(line.FirstDocumentLine.LineNumber); LineChangeInfo info = changeWatcher.GetChange(line.FirstDocumentLine.LineNumber);
@ -65,14 +93,14 @@ namespace ICSharpCode.AvalonEdit.AddIn
case ChangeType.None: case ChangeType.None:
break; break;
case ChangeType.Added: case ChangeType.Added:
drawingContext.DrawRectangle(Brushes.LightGreen, null, rect); drawingContext.DrawRectangle(AddedLineBrush, null, rect);
break; break;
case ChangeType.Deleted: case ChangeType.Deleted:
case ChangeType.Modified: case ChangeType.Modified:
drawingContext.DrawRectangle(Brushes.LightBlue, null, rect); drawingContext.DrawRectangle(ChangedLineBrush, null, rect);
break; break;
case ChangeType.Unsaved: case ChangeType.Unsaved:
drawingContext.DrawRectangle(Brushes.Yellow, null, rect); drawingContext.DrawRectangle(UnsavedLineBrush, null, rect);
break; break;
default: default:
throw new Exception("Invalid value for ChangeType"); throw new Exception("Invalid value for ChangeType");

45
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -33,20 +33,11 @@ using ICSharpCode.SharpDevelop.Widgets.MyersDiff;
namespace ICSharpCode.AvalonEdit.AddIn namespace ICSharpCode.AvalonEdit.AddIn
{ {
public interface ICodeEditor
{
TextDocument Document { get; }
void Redraw(ISegment segment, DispatcherPriority priority);
event EventHandler DocumentChanged;
}
/// <summary> /// <summary>
/// Integrates AvalonEdit with SharpDevelop. /// Integrates AvalonEdit with SharpDevelop.
/// Also provides support for Split-View (showing two AvalonEdit instances using the same TextDocument) /// Also provides support for Split-View (showing two AvalonEdit instances using the same TextDocument)
/// </summary> /// </summary>
public class CodeEditor : Grid, IDisposable, ICodeEditor public class CodeEditor : Grid, IDisposable
{ {
const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu"; const string contextMenuPath = "/SharpDevelop/ViewContent/AvalonEdit/ContextMenu";
@ -153,9 +144,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
ParserService.ParseInformationUpdated += ParserServiceParseInformationUpdated; ParserService.ParseInformationUpdated += ParserServiceParseInformationUpdated;
this.FlowDirection = FlowDirection.LeftToRight; // code editing is always left-to-right this.FlowDirection = FlowDirection.LeftToRight; // code editing is always left-to-right
this.document = new TextDocument();
this.CommandBindings.Add(new CommandBinding(SharpDevelopRoutedCommands.SplitView, OnSplitView)); this.CommandBindings.Add(new CommandBinding(SharpDevelopRoutedCommands.SplitView, OnSplitView));
textMarkerService = new TextMarkerService(document);
textMarkerService = new TextMarkerService(this);
iconBarManager = new IconBarManager(); iconBarManager = new IconBarManager();
if (CodeEditorOptions.Instance.EnableChangeMarkerMargin) { if (CodeEditorOptions.Instance.EnableChangeMarkerMargin) {
changeWatcher = new DefaultChangeWatcher(); changeWatcher = new DefaultChangeWatcher();
@ -165,9 +156,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
Debug.Assert(primaryTextEditorAdapter != null); Debug.Assert(primaryTextEditorAdapter != null);
activeTextEditor = primaryTextEditor; activeTextEditor = primaryTextEditor;
this.Document = primaryTextEditor.Document;
primaryTextEditor.SetBinding(TextEditor.DocumentProperty, new Binding("Document") { Source = this });
this.ColumnDefinitions.Add(new ColumnDefinition()); this.ColumnDefinitions.Add(new ColumnDefinition());
this.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); this.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
this.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star), MinHeight = minRowHeight }); this.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star), MinHeight = minRowHeight });
@ -189,6 +177,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
primaryTextEditor.UpdateCustomizedHighlighting(); primaryTextEditor.UpdateCustomizedHighlighting();
if (secondaryTextEditor != null) if (secondaryTextEditor != null)
secondaryTextEditor.UpdateCustomizedHighlighting(); secondaryTextEditor.UpdateCustomizedHighlighting();
foreach (var bookmark in BookmarkManager.GetBookmarks(fileName).OfType<SDMarkerBookmark>())
bookmark.SetMarker();
} }
/// <summary> /// <summary>
@ -199,6 +189,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
CodeEditorView codeEditorView = new CodeEditorView(); CodeEditorView codeEditorView = new CodeEditorView();
CodeEditorAdapter adapter = new CodeEditorAdapter(this, codeEditorView); CodeEditorAdapter adapter = new CodeEditorAdapter(this, codeEditorView);
codeEditorView.Adapter = adapter; codeEditorView.Adapter = adapter;
codeEditorView.Document = document;
TextView textView = codeEditorView.TextArea.TextView; TextView textView = codeEditorView.TextArea.TextView;
textView.Services.AddService(typeof(ITextEditor), adapter); textView.Services.AddService(typeof(ITextEditor), adapter);
textView.Services.AddService(typeof(CodeEditor), this); textView.Services.AddService(typeof(CodeEditor), this);
@ -313,11 +304,29 @@ namespace ICSharpCode.AvalonEdit.AddIn
NewLineConsistencyCheck.StartConsistencyCheck(this); NewLineConsistencyCheck.StartConsistencyCheck(this);
} }
bool documentFirstLoad = true;
bool clearUndoStackOnSwitch = true;
/// <summary>
/// Gets/Sets whether to clear the undo stack when reloading the document.
/// The default is true.
/// http://community.sharpdevelop.net/forums/t/15816.aspx
/// </summary>
public bool ClearUndoStackOnSwitch {
get { return clearUndoStackOnSwitch; }
set { clearUndoStackOnSwitch = value; }
}
void ReloadDocument(TextDocument document, string newContent) void ReloadDocument(TextDocument document, string newContent)
{ {
var diff = new MyersDiffAlgorithm(new StringSequence(document.Text), new StringSequence(newContent)); var diff = new MyersDiffAlgorithm(new StringSequence(document.Text), new StringSequence(newContent));
document.Replace(0, document.TextLength, newContent, diff.GetEdits().ToOffsetChangeMap()); document.Replace(0, document.TextLength, newContent, diff.GetEdits().ToOffsetChangeMap());
document.UndoStack.ClearAll();
if (this.ClearUndoStackOnSwitch || documentFirstLoad)
document.UndoStack.ClearAll();
if (documentFirstLoad)
documentFirstLoad = false;
} }
public event EventHandler LoadedFileContent; public event EventHandler LoadedFileContent;
@ -340,8 +349,6 @@ namespace ICSharpCode.AvalonEdit.AddIn
secondaryTextEditorAdapter = (CodeEditorAdapter)secondaryTextEditor.TextArea.GetService(typeof(ITextEditor)); secondaryTextEditorAdapter = (CodeEditorAdapter)secondaryTextEditor.TextArea.GetService(typeof(ITextEditor));
Debug.Assert(primaryTextEditorAdapter != null); Debug.Assert(primaryTextEditorAdapter != null);
secondaryTextEditor.SetBinding(TextEditor.DocumentProperty,
new Binding(TextEditor.DocumentProperty.Name) { Source = primaryTextEditor });
secondaryTextEditor.SetBinding(TextEditor.IsReadOnlyProperty, secondaryTextEditor.SetBinding(TextEditor.IsReadOnlyProperty,
new Binding(TextEditor.IsReadOnlyProperty.Name) { Source = primaryTextEditor }); new Binding(TextEditor.IsReadOnlyProperty.Name) { Source = primaryTextEditor });
secondaryTextEditor.SyntaxHighlighting = primaryTextEditor.SyntaxHighlighting; secondaryTextEditor.SyntaxHighlighting = primaryTextEditor.SyntaxHighlighting;
@ -610,6 +617,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (errorPainter != null) if (errorPainter != null)
errorPainter.Dispose(); errorPainter.Dispose();
if (changeWatcher != null)
changeWatcher.Dispose();
this.Document = null; this.Document = null;
DisposeTextEditor(primaryTextEditor); DisposeTextEditor(primaryTextEditor);
if (secondaryTextEditor != null) if (secondaryTextEditor != null)

29
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -14,6 +14,7 @@ using System.Windows.Controls;
using System.Windows.Controls.Primitives; using System.Windows.Controls.Primitives;
using System.Windows.Documents; using System.Windows.Documents;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading; using System.Windows.Threading;
using ICSharpCode.AvalonEdit.AddIn.Options; using ICSharpCode.AvalonEdit.AddIn.Options;
@ -24,6 +25,7 @@ using ICSharpCode.AvalonEdit.Folding;
using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
@ -87,13 +89,17 @@ namespace ICSharpCode.AvalonEdit.AddIn
protected override void OnOptionChanged(PropertyChangedEventArgs e) protected override void OnOptionChanged(PropertyChangedEventArgs e)
{ {
base.OnOptionChanged(e); base.OnOptionChanged(e);
if (e.PropertyName == "HighlightBrackets") switch (e.PropertyName) {
HighlightBrackets(null, e); case "HighlightBrackets":
else if (e.PropertyName == "EnableFolding") HighlightBrackets(null, e);
UpdateParseInformationForFolding(); break;
else if (e.PropertyName == "HighlightSymbol") { case "EnableFolding":
if (this.caretReferencesRenderer != null) UpdateParseInformationForFolding();
this.caretReferencesRenderer.ClearHighlight(); break;
case "HighlightSymbol":
if (this.caretReferencesRenderer != null)
this.caretReferencesRenderer.ClearHighlight();
break;
} }
} }
@ -540,18 +546,13 @@ namespace ICSharpCode.AvalonEdit.AddIn
string language = this.SyntaxHighlighting != null ? this.SyntaxHighlighting.Name : null; string language = this.SyntaxHighlighting != null ? this.SyntaxHighlighting.Name : null;
CustomizableHighlightingColorizer.ApplyCustomizationsToDefaultElements(this, FetchCustomizations(language)); CustomizableHighlightingColorizer.ApplyCustomizationsToDefaultElements(this, FetchCustomizations(language));
BracketHighlightRenderer.ApplyCustomizationsToRendering(this.bracketRenderer, FetchCustomizations(language)); BracketHighlightRenderer.ApplyCustomizationsToRendering(this.bracketRenderer, FetchCustomizations(language));
HighlightingOptions.ApplyToFolding(this, FetchCustomizations(language)); HighlightingOptions.ApplyToRendering(this, FetchCustomizations(language));
this.TextArea.TextView.Redraw(); // manually redraw if default elements didn't change but customized highlightings did this.TextArea.TextView.Redraw(); // manually redraw if default elements didn't change but customized highlightings did
} }
static IEnumerable<CustomizedHighlightingColor> FetchCustomizations(string languageName) static IEnumerable<CustomizedHighlightingColor> FetchCustomizations(string languageName)
{ {
// Access CustomizedHighlightingColor.ActiveColors within enumerator so that always the latest version is used. return CustomizedHighlightingColor.FetchCustomizations(languageName);
// Using CustomizedHighlightingColor.ActiveColors.Where(...) would not work correctly!
foreach (CustomizedHighlightingColor color in CustomizedHighlightingColor.ActiveColors) {
if (color.Language == null || color.Language == languageName)
yield return color;
}
} }
} }
} }

22
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Commands/FoldingCommands.cs

@ -16,14 +16,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
{ {
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider; ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = provider.TextEditor; ITextEditor editor = provider.TextEditor;
ParserFoldingStrategy strategy = editor.GetService(typeof(ParserFoldingStrategy)) as ParserFoldingStrategy; FoldingManager foldingManager = editor.GetService(typeof(FoldingManager)) as FoldingManager;
if (strategy != null) { if (foldingManager != null) {
// look for folding on this line: // look for folding on this line:
FoldingSection folding = strategy.FoldingManager.GetNextFolding(editor.Document.PositionToOffset(editor.Caret.Line, 1)); FoldingSection folding = foldingManager.GetNextFolding(editor.Document.PositionToOffset(editor.Caret.Line, 1));
if (folding == null || editor.Document.GetLineForOffset(folding.StartOffset).LineNumber != editor.Caret.Line) { if (folding == null || editor.Document.GetLineForOffset(folding.StartOffset).LineNumber != editor.Caret.Line) {
// no folding found on current line: find innermost folding containing the caret // no folding found on current line: find innermost folding containing the caret
folding = strategy.FoldingManager.GetFoldingsContaining(editor.Caret.Offset).LastOrDefault(); folding = foldingManager.GetFoldingsContaining(editor.Caret.Offset).LastOrDefault();
} }
if (folding != null) { if (folding != null) {
folding.IsFolded = !folding.IsFolded; folding.IsFolded = !folding.IsFolded;
@ -38,17 +38,17 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
{ {
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider; ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = provider.TextEditor; ITextEditor editor = provider.TextEditor;
ParserFoldingStrategy strategy = editor.GetService(typeof(ParserFoldingStrategy)) as ParserFoldingStrategy; FoldingManager foldingManager = editor.GetService(typeof(FoldingManager)) as FoldingManager;
if (strategy != null) { if (foldingManager != null) {
bool doFold = true; bool doFold = true;
foreach (FoldingSection fm in strategy.FoldingManager.AllFoldings) { foreach (FoldingSection fm in foldingManager.AllFoldings) {
if (fm.IsFolded) { if (fm.IsFolded) {
doFold = false; doFold = false;
break; break;
} }
} }
foreach (FoldingSection fm in strategy.FoldingManager.AllFoldings) { foreach (FoldingSection fm in foldingManager.AllFoldings) {
fm.IsFolded = doFold; fm.IsFolded = doFold;
} }
} }
@ -61,10 +61,10 @@ namespace ICSharpCode.AvalonEdit.AddIn.Commands
{ {
ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider; ITextEditorProvider provider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
ITextEditor editor = provider.TextEditor; ITextEditor editor = provider.TextEditor;
ParserFoldingStrategy strategy = editor.GetService(typeof(ParserFoldingStrategy)) as ParserFoldingStrategy; FoldingManager foldingManager = editor.GetService(typeof(FoldingManager)) as FoldingManager;
if (strategy != null) { if (foldingManager != null) {
foreach (FoldingSection fm in strategy.FoldingManager.AllFoldings) { foreach (FoldingSection fm in foldingManager.AllFoldings) {
fm.IsFolded = ParserFoldingStrategy.IsDefinition(fm); fm.IsFolded = ParserFoldingStrategy.IsDefinition(fm);
} }
} }

92
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizableHighlightingColorizer.cs

@ -12,6 +12,9 @@ using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Project.Commands;
namespace ICSharpCode.AvalonEdit.AddIn namespace ICSharpCode.AvalonEdit.AddIn
{ {
@ -24,6 +27,10 @@ namespace ICSharpCode.AvalonEdit.AddIn
public const string SelectedText = "Selected text"; public const string SelectedText = "Selected text";
public const string NonPrintableCharacters = "Non-printable characters"; public const string NonPrintableCharacters = "Non-printable characters";
public const string LineNumbers = "Line numbers"; public const string LineNumbers = "Line numbers";
public const string LinkText = "Link text";
public const string BreakpointMarker = "Breakpoint";
public const string InstructionPointerMarker = "Current statement";
public const string ColumnRuler = "Column ruler";
public static void ApplyCustomizationsToDefaultElements(TextEditor textEditor, IEnumerable<CustomizedHighlightingColor> customizations) public static void ApplyCustomizationsToDefaultElements(TextEditor textEditor, IEnumerable<CustomizedHighlightingColor> customizations)
{ {
@ -34,6 +41,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
textEditor.TextArea.ClearValue(TextArea.SelectionBrushProperty); textEditor.TextArea.ClearValue(TextArea.SelectionBrushProperty);
textEditor.TextArea.ClearValue(TextArea.SelectionForegroundProperty); textEditor.TextArea.ClearValue(TextArea.SelectionForegroundProperty);
textEditor.TextArea.TextView.ClearValue(TextView.NonPrintableCharacterBrushProperty); textEditor.TextArea.TextView.ClearValue(TextView.NonPrintableCharacterBrushProperty);
textEditor.TextArea.TextView.ClearValue(TextView.LinkTextForegroundBrushProperty);
textEditor.TextArea.TextView.ClearValue(TextView.LinkTextBackgroundBrushProperty);
textEditor.TextArea.TextView.ClearValue(TextView.ColumnRulerPenProperty);
// 'assigned' flags are used so that the first matching customization wins. // 'assigned' flags are used so that the first matching customization wins.
// This is necessary because more specific customizations come first in the list // This is necessary because more specific customizations come first in the list
@ -42,6 +52,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
bool assignedSelectedText = false; bool assignedSelectedText = false;
bool assignedNonPrintableCharacter = false; bool assignedNonPrintableCharacter = false;
bool assignedLineNumbers = false; bool assignedLineNumbers = false;
bool assignedLinkText = false;
bool assignedColumnRulerColor = false;
foreach (CustomizedHighlightingColor color in customizations) { foreach (CustomizedHighlightingColor color in customizations) {
switch (color.Name) { switch (color.Name) {
case DefaultTextAndBackground: case DefaultTextAndBackground:
@ -88,6 +101,22 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (color.Foreground != null) if (color.Foreground != null)
textEditor.LineNumbersForeground = CreateFrozenBrush(color.Foreground.Value); textEditor.LineNumbersForeground = CreateFrozenBrush(color.Foreground.Value);
break; break;
case LinkText:
if (assignedLinkText)
continue;
assignedLinkText = true;
if (color.Foreground != null)
textEditor.TextArea.TextView.LinkTextForegroundBrush = CreateFrozenBrush(color.Foreground.Value);
if (color.Background != null)
textEditor.TextArea.TextView.LinkTextBackgroundBrush = CreateFrozenBrush(color.Background.Value);
break;
case ColumnRuler:
if (assignedColumnRulerColor)
continue;
assignedColumnRulerColor = true;
if (color.Foreground != null)
textEditor.TextArea.TextView.ColumnRulerPen = CreateFrozenPen(color.Foreground.Value);
break;
} }
} }
} }
@ -132,36 +161,42 @@ namespace ICSharpCode.AvalonEdit.AddIn
{ {
HighlightedLine line = baseHighlighter.HighlightLine(lineNumber); HighlightedLine line = baseHighlighter.HighlightLine(lineNumber);
foreach (HighlightedSection section in line.Sections) { foreach (HighlightedSection section in line.Sections) {
section.Color = CustomizeColor(section.Color); section.Color = CustomizeColor(section.Color, customizations);
} }
return line; return line;
} }
HighlightingColor CustomizeColor(HighlightingColor color) }
{
if (color == null || color.Name == null) internal static HighlightingColor CustomizeColor(HighlightingColor color, IEnumerable<CustomizedHighlightingColor> customizations)
return color; {
foreach (CustomizedHighlightingColor customization in customizations) { if (color == null || color.Name == null)
if (customization.Name == color.Name) {
return new HighlightingColor {
Name = color.Name,
Background = CreateBrush(customization.Background),
Foreground = CreateBrush(customization.Foreground),
FontWeight = customization.Bold ? FontWeights.Bold : FontWeights.Normal,
FontStyle = customization.Italic ? FontStyles.Italic : FontStyles.Normal
};
}
}
return color; return color;
return CustomizeColor(color.Name, customizations) ?? color;
}
internal static HighlightingColor CustomizeColor(string name, IEnumerable<CustomizedHighlightingColor> customizations)
{
foreach (CustomizedHighlightingColor customization in customizations) {
if (customization.Name == name) {
return new HighlightingColor {
Name = name,
Background = CreateBrush(customization.Background),
Foreground = CreateBrush(customization.Foreground),
FontWeight = customization.Bold ? FontWeights.Bold : FontWeights.Normal,
FontStyle = customization.Italic ? FontStyles.Italic : FontStyles.Normal
};
}
} }
return null;
static HighlightingBrush CreateBrush(Color? color) }
{
if (color == null) static HighlightingBrush CreateBrush(Color? color)
return null; {
else if (color == null)
return new CustomizedBrush(color.Value); return null;
} else
return new CustomizedBrush(color.Value);
} }
sealed class CustomizedBrush : HighlightingBrush sealed class CustomizedBrush : HighlightingBrush
@ -190,5 +225,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
brush.Freeze(); brush.Freeze();
return brush; return brush;
} }
static Pen CreateFrozenPen(Color color)
{
Pen pen = new Pen(CreateFrozenBrush(color), 1);
pen.Freeze();
return pen;
}
} }
} }

10
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CustomizedHighlightingColor.cs

@ -63,6 +63,16 @@ namespace ICSharpCode.AvalonEdit.AddIn
} }
} }
public static IEnumerable<CustomizedHighlightingColor> FetchCustomizations(string languageName)
{
// Access CustomizedHighlightingColor.ActiveColors within enumerator so that always the latest version is used.
// Using CustomizedHighlightingColor.ActiveColors.Where(...) would not work correctly!
foreach (CustomizedHighlightingColor color in CustomizedHighlightingColor.ActiveColors) {
if (color.Language == null || color.Language == languageName)
yield return color;
}
}
/// <summary> /// <summary>
/// Occurs when the set of customized highlighting colors was changed. /// Occurs when the set of customized highlighting colors was changed.
/// </summary> /// </summary>

6
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DefaultChangeWatcher.cs

@ -197,8 +197,10 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (!disposed) { if (!disposed) {
if (watcher != null) if (watcher != null)
watcher.Dispose(); watcher.Dispose();
this.textDocument.LineTrackers.Remove(this); if (this.textDocument != null) {
this.textDocument.UndoStack.PropertyChanged -= UndoStackPropertyChanged; this.textDocument.LineTrackers.Remove(this);
this.textDocument.UndoStack.PropertyChanged -= UndoStackPropertyChanged;
}
disposed = true; disposed = true;
} }
} }

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save