Browse Source

Remove static class ProjectBindingService; the list of project bindings is now available from SD.ProjectService.

Also, fixes various references to the "VBNet" language string to use "VB" instead.
newNR
Daniel Grunwald 12 years ago
parent
commit
ee0e6b1d4d
  1. 8
      SharpDevelop.Tests.sln
  2. 8
      src/AddIns/Analysis/UnitTesting/Test/Service/TestFrameworkDescriptorTests.cs
  3. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin
  4. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Resources/VisualBasicRazor.xshd
  5. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageConverter.cs
  6. 2
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
  7. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  8. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs
  9. 6
      src/AddIns/BackendBindings/VBBinding/Project/VBProjectBinding.vb
  10. 3
      src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
  11. 24
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs
  12. 2
      src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs
  13. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
  14. 4
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
  15. 4
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs
  16. 4
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  17. 2
      src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/FlavoredProjectTests.cs
  18. 2
      src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFilePreprocessor.cs
  19. 2
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingPreprocessorTests.cs
  20. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs
  21. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VB-Mode.xshd
  22. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj
  23. 8
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  24. 7
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  25. 21
      src/Main/Base/Project/Project/IProjectBinding.cs
  26. 17
      src/Main/Base/Project/Project/IProjectService.cs
  27. 2
      src/Main/Base/Project/Project/ISolutionFolder.cs
  28. 2
      src/Main/Base/Project/Project/PortableLibrary/PortableLibraryProjectBehavior.cs
  29. 91
      src/Main/Base/Project/Project/ProjectBindingDescriptor.cs
  30. 4
      src/Main/Base/Project/Project/ProjectBindingDoozer.cs
  31. 2
      src/Main/Base/Project/Project/Project_TypeGuids.cs
  32. 2
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceGeneratorOptions.cs
  33. 3
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs
  34. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  35. 12
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
  36. 4
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  37. 6
      src/Main/Base/Project/Src/Project/MSBuildFileProject.cs
  38. 5
      src/Main/Base/Project/Src/Project/UnknownProject.cs
  39. 71
      src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDescriptor.cs
  40. 131
      src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingService.cs
  41. 2
      src/Main/Base/Project/Templates/ITemplateService.cs
  42. 2
      src/Main/Base/Project/Util/SharpDevelopExtensions.cs
  43. 2
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  44. 4
      src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs
  45. 2
      src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs
  46. 4
      src/Main/Base/Test/WebReferences/VBWebReferenceTest.cs
  47. 22
      src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs
  48. 42
      src/Main/SharpDevelop/Project/ProjectService.cs
  49. 6
      src/Main/SharpDevelop/Project/SolutionFolder.cs
  50. 20
      src/Main/SharpDevelop/Project/SolutionLoader.cs
  51. 11
      src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs

8
SharpDevelop.Tests.sln

@ -313,6 +313,10 @@ Global @@ -313,6 +313,10 @@ Global
{B2BBC7BC-837C-40ED-A6DB-D5AE8626212F}.Debug|Any CPU.Build.0 = net_4_5_Debug|Any CPU
{B2BBC7BC-837C-40ED-A6DB-D5AE8626212F}.Release|Any CPU.ActiveCfg = net_4_5_Release|Any CPU
{B2BBC7BC-837C-40ED-A6DB-D5AE8626212F}.Release|Any CPU.Build.0 = net_4_5_Release|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Debug|Any CPU.ActiveCfg = net_4_5_Debug|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Debug|Any CPU.Build.0 = net_4_5_Debug|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Release|Any CPU.ActiveCfg = net_4_5_Release|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Release|Any CPU.Build.0 = net_4_5_Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -641,10 +645,6 @@ Global @@ -641,10 +645,6 @@ Global
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.Build.0 = Release|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Debug|Any CPU.ActiveCfg = net_4_5_Debug|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Debug|Any CPU.Build.0 = net_4_5_Debug|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Release|Any CPU.ActiveCfg = net_4_5_Release|Any CPU
{2A705FC6-1A9E-4941-9E47-254D79F2D9D5}.Release|Any CPU.Build.0 = net_4_5_Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

8
src/AddIns/Analysis/UnitTesting/Test/Service/TestFrameworkDescriptorTests.cs

@ -68,7 +68,7 @@ namespace UnitTesting.Tests.Service @@ -68,7 +68,7 @@ namespace UnitTesting.Tests.Service
}
[Test]
public void IsSupportedProject_CSharpAndVisualBasicProjectsSupportedByDescriptor_ReturnsTrueForVBNetProject()
public void IsSupportedProject_CSharpAndVisualBasicProjectsSupportedByDescriptor_ReturnsTrueForVBProject()
{
CreateTestFrameworkDescriptorToSupportProjectFileExtensions(".csproj;.vbproj");
MockCSharpProject project = CreateVisualBasicProjectSupportedByTestFramework();
@ -110,7 +110,7 @@ namespace UnitTesting.Tests.Service @@ -110,7 +110,7 @@ namespace UnitTesting.Tests.Service
}
[Test]
public void IsSupportedProject_SupportedProjectFileExtensionsInDescriptorContainWhitespace_ReturnsTrueForVBNetProject()
public void IsSupportedProject_SupportedProjectFileExtensionsInDescriptorContainWhitespace_ReturnsTrueForVBProject()
{
CreateTestFrameworkDescriptorToSupportProjectFileExtensions(" .csproj; .vbproj ");
MockCSharpProject project = CreateVisualBasicProjectSupportedByTestFramework();
@ -132,7 +132,7 @@ namespace UnitTesting.Tests.Service @@ -132,7 +132,7 @@ namespace UnitTesting.Tests.Service
}
[Test]
public void IsSupportedProject_SupportedProjectFileExtensionInDescriptorAreInUpperCase_ReturnsTrueForVBNetProject()
public void IsSupportedProject_SupportedProjectFileExtensionInDescriptorAreInUpperCase_ReturnsTrueForVBProject()
{
CreateTestFrameworkDescriptorToSupportProjectFileExtensions(".CSPROJ;.VBPROJ");
MockCSharpProject project = CreateVisualBasicProjectSupportedByTestFramework();
@ -143,7 +143,7 @@ namespace UnitTesting.Tests.Service @@ -143,7 +143,7 @@ namespace UnitTesting.Tests.Service
}
[Test]
public void IsSupportedProject_DescriptorSupportsCSharpProjects_ReturnsFalseForVBNetProject()
public void IsSupportedProject_DescriptorSupportsCSharpProjects_ReturnsFalseForVBProject()
{
CreateTestFrameworkDescriptorToSupportProjectFileExtensions(".csproj");
MockCSharpProject project = CreateVisualBasicProjectSupportedByTestFramework();

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin

@ -58,7 +58,7 @@ @@ -58,7 +58,7 @@
<SyntaxMode
id="VisualBasic.Razor.SyntaxMode"
extensions=".vbhtml"
name="VBNET/Razor"
name="VB/Razor"
resource="ICSharpCode.AspNet.Mvc.Resources.VisualBasicRazor.xshd"/>
</Path>

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/Resources/VisualBasicRazor.xshd

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<SyntaxDefinition
xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008"
name="VBNET/Razor"
name="VB/Razor"
extensions=".vbhtml">
<Color name="CommentBlockStartEndTags" foreground="Black" background="Yellow" />

2
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageConverter.cs

@ -7,7 +7,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -7,7 +7,7 @@ namespace ICSharpCode.AspNet.Mvc
{
public static class MvcTextTemplateLanguageConverter
{
public static readonly string VisualBasicProjectLanguage = "VBNet";
public static readonly string VisualBasicProjectLanguage = "VB";
/// <summary>
/// Converts from an IProject.Language string to an MvcTemplateLanguage. Only C# and VB.NET languages

2
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs

@ -85,7 +85,7 @@ namespace AspNet.Mvc.Tests @@ -85,7 +85,7 @@ namespace AspNet.Mvc.Tests
public void GetTemplateLanguage_ProjectIsVisualBasicProject_ReturnsVisualBasicTemplateLanguage()
{
CreateProject();
testableProject.SetLanguage("VBNet");
testableProject.SetLanguage("VB");
MvcTextTemplateLanguage language = project.GetTemplateLanguage();

4
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -26,10 +26,10 @@ @@ -26,10 +26,10 @@
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectActions/Convert">
<Condition name = "ProjectActive" activeproject="VBNet">
<Condition name = "ProjectActive" activeproject="VB">
<MenuItem id = "VBToCSharpConverter"
label = "${res:ICSharpCode.SharpDevelop.Commands.VBConvertProjectToCSharp}"
class = "CSharpBinding.VBNetToCSharpConverter"/>
class = "CSharpBinding.VBToCSharpConverter"/>
</Condition>
</Path>

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs

@ -15,7 +15,7 @@ using ICSharpCode.SharpDevelop.Project.Converter; @@ -15,7 +15,7 @@ using ICSharpCode.SharpDevelop.Project.Converter;
namespace CSharpBinding
{
public class VBNetToCSharpConverter : NRefactoryLanguageConverter
public class VBToCSharpConverter : NRefactoryLanguageConverter
{
public override string TargetLanguageName {
get {

6
src/AddIns/BackendBindings/VBBinding/Project/VBProjectBinding.vb

@ -8,12 +8,6 @@ Public Class VBProjectBinding @@ -8,12 +8,6 @@ Public Class VBProjectBinding
Implements IProjectBinding
Public Const LanguageName As String = "VB"
Public ReadOnly Property Language() As String Implements IProjectBinding.Language
Get
Return LanguageName
End Get
End Property
Public Function LoadProject(info As ProjectLoadInformation) As IProject Implements IProjectBinding.LoadProject
Return New VBProject(info)
End Function

3
src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs

@ -20,8 +20,7 @@ namespace Debugger.AddIn @@ -20,8 +20,7 @@ namespace Debugger.AddIn
{
public enum SupportedLanguage
{
CSharp,
VBNet
CSharp
}
public static class Extensions

24
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs

@ -657,7 +657,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options @@ -657,7 +657,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
static readonly MultiDictionary<string, string> mapping = new MultiDictionary<string, string>(StringComparer.Ordinal) {
{ "Brace Matching (Rectangle)", BracketHighlightRenderer.BracketHighlight },
{ "Collapsible Text", FoldingTextMarkers },
{ "Comment", "VBNET.Comment" },
{ "Comment", "VB.Comment" },
{ "Comment", "C#.Comment" },
{ "Compiler Error", ErrorPainter.ErrorColorName },
{ "CSS Comment", "CSS.Comment" },
@ -696,14 +696,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options @@ -696,14 +696,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
{ "Keyword", "C#.TypeKeywords" },
{ "Keyword", "C#.ValueTypes" },
{ "Keyword", "C#.ReferenceTypes" },
{ "Keyword", "VBNET.DateLiteral" },
{ "Keyword", "VBNET.Preprocessor" },
{ "Keyword", "VBNET.DataTypes" },
{ "Keyword", "VBNET.Operators" },
{ "Keyword", "VBNET.Constants" },
{ "Keyword", "VBNET.Keywords" },
{ "Keyword", "VBNET.FunctionKeywords" },
{ "Keyword", "VBNET.ContextKeywords" },
{ "Keyword", "VB.DateLiteral" },
{ "Keyword", "VB.Preprocessor" },
{ "Keyword", "VB.DataTypes" },
{ "Keyword", "VB.Operators" },
{ "Keyword", "VB.Constants" },
{ "Keyword", "VB.Keywords" },
{ "Keyword", "VB.FunctionKeywords" },
{ "Keyword", "VB.ContextKeywords" },
{ "Line Numbers", CustomizingHighlighter.LineNumbers },
{ "MarkerFormatDefinition/HighlightedReference", "" },
{ "Number", "C#.NumberLiteral" },
@ -725,7 +725,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options @@ -725,7 +725,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
{ "Script String", "" },
{ "Selected Text", "" },
{ "Selected Text", CustomizingHighlighter.SelectedText },
{ "String", "VBNET.String" },
{ "String", "VB.String" },
{ "String", "C#.String" },
{ "String(C# @ Verbatim)", "" },
{ "Syntax Error", "" },
@ -755,8 +755,8 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options @@ -755,8 +755,8 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
{ "XML Delimiter", "" },
{ "XML Doc Comment", "C#.DocComment" },
{ "XML Doc Tag", "C#.KnownDocTags" },
{ "XML Doc Comment", "VBNET.DocComment" },
{ "XML Doc Tag", "VBNET.KnownDocTags" },
{ "XML Doc Comment", "VB.DocComment" },
{ "XML Doc Tag", "VB.KnownDocTags" },
{ "XML Name", "XML.XmlTag" },
{ "XML Name", "XML.XmlDeclaration" },
{ "XML Name", "XML.DocType" },

2
src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs

@ -24,7 +24,7 @@ namespace MSHelpSystem.Helper @@ -24,7 +24,7 @@ namespace MSHelpSystem.Helper
result.Add("C++", "C%2B%2B");
result.Add("C#", "CSharp");
result.Add("F#", "FSharp");
result.Add("VBNet", "VB");
result.Add("VB", "VB");
return result;
}

4
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs

@ -18,8 +18,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -18,8 +18,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string type = ProjectType.GetProjectType(project);
if (type == ProjectType.CSharp) {
return SD.ProjectTypeGuids.CSharp.ToString();
} else if (type == ProjectType.VBNet.ToString()) {
return SD.ProjectTypeGuids.VBNet.ToString();
} else if (type == ProjectType.VB) {
return SD.ProjectTypeGuids.VB.ToString();
}
return String.Empty;
}

4
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs

@ -8,7 +8,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -8,7 +8,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public static class ProjectType
{
public static readonly string VBNet = "VB.NET";
public static readonly string VB = "VB.NET";
public static readonly string CSharp = "C#";
public static string GetProjectType(Project project)
@ -19,7 +19,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -19,7 +19,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public static string GetProjectType(IProject project)
{
if (project.Language == "VB")
return VBNet;
return VB;
else
return project.Language;
}

4
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs

@ -36,8 +36,8 @@ namespace Microsoft.VisualStudio.Shell.Flavor @@ -36,8 +36,8 @@ namespace Microsoft.VisualStudio.Shell.Flavor
var projectType = ProjectType.GetProjectType(project);
if (projectType == ProjectType.CSharp) {
return ProjectTypeGuids.CSharp.ToString();
} else if (projectType == ProjectType.VBNet) {
return ProjectTypeGuids.VBNet.ToString();
} else if (projectType == ProjectType.VB) {
return ProjectTypeGuids.VB.ToString();
}
return String.Empty;
}

4
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

@ -134,13 +134,13 @@ namespace PackageManagement.Tests.EnvDTE @@ -134,13 +134,13 @@ namespace PackageManagement.Tests.EnvDTE
}
[Test]
public void Kind_ProjectIsVBNetProject_ReturnsCSharpProjectTypeGuid()
public void Kind_ProjectIsVBNetProject_ReturnsVBProjectTypeGuid()
{
CreateProject( @"d:\projects\myproject\test.vbproj");
string kind = project.Kind;
Assert.AreEqual(ProjectTypeGuids.VBNet.ToString(), kind);
Assert.AreEqual(ProjectTypeGuids.VB.ToString(), kind);
}
[Test]

2
src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/FlavoredProjectTests.cs

@ -44,7 +44,7 @@ namespace PackageManagement.Tests.VisualStudio @@ -44,7 +44,7 @@ namespace PackageManagement.Tests.VisualStudio
int result = project.GetAggregateProjectTypeGuids(out guids);
Assert.AreEqual(VsConstants.S_OK, result);
Assert.AreEqual(ProjectTypeGuids.VBNet.ToString(), guids);
Assert.AreEqual(ProjectTypeGuids.VB.ToString(), guids);
}
[Test]

2
src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFilePreprocessor.cs

@ -46,7 +46,7 @@ namespace ICSharpCode.TextTemplating @@ -46,7 +46,7 @@ namespace ICSharpCode.TextTemplating
string GetFileExtensionForProject()
{
if (TemplateFile.Project.Language == "VBNet") {
if (TemplateFile.Project.Language == "VB") {
return ".vb";
}
return ".cs";

2
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingPreprocessorTests.cs

@ -91,7 +91,7 @@ namespace TextTemplating.Tests @@ -91,7 +91,7 @@ namespace TextTemplating.Tests
public void PreprocessTemplate_TemplateFileInVisualBasicProject_OutputFileNameIsTemplateFileNameWithVisualBasicFileExtension()
{
var templateFile = CreatePreprocessor(@"d:\MyProject\Test.tt");
templateFile.TestableProject.SetLanguage("VBNet");
templateFile.TestableProject.SetLanguage("VB");
preprocessor.PreprocessTemplate();
Assert.AreEqual(@"d:\MyProject\Test.vb", templatingHost.OutputFilePassedToPreprocessTemplate);

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs

@ -36,7 +36,7 @@ namespace ICSharpCode.AvalonEdit.Highlighting @@ -36,7 +36,7 @@ namespace ICSharpCode.AvalonEdit.Highlighting
hlm.RegisterHighlighting("PowerShell", new[] { ".ps1", ".psm1", ".psd1" }, "PowerShell.xshd");
hlm.RegisterHighlighting("PHP", new[] { ".php" }, "PHP-Mode.xshd");
hlm.RegisterHighlighting("TeX", new[] { ".tex" }, "Tex-Mode.xshd");
hlm.RegisterHighlighting("VBNET", new[] { ".vb" }, "VBNET-Mode.xshd");
hlm.RegisterHighlighting("VB", new[] { ".vb" }, "VB-Mode.xshd");
hlm.RegisterHighlighting("XML", (".xml;.xsl;.xslt;.xsd;.manifest;.config;.addin;" +
".xshd;.wxs;.wxi;.wxl;.proj;.csproj;.vbproj;.ilproj;" +
".booproj;.build;.xfrm;.targets;.xaml;.xpt;" +

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VBNET-Mode.xshd → src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VB-Mode.xshd

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
<!-- Converted to AvalonEdit format by Daniel Grunwald in 2010 -->
<!-- Updated 2010 by Siegfried Oleg Pammer for VB.NET 9 and 10 -->
<!-- Updated 2011 by Siegfried Oleg Pammer for VB 11 CTP -->
<SyntaxDefinition name="VBNET" extensions=".vb" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<SyntaxDefinition name="VB" extensions=".vb" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Color name="Comment" foreground="Green" exampleText="' comment" />
<Color name="String" exampleText="text = &quot;Hello, World!&quot;" />

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj

@ -389,7 +389,7 @@ @@ -389,7 +389,7 @@
<EmbeddedResource Include="Highlighting\Resources\Patch-Mode.xshd" />
<EmbeddedResource Include="Highlighting\Resources\PHP-Mode.xshd" />
<EmbeddedResource Include="Highlighting\Resources\Tex-Mode.xshd" />
<EmbeddedResource Include="Highlighting\Resources\VBNET-Mode.xshd" />
<EmbeddedResource Include="Highlighting\Resources\VB-Mode.xshd" />
<EmbeddedResource Include="Highlighting\Resources\XML-Mode.xshd" />
<EmbeddedResource Include="Highlighting\Resources\ModeV1.xsd" />
<EmbeddedResource Include="Highlighting\Resources\ModeV2.xsd" />

8
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
<Doozer name="OptionPanel" class="ICSharpCode.SharpDevelop.OptionPanelDoozer"/>
<Doozer name="DisplayBinding" class="ICSharpCode.SharpDevelop.Workbench.DisplayBindingDoozer"/>
<Doozer name="Pad" class="ICSharpCode.SharpDevelop.PadDoozer"/>
<Doozer name="ProjectBinding" class="ICSharpCode.SharpDevelop.ProjectBindingDoozer"/>
<Doozer name="ProjectBinding" class="ICSharpCode.SharpDevelop.Project.ProjectBindingDoozer"/>
<Doozer name="LanguageBinding" class="ICSharpCode.SharpDevelop.LanguageBindingDoozer"/>
<Doozer name="TextEditorExtension" class="ICSharpCode.SharpDevelop.Editor.TextEditorExtensionDoozer"/>
<Doozer name="BrowserSchemeExtension" class="ICSharpCode.SharpDevelop.BrowserDisplayBinding.SchemeExtensionDoozer"/>
@ -1922,8 +1922,8 @@ @@ -1922,8 +1922,8 @@
class = "ICSharpCode.SharpDevelop.Commands.CSharpConvertBuffer"/>
</Condition>
<Condition name="ActiveContentExtension" activeextension=".cs" action = "Disable">
<MenuItem id = "VBNet"
label = "VB.NET"
<MenuItem id = "VB"
label = "Visual Basic"
class = "ICSharpCode.SharpDevelop.Commands.VBConvertBuffer"/>
</Condition>
</MenuItem>
@ -2447,7 +2447,7 @@ @@ -2447,7 +2447,7 @@
</Not>
<Or> <!-- and either a C# or VB project -->
<Condition name = "ProjectActive" activeproject="C#" />
<Condition name = "ProjectActive" activeproject="VBNet" />
<Condition name = "ProjectActive" activeproject="VB" />
</Or>
</And>
<Class id="ConvertToPortableLibraryBehavior" class="ICSharpCode.SharpDevelop.Project.PortableLibrary.ConvertToPortableLibraryProjectBehavior" />

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

@ -197,10 +197,13 @@ @@ -197,10 +197,13 @@
<Compile Include="Project\Configuration\IConfigurable.cs" />
<Compile Include="Project\Configuration\ConfigurationMapping.cs" />
<Compile Include="Project\Configuration\IConfigurationOrPlatformNameCollection.cs" />
<Compile Include="Project\IProjectBinding.cs" />
<Compile Include="Project\IProjectService.cs" />
<Compile Include="Project\ISolution.cs" />
<Compile Include="Project\ISolutionFolder.cs" />
<Compile Include="Project\ISolutionItem.cs" />
<Compile Include="Project\ProjectBindingDescriptor.cs" />
<Compile Include="Project\ProjectBindingDoozer.cs" />
<Compile Include="Project\ProjectInformation.cs" />
<Compile Include="Project\Project_TypeGuids.cs" />
<Compile Include="Project\SolutionEventArgs.cs" />
@ -592,10 +595,7 @@ @@ -592,10 +595,7 @@
<Compile Include="Src\Services\Tasks\Task.cs" />
<Compile Include="Src\Services\Tasks\TaskService.cs" />
<Compile Include="Src\Internal\ExternalTool\ToolLoader.cs" />
<Compile Include="Src\Services\ProjectBinding\IProjectBinding.cs" />
<Compile Include="Src\Services\ProjectBinding\ProjectBindingService.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\CombineOpenEvaluator.cs" />
<Compile Include="Src\Services\ProjectBinding\ProjectBindingDoozer.cs" />
<Compile Include="Src\Services\Language\UILanguage.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\ProjectActiveEvaluator.cs" />
<Compile Include="Src\Services\AmbienceService\AmbienceService.cs" />
@ -725,7 +725,6 @@ @@ -725,7 +725,6 @@
<Compile Include="Src\Gui\Pads\ProjectBrowser\Commands\DefaultFileNodeCommands.cs" />
<Compile Include="Src\Gui\Dialogs\ProjectOptionsView.cs" />
<Compile Include="Src\Gui\Pads\ProjectBrowser\Commands\ToolbarCommands.cs" />
<Compile Include="Src\Services\ProjectBinding\ProjectBindingDescriptor.cs" />
<Compile Include="Src\Gui\XmlForms\Lib\IPropertyValueCreator.cs" />
<Compile Include="Src\Gui\XmlForms\Lib\IStringValueFilter.cs" />
<Compile Include="Src\Gui\XmlForms\Lib\StringWrapper.cs" />

21
src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs → src/Main/Base/Project/Project/IProjectBinding.cs

@ -6,18 +6,17 @@ using System; @@ -6,18 +6,17 @@ using System;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// The <code>IProjectBinding</code> interface is the base interface
/// of all project bindings avaiable.
/// The <c>IProjectBinding</c> interface is implemented by language binding AddIns
/// in order to support project creation/loading.
/// </summary>
/// <seealso cref="ProjectBindingDoozer"/>
public interface IProjectBinding
{
/// <returns>
/// The language for this project binding.
/// </returns>
string Language {
get;
}
/// <summary>
/// Loads a project from disk.
/// </summary>
/// <exception cref="ProjectLoadException">Invalid project file (or other error)</exception>
/// <exception cref="System.IO.IOException">Error reading from the project file</exception>
IProject LoadProject(ProjectLoadInformation info);
/// <summary>
@ -25,10 +24,12 @@ namespace ICSharpCode.SharpDevelop.Project @@ -25,10 +24,12 @@ namespace ICSharpCode.SharpDevelop.Project
/// Each project binding must provide a representation of the project
/// it 'controls'.
/// </summary>
/// <exception cref="ProjectLoadException">Invalid project file (or other error)</exception>
/// <exception cref="System.IO.IOException">Error writing new project to disk</exception>
IProject CreateProject(ProjectCreateInformation info);
/// <summary>
/// Determines whether this ProjectBinding handling missing project file
/// Determines whether this ProjectBinding handling missing project file
/// itself or it relies on the default logic of creating MissingProject project
/// </summary>
bool HandlingMissingProject { get; }

17
src/Main/Base/Project/Project/IProjectService.cs

@ -142,6 +142,23 @@ namespace ICSharpCode.SharpDevelop.Project @@ -142,6 +142,23 @@ namespace ICSharpCode.SharpDevelop.Project
event EventHandler<ProjectItemEventArgs> ProjectItemAdded;
event EventHandler<ProjectItemEventArgs> ProjectItemRemoved;
/// <summary>
/// Gets the list of registered project bindings.
/// </summary>
IReadOnlyList<ProjectBindingDescriptor> ProjectBindings { get; }
/// <summary>
/// Loads a project from disk without opening it in the IDE.
/// </summary>
/// <exception cref="ProjectLoadException">Invalid project file (or other error)</exception>
/// <exception cref="System.IO.IOException">Error reading from the project file</exception>
/// <remarks>
/// The TypeGuid will be used to identity the project binding used for loading the project.
/// If the TypeGuid provided with the ProjectLoadInformation is all zeroes, the project file extension
/// will be used instead.
/// </remarks>
IProject LoadProject(ProjectLoadInformation info);
}
public interface IProjectServiceRaiseEvents

2
src/Main/Base/Project/Project/ISolutionFolder.cs

@ -48,7 +48,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -48,7 +48,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// </summary>
/// <param name="fileName">Path to the project file</param>
/// <exception cref="ProjectLoadException">The specified file is not a valid project file</exception>
/// <exception cref="IOException">Error reading from the specified project file</exception>
/// <exception cref="System.IO.IOException">Error reading from the specified project file</exception>
IProject AddExistingProject(FileName fileName);
/* if (solutionFolderNode.Solution.SolutionFolders.Any(

2
src/Main/Base/Project/Project/PortableLibrary/PortableLibraryProjectBehavior.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Project.PortableLibrary @@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Project.PortableLibrary
public override IEnumerable<TargetFramework> GetAvailableTargetFrameworks()
{
TargetFramework[] portableTargets = { this.CurrentTargetFramework, new PickPortableTargetFramework() };
if (Project.Language == "C#" || Project.Language == "VBNet") {
if (Project.Language == "C#" || Project.Language == "VB") {
// we support converting back to regular projects
return base.GetAvailableTargetFrameworks().Union(portableTargets);
} else {

91
src/Main/Base/Project/Project/ProjectBindingDescriptor.cs

@ -0,0 +1,91 @@ @@ -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 ICSharpCode.Core;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Represents the registration of a project binding with the project service.
/// </summary>
public class ProjectBindingDescriptor
{
readonly AddIn addIn;
readonly string className;
readonly string language;
readonly Guid typeGuid;
readonly string projectFileExtension;
readonly string[] codeFileExtensions;
IProjectBinding binding;
public IProjectBinding Binding {
get {
if (binding != null)
return binding;
if (addIn == null)
return null;
return LazyInit.GetOrSet(ref binding, (IProjectBinding)addIn.CreateObject(className));
}
}
public string ProjectFileExtension {
get {
return projectFileExtension;
}
}
public Guid TypeGuid {
get {
return typeGuid;
}
}
public string Language {
get {
return language;
}
}
public string[] CodeFileExtensions {
get {
return codeFileExtensions;
}
}
public ProjectBindingDescriptor(IProjectBinding binding, string language, string projectFileExtension, Guid typeGuid, string[] codeFileExtensions)
{
if (binding == null)
throw new ArgumentNullException("binding");
if (language == null)
throw new ArgumentNullException("language");
if (projectFileExtension == null)
throw new ArgumentNullException("projectFileExtension");
if (codeFileExtensions == null)
throw new ArgumentNullException("codeFileExtensions");
this.binding = binding;
this.projectFileExtension = projectFileExtension;
this.typeGuid = typeGuid;
this.language = language;
this.codeFileExtensions = codeFileExtensions;
}
public ProjectBindingDescriptor(Codon codon)
{
if (codon == null)
throw new ArgumentNullException("codon");
this.addIn = codon.AddIn;
this.language = codon.Id;
this.className = codon.Properties["class"];
this.projectFileExtension = codon.Properties["projectfileextension"];
if (string.IsNullOrEmpty(codon.Properties["supportedextensions"]))
this.codeFileExtensions = new string[0];
else
this.codeFileExtensions = codon.Properties["supportedextensions"].ToLowerInvariant().Split(';');
if (!string.IsNullOrEmpty(codon.Properties["guid"]))
this.typeGuid = Guid.Parse(codon.Properties["guid"]);
}
}
}

4
src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDoozer.cs → src/Main/Base/Project/Project/ProjectBindingDoozer.cs

@ -5,7 +5,7 @@ using System; @@ -5,7 +5,7 @@ using System;
using System.Collections;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Creates ProjectBindingDescriptor objects for the project service.
@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop @@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop
/// <attribute name="class" use="required">
/// Name of the IProjectBinding class.
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/ProjectBinding</usage>
/// <usage>Only in /SharpDevelop/Workbench/ProjectBindings</usage>
/// <returns>
/// A ProjectBindingDescriptor object that wraps the IProjectBinding object.
/// </returns>

2
src/Main/Base/Project/Project/Project_TypeGuids.cs

@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Project
public static readonly Guid SolutionFolder = Guid.Parse("{2150E333-8FDC-42A3-9474-1A3956D46DE8}");
public static readonly Guid CSharp = Guid.Parse("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}");
public static readonly Guid VBNet = Guid.Parse("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}");
public static readonly Guid VB = Guid.Parse("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}");
public static readonly Guid CPlusPlus = Guid.Parse("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}");
public static readonly Guid WebApplication = Guid.Parse("{349C5851-65DF-11DA-9384-00065B846F21}");

2
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceGeneratorOptions.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference @@ -51,7 +51,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
public void MapProjectLanguage(string language)
{
if (language == "VBNet") {
if (language == "VB") {
Language = "VB";
} else {
Language = "CS";

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

@ -7,6 +7,7 @@ using System.CodeDom.Compiler; @@ -7,6 +7,7 @@ using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web.Services.Description;
using System.Web.Services.Discovery;
using System.Xml.Schema;
@ -301,7 +302,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -301,7 +302,7 @@ namespace ICSharpCode.SharpDevelop.Gui
string GetProxyFileNameExtension(string language)
{
ProjectBindingDescriptor binding = ProjectBindingService.GetCodonPerLanguageName(language);
ProjectBindingDescriptor binding = SD.ProjectService.ProjectBindings.FirstOrDefault(b => b.Language == language);
if (binding != null) {
string[] extensions = binding.CodeFileExtensions;
if (extensions.Length > 0) {

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -43,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
int GetFileFilterIndex(IProject project, IReadOnlyList<FileFilterDescriptor> fileFilters)
{
if (project != null) {
ProjectBindingDescriptor projectCodon = ProjectBindingService.GetCodonPerLanguageName(project.Language);
ProjectBindingDescriptor projectCodon = SD.ProjectService.ProjectBindings.FirstOrDefault(b => b.Language == project.Language);
if (projectCodon != null) {
for (int i = 0; i < fileFilters.Count; ++i) {
for (int j = 0; j < projectCodon.CodeFileExtensions.Length; ++j) {

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

@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -56,7 +56,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode;
ISolutionFolderNode solutionFolderNode = node as ISolutionFolderNode;
if (node != null) {
if (solutionFolderNode != null) {
using (OpenFileDialog fdiag = new OpenFileDialog()) {
fdiag.AddExtension = true;
fdiag.Filter = ProjectService.GetAllProjectsFilter(this, false);
@ -64,8 +64,14 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -64,8 +64,14 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
fdiag.CheckFileExists = true;
fdiag.InitialDirectory = AddNewProjectToSolution.GetInitialDirectorySuggestion(solutionFolderNode.Folder);
if (fdiag.ShowDialog(SD.WinForms.MainWin32Window) == DialogResult.OK) {
foreach (string fileName in fdiag.FileNames) {
solutionFolderNode.Folder.AddExistingProject(FileName.Create(fileName));
try {
foreach (string fileName in fdiag.FileNames) {
solutionFolderNode.Folder.AddExistingProject(FileName.Create(fileName));
}
} catch (ProjectLoadException ex) {
MessageService.ShowError(ex.Message);
} catch (IOException ex) {
MessageService.ShowError(ex.Message);
}
ProjectService.SaveSolution();
}

4
src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs

@ -17,6 +17,7 @@ using Microsoft.Build.Construction; @@ -17,6 +17,7 @@ using Microsoft.Build.Construction;
namespace ICSharpCode.SharpDevelop.Project.Converter
{
/*
/// <summary>
/// Converts projects from one language to another, for example C# &lt;-&gt; VB
/// </summary>
@ -206,6 +207,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -206,6 +207,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
}
}
}
*/
/*
public abstract class NRefactoryLanguageConverter : LanguageConverter
@ -271,6 +273,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -271,6 +273,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
}
*/
/*
/// <summary>
/// Exception used when converting a file fails.
/// </summary>
@ -293,4 +296,5 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -293,4 +296,5 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
{
}
}
*/
}

6
src/Main/Base/Project/Src/Project/MSBuildFileProject.cs

@ -29,9 +29,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -29,9 +29,9 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
}
} catch (XmlException) {
} catch (IOException) {
}
} catch (XmlException ex) {
throw new ProjectLoadException(ex.Message, ex);
} // IOException can also occur, but doesn't need to be converted to ProjectLoadException
}
public override SolutionFormatVersion MinimumSolutionVersion {

5
src/Main/Base/Project/Src/Project/UnknownProject.cs

@ -27,13 +27,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -27,13 +27,10 @@ namespace ICSharpCode.SharpDevelop.Project
MessageService.ShowError("Error loading " + this.FileName + ":\n" + warningText);
}
public UnknownProject(ProjectLoadInformation information, string warningText, bool displayWarningToUser)
public UnknownProject(ProjectLoadInformation information, string warningText)
: this(information)
{
this.warningText = warningText;
if (displayWarningToUser) {
ShowWarningMessageBox();
}
}
public UnknownProject(ProjectLoadInformation information)

71
src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDescriptor.cs

@ -1,71 +0,0 @@ @@ -1,71 +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 ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop
{
public class ProjectBindingDescriptor
{
IProjectBinding binding = null;
Codon codon;
public IProjectBinding Binding {
get {
if (binding == null) {
binding = (IProjectBinding)codon.AddIn.CreateObject(codon.Properties["class"]);
if (binding != null) {
if (binding.Language != this.Language)
throw new InvalidOperationException("The Language property of the project binding must be equal to the id of the ProjectBinding codon!");
}
}
return binding;
}
}
public Codon Codon {
get {
return codon;
}
}
public string ProjectFileExtension {
get {
return codon.Properties["projectfileextension"];
}
}
public Guid Guid {
get {
return Guid.Parse(codon.Properties["guid"]);
}
}
public string Language {
get {
return codon.Id;
}
}
string[] codeFileExtensions;
public string[] CodeFileExtensions {
get {
if (codeFileExtensions == null) {
if (codon.Properties["supportedextensions"].Length == 0)
codeFileExtensions = new string[0];
else
codeFileExtensions = codon.Properties["supportedextensions"].ToLowerInvariant().Split(';');
}
return codeFileExtensions;
}
}
public ProjectBindingDescriptor(Codon codon)
{
this.codon = codon;
}
}
}

131
src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingService.cs

@ -1,131 +0,0 @@ @@ -1,131 +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 ICSharpCode.SharpDevelop.Gui;
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop
{
public static class ProjectBindingService
{
static IList<ProjectBindingDescriptor> bindings;
static ProjectBindingService()
{
bindings = AddInTree.BuildItems<ProjectBindingDescriptor>("/SharpDevelop/Workbench/ProjectBindings", null, false);
}
/// <summary>
/// Overwrites the list of used bindings. Used for unit tests.
/// </summary>
public static void SetBindings(IList<ProjectBindingDescriptor> bindings)
{
ProjectBindingService.bindings = bindings;
}
public static string GetProjectFileExtension(string languageName)
{
ProjectBindingDescriptor descriptor = GetCodonPerLanguageName(languageName);
return descriptor == null ? null : descriptor.ProjectFileExtension;
}
public static IProjectBinding GetBindingPerLanguageName(string languagename)
{
ProjectBindingDescriptor descriptor = GetCodonPerLanguageName(languagename);
return descriptor == null ? null : descriptor.Binding;
}
public static IProjectBinding GetBindingCodePerFileName(string filename)
{
ProjectBindingDescriptor descriptor = GetCodonPerCodeFileName(filename);
return descriptor == null ? null : descriptor.Binding;
}
public static IProjectBinding GetBindingPerProjectFile(string filename)
{
ProjectBindingDescriptor descriptor = GetCodonPerProjectFile(filename);
return descriptor == null ? null : descriptor.Binding;
}
public static ProjectBindingDescriptor GetCodonPerLanguageName(string languagename)
{
foreach (ProjectBindingDescriptor binding in bindings) {
if (binding.Language == languagename) {
return binding;
}
}
return null;
}
public static ProjectBindingDescriptor GetCodonPerCodeFileName(string filename)
{
string extension = Path.GetExtension(filename).ToLowerInvariant();
foreach (ProjectBindingDescriptor binding in bindings) {
if (Array.IndexOf(binding.CodeFileExtensions, extension) >= 0) {
return binding;
}
}
return null;
}
public static ProjectBindingDescriptor GetCodonPerProjectFile(string fileName)
{
string ext = Path.GetExtension(fileName).ToUpperInvariant();
foreach (ProjectBindingDescriptor binding in bindings) {
if (binding.ProjectFileExtension.ToUpperInvariant() == ext) {
return binding;
}
}
return null;
}
public static IProject LoadProject(ProjectLoadInformation loadInformation)
{
if (loadInformation == null)
throw new ArgumentNullException("loadInformation");
var location = loadInformation.FileName;
string title = loadInformation.ProjectName;
IProgressMonitor progressMonitor = loadInformation.ProgressMonitor;
progressMonitor.CancellationToken.ThrowIfCancellationRequested();
IProjectBinding binding = ProjectBindingService.GetBindingPerProjectFile(location);
IProject newProject;
if (!(binding != null && binding.HandlingMissingProject) && !File.Exists(location)) {
newProject = new MissingProject(loadInformation);
} else {
if (binding != null) {
try {
newProject = binding.LoadProject(loadInformation);
} catch (ProjectLoadException ex) {
LoggingService.Warn("Project load error", ex);
progressMonitor.ShowingDialog = true;
newProject = new UnknownProject(loadInformation, ex.Message, true);
progressMonitor.ShowingDialog = false;
} catch (UnauthorizedAccessException ex) {
LoggingService.Warn("Project load error", ex);
progressMonitor.ShowingDialog = true;
newProject = new UnknownProject(loadInformation, ex.Message, true);
progressMonitor.ShowingDialog = false;
}
} else {
string ext = Path.GetExtension(location);
if (".proj".Equals(ext, StringComparison.OrdinalIgnoreCase)
|| ".build".Equals(ext, StringComparison.OrdinalIgnoreCase))
{
newProject = new MSBuildFileProject(loadInformation);
} else {
newProject = new UnknownProject(loadInformation);
}
}
}
return newProject;
}
}
}

2
src/Main/Base/Project/Templates/ITemplateService.cs

@ -41,7 +41,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -41,7 +41,7 @@ namespace ICSharpCode.SharpDevelop.Templates
/// <param name="fileSystem">File system used to open referenced input files.
/// This should usually be a <see cref="ReadOnlyChrootFileSystem"/> so that the file template
/// can use relative paths.
/// The template will keep a reference to the file system instance and use it to create files/projects.
/// The template will keep a reference to the file system instance and use it to read the referenced input files when the template is used.
/// </param>
/// <returns><see cref="FileTemplate"/> or <see cref="ProjectTemplate"/> instance.</returns>
/// <exception cref="TemplateLoadException">Invalid file format</exception>

2
src/Main/Base/Project/Util/SharpDevelopExtensions.cs

@ -512,7 +512,7 @@ namespace ICSharpCode.SharpDevelop @@ -512,7 +512,7 @@ namespace ICSharpCode.SharpDevelop
try {
return SD.AssemblyParserService.GetAssemblyModel(assembly.GetReferenceAssemblyLocation());
} catch (Exception ex) {
} catch (Exception) {
// TODO: use the exact exception types that GetAssemblyModel() throws (+document them)
// silently ignore errors when loading the assembly
return null;

2
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -136,7 +136,7 @@ @@ -136,7 +136,7 @@
<Compile Include="WebReferences\ValidWebReferenceNamespaceTests.cs" />
<Compile Include="WebReferences\WebReferenceTests.cs" />
<Compile Include="WebReferences\ProjectHasExistingWebRefFolderTest.cs" />
<Compile Include="WebReferences\VBNetWebReferenceTest.cs" />
<Compile Include="WebReferences\VBWebReferenceTest.cs" />
<Compile Include="WebReferences\WebReferenceTestHelper.cs" />
<Compile Include="WebReferences\UnsupportedLanguageTest.cs" />
<Compile Include="WebReferences\WebReferenceFolderAlreadyExistsTest.cs" />

4
src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs

@ -39,7 +39,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences @@ -39,7 +39,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
void CreateProjectWithVisualBasicMSBuildProject()
{
msbuildProject = WebReferenceTestHelper.CreateTestProject("VBNet");
msbuildProject = WebReferenceTestHelper.CreateTestProject("VB");
project = new ProjectWithServiceReferences(msbuildProject);
}
@ -311,7 +311,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences @@ -311,7 +311,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
{
CreateProjectWithVisualBasicMSBuildProject();
Assert.AreEqual("VBNet", project.Language);
Assert.AreEqual("VB", project.Language);
}
[Test]

2
src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs

@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences @@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
void UseVisualBasicProject()
{
SetProjectLanguage("VBNet");
SetProjectLanguage("VB");
}
void SetProjectLanguage(string language)

4
src/Main/Base/Test/WebReferences/VBNetWebReferenceTest.cs → src/Main/Base/Test/WebReferences/VBWebReferenceTest.cs

@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences @@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences
/// a vb project.
/// </summary>
[TestFixture]
public class VBNetWebReferenceTest : SDTestFixtureBase
public class VBWebReferenceTest : SDTestFixtureBase
{
Gui.WebReference webReference;
DiscoveryClientProtocol protocol;
@ -32,7 +32,7 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences @@ -32,7 +32,7 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences
public override void FixtureSetUp()
{
base.FixtureSetUp();
project = WebReferenceTestHelper.CreateTestProject("VBNet");
project = WebReferenceTestHelper.CreateTestProject("VB");
protocol = new DiscoveryClientProtocol();
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference();

22
src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs

@ -48,20 +48,14 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences @@ -48,20 +48,14 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences
public static void InitializeProjectBindings()
{
Properties prop = new Properties();
prop["id"] = "C#";
prop["supportedextensions"] = ".cs";
prop["projectfileextension"] = ".csproj";
Codon codon1 = new Codon(null, "ProjectBinding", prop, new Condition[0]);
prop = new Properties();
prop["id"] = "VBNet";
prop["supportedextensions"] = ".vb";
prop["projectfileextension"] = ".vbproj";
Codon codon2 = new Codon(null, "ProjectBinding", prop, new Condition[0]);
ProjectBindingService.SetBindings(new ProjectBindingDescriptor[] {
new ProjectBindingDescriptor(codon1),
new ProjectBindingDescriptor(codon2)
});
SD.Services.AddStrictMockService<IProjectService>();
var projectBinding = MockRepository.GenerateStrictMock<IProjectBinding>();
ProjectBindingDescriptor[] descriptors = {
new ProjectBindingDescriptor(projectBinding, "C#", ".csproj", ProjectTypeGuids.CSharp, new[] { ".cs" }),
new ProjectBindingDescriptor(projectBinding, "VB", ".vbproj", ProjectTypeGuids.VB, new[] { ".vb" }),
};
SD.ProjectService.Stub(p => p.ProjectBindings).Return(descriptors);
}
public static ProjectItem GetProjectItem(List<ProjectItem> items, string include, ItemType itemType) {

42
src/Main/SharpDevelop/Project/ProjectService.cs

@ -2,8 +2,10 @@ @@ -2,8 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows.Input;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
@ -19,6 +21,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -19,6 +21,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
allSolutions = new NullSafeSimpleModelCollection<ISolution>();
allProjects = allSolutions.SelectMany(s => s.Projects);
projectBindings = SD.AddInTree.BuildItems<ProjectBindingDescriptor>("/SharpDevelop/Workbench/ProjectBindings", null);
SD.GetFutureService<IWorkbench>().ContinueWith(t => t.Result.ActiveViewContentChanged += ActiveViewContentChanged);
@ -364,5 +367,44 @@ namespace ICSharpCode.SharpDevelop.Project @@ -364,5 +367,44 @@ namespace ICSharpCode.SharpDevelop.Project
ProjectItemRemoved(this, e);
}
#endregion
#region Project Bindings
readonly IReadOnlyList<ProjectBindingDescriptor> projectBindings;
public IReadOnlyList<ProjectBindingDescriptor> ProjectBindings {
get { return projectBindings; }
}
public IProject LoadProject(ProjectLoadInformation info)
{
if (info == null)
throw new ArgumentNullException("info");
info.ProgressMonitor.CancellationToken.ThrowIfCancellationRequested();
ProjectBindingDescriptor descriptor = null;
if (info.TypeGuid != Guid.Empty) {
descriptor = projectBindings.FirstOrDefault(b => b.TypeGuid == info.TypeGuid);
}
if (descriptor == null) {
string extension = info.FileName.GetExtension();
if (extension.Equals(".proj", StringComparison.OrdinalIgnoreCase) || extension.Equals(".build", StringComparison.OrdinalIgnoreCase))
return new MSBuildFileProject(info);
descriptor = projectBindings.FirstOrDefault(b => extension.Equals(b.ProjectFileExtension, StringComparison.OrdinalIgnoreCase));
}
if (descriptor == null)
throw new ProjectLoadException(SD.ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.NoBackendForProjectType"));
// Set type GUID based on file extension
info.TypeGuid = descriptor.TypeGuid;
IProjectBinding binding = descriptor.Binding;
if (binding == null)
throw new ProjectLoadException(SD.ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.NoBackendForProjectType"));
if (!binding.HandlingMissingProject && !SD.FileSystem.FileExists(info.FileName))
throw new FileNotFoundException("Project file not found", info.FileName);
var result = binding.LoadProject(info);
if (result == null)
throw new InvalidOperationException("IProjectBinding.LoadProject() must not return null");
return result;
}
#endregion
}
}

6
src/Main/SharpDevelop/Project/SolutionFolder.cs

@ -132,11 +132,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -132,11 +132,7 @@ namespace ICSharpCode.SharpDevelop.Project
public IProject AddExistingProject(FileName fileName)
{
ProjectLoadInformation loadInfo = new ProjectLoadInformation(parentSolution, fileName, fileName.GetFileNameWithoutExtension());
var descriptor = ProjectBindingService.GetCodonPerProjectFile(fileName);
if (descriptor != null) {
loadInfo.TypeGuid = descriptor.Guid;
}
IProject project = ProjectBindingService.LoadProject(loadInfo);
IProject project = SD.ProjectService.LoadProject(loadInfo);
Debug.Assert(project.IdGuid != Guid.Empty);
this.Items.Add(project);
project.ProjectLoaded();

20
src/Main/SharpDevelop/Project/SolutionLoader.cs

@ -139,7 +139,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -139,7 +139,7 @@ namespace ICSharpCode.SharpDevelop.Project
projectInfo.ActiveProjectConfiguration = projectInfo.ConfigurationMapping.GetProjectConfiguration(solution.ActiveConfiguration);
progress.TaskName = "Loading " + projectInfo.ProjectName;
using (projectInfo.ProgressMonitor = progress.CreateSubTask(1.0 / projectCount)) {
solutionItem = ProjectBindingService.LoadProject(projectInfo);
solutionItem = LoadProjectWithErrorHandling(projectInfo);
}
projectsLoaded++;
progress.Progress = (double)projectsLoaded / projectCount;
@ -155,6 +155,24 @@ namespace ICSharpCode.SharpDevelop.Project @@ -155,6 +155,24 @@ namespace ICSharpCode.SharpDevelop.Project
solution.IsDirty = fixedGuidConflicts; // reset IsDirty=false unless we've fixed GUID conflicts
}
static IProject LoadProjectWithErrorHandling(ProjectLoadInformation projectInfo)
{
Exception exception;
try {
return SD.ProjectService.LoadProject(projectInfo);
} catch (FileNotFoundException) {
return new MissingProject(projectInfo);
} catch (ProjectLoadException ex) {
exception = ex;
} catch (IOException ex) {
exception = ex;
} catch (UnauthorizedAccessException ex) {
exception = ex;
}
LoggingService.Warn("Project load error", exception);
return new UnknownProject(projectInfo, exception.Message);
}
#endregion
#region ReadFormatHeader

11
src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs

@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop.Templates
/// Creates a project descriptor for the project node specified by the xml element.
/// </summary>
/// <param name="element">The &lt;Project&gt; node of the xml template file.</param>
/// <param name="hintPath">The directory on which relative paths (e.g. for referenced files) are based.</param>
/// <param name="fileSystem">The file system from which referenced files are loaded. Use a ChrootFileSystem to specify the base directory for relative paths.</param>
public ProjectDescriptor(XmlElement element, IReadOnlyFileSystem fileSystem)
{
if (element == null)
@ -276,7 +276,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -276,7 +276,7 @@ namespace ICSharpCode.SharpDevelop.Templates
try
{
string language = string.IsNullOrEmpty(languageName) ? defaultLanguage : languageName;
ProjectBindingDescriptor descriptor = ProjectBindingService.GetCodonPerLanguageName(language);
ProjectBindingDescriptor descriptor = SD.ProjectService.ProjectBindings.FirstOrDefault(b => b.Language == language);
IProjectBinding languageinfo = (descriptor != null) ? descriptor.Binding : null;
if (languageinfo == null) {
@ -289,13 +289,12 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -289,13 +289,12 @@ namespace ICSharpCode.SharpDevelop.Templates
DirectoryName projectBasePath = projectCreateOptions.ProjectBasePath;
string newProjectName = StringParser.Parse(name, new StringTagPair("ProjectName", projectCreateOptions.ProjectName));
Directory.CreateDirectory(projectBasePath);
FileName projectLocation = FileName.Create(Path.Combine(projectBasePath,
newProjectName + ProjectBindingService.GetProjectFileExtension(language)));
FileName projectLocation = projectBasePath.CombineFile(newProjectName + descriptor.ProjectFileExtension);
ProjectCreateInformation info = new ProjectCreateInformation(parentSolution, projectLocation);
StringBuilder standardNamespace = new StringBuilder();
// filter 'illegal' chars from standard namespace
if (newProjectName != null && newProjectName.Length > 0) {
if (!string.IsNullOrEmpty(newProjectName)) {
char ch = '.';
for (int i = 0; i < newProjectName.Length; ++i) {
if (ch == '.') {
@ -318,7 +317,7 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -318,7 +317,7 @@ namespace ICSharpCode.SharpDevelop.Templates
}
}
info.TypeGuid = descriptor.Guid;
info.TypeGuid = descriptor.TypeGuid;
info.RootNamespace = standardNamespace.ToString();
info.ProjectName = newProjectName;
if (!string.IsNullOrEmpty(defaultPlatform))

Loading…
Cancel
Save