diff --git a/SharpDevelop.Tests.sln b/SharpDevelop.Tests.sln
index 410acb93af..3364e96f0c 100644
--- a/SharpDevelop.Tests.sln
+++ b/SharpDevelop.Tests.sln
@@ -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
{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
diff --git a/src/AddIns/Analysis/UnitTesting/Test/Service/TestFrameworkDescriptorTests.cs b/src/AddIns/Analysis/UnitTesting/Test/Service/TestFrameworkDescriptorTests.cs
index 5653ac4c43..367ba4dfca 100644
--- a/src/AddIns/Analysis/UnitTesting/Test/Service/TestFrameworkDescriptorTests.cs
+++ b/src/AddIns/Analysis/UnitTesting/Test/Service/TestFrameworkDescriptorTests.cs
@@ -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
}
[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
}
[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
}
[Test]
- public void IsSupportedProject_DescriptorSupportsCSharpProjects_ReturnsFalseForVBNetProject()
+ public void IsSupportedProject_DescriptorSupportsCSharpProjects_ReturnsFalseForVBProject()
{
CreateTestFrameworkDescriptorToSupportProjectFileExtensions(".csproj");
MockCSharpProject project = CreateVisualBasicProjectSupportedByTestFramework();
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin
index fedc8a1f1c..8f012b7a71 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin
@@ -58,7 +58,7 @@
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Resources/VisualBasicRazor.xshd b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Resources/VisualBasicRazor.xshd
index 47e906f8e7..a8011938e4 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Resources/VisualBasicRazor.xshd
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Resources/VisualBasicRazor.xshd
@@ -1,6 +1,6 @@
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageConverter.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageConverter.cs
index cd84fe0d8b..b4b7a5dd21 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageConverter.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateLanguageConverter.cs
@@ -7,7 +7,7 @@ namespace ICSharpCode.AspNet.Mvc
{
public static class MvcTextTemplateLanguageConverter
{
- public static readonly string VisualBasicProjectLanguage = "VBNet";
+ public static readonly string VisualBasicProjectLanguage = "VB";
///
/// Converts from an IProject.Language string to an MvcTemplateLanguage. Only C# and VB.NET languages
diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
index daa8ae9c8b..2ab6fcd7e2 100644
--- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
+++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcProjectTests.cs
@@ -85,7 +85,7 @@ namespace AspNet.Mvc.Tests
public void GetTemplateLanguage_ProjectIsVisualBasicProject_ReturnsVisualBasicTemplateLanguage()
{
CreateProject();
- testableProject.SetLanguage("VBNet");
+ testableProject.SetLanguage("VB");
MvcTextTemplateLanguage language = project.GetTemplateLanguage();
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
index ca0a25ffcd..ee15341d51 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
@@ -26,10 +26,10 @@
-
+
+ class = "CSharpBinding.VBToCSharpConverter"/>
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs
index 7fb28edc07..c338f4ff00 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs
@@ -15,7 +15,7 @@ using ICSharpCode.SharpDevelop.Project.Converter;
namespace CSharpBinding
{
- public class VBNetToCSharpConverter : NRefactoryLanguageConverter
+ public class VBToCSharpConverter : NRefactoryLanguageConverter
{
public override string TargetLanguageName {
get {
diff --git a/src/AddIns/BackendBindings/VBBinding/Project/VBProjectBinding.vb b/src/AddIns/BackendBindings/VBBinding/Project/VBProjectBinding.vb
index 9ff4175674..4fb8d726b3 100644
--- a/src/AddIns/BackendBindings/VBBinding/Project/VBProjectBinding.vb
+++ b/src/AddIns/BackendBindings/VBBinding/Project/VBProjectBinding.vb
@@ -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
diff --git a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
index c39580e441..7cd4db64f0 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
+++ b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
@@ -20,8 +20,7 @@ namespace Debugger.AddIn
{
public enum SupportedLanguage
{
- CSharp,
- VBNet
+ CSharp
}
public static class Extensions
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs
index c4f594d4c9..feec433742 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs
@@ -657,7 +657,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
static readonly MultiDictionary mapping = new MultiDictionary(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
{ "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
{ "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
{ "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" },
diff --git a/src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs b/src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs
index 9af7b6fc04..ae9e1c736d 100644
--- a/src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs
+++ b/src/AddIns/Misc/HelpViewer/Source/Helper/ProjectLanguages.cs
@@ -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;
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
index a0390a9787..4ef0d9aa16 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
@@ -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;
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
index 73d9c33df5..8d3ffea2dd 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
@@ -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
public static string GetProjectType(IProject project)
{
if (project.Language == "VB")
- return VBNet;
+ return VB;
else
return project.Language;
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs b/src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs
index a93835a210..5ca51902c7 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs
@@ -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;
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
index 9ce4e1a081..01fd074f72 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
@@ -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]
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/FlavoredProjectTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/FlavoredProjectTests.cs
index 804981969c..52f7fd64ab 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/FlavoredProjectTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/FlavoredProjectTests.cs
@@ -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]
diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFilePreprocessor.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFilePreprocessor.cs
index b94ece1d96..da33aa9b08 100644
--- a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFilePreprocessor.cs
+++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingFilePreprocessor.cs
@@ -46,7 +46,7 @@ namespace ICSharpCode.TextTemplating
string GetFileExtensionForProject()
{
- if (TemplateFile.Project.Language == "VBNet") {
+ if (TemplateFile.Project.Language == "VB") {
return ".vb";
}
return ".cs";
diff --git a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingPreprocessorTests.cs b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingPreprocessorTests.cs
index f670834d7c..14506ed7be 100644
--- a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingPreprocessorTests.cs
+++ b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingPreprocessorTests.cs
@@ -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);
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs
index 3dc7f08c09..7730a3a2cc 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/Resources.cs
@@ -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;" +
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VBNET-Mode.xshd b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VB-Mode.xshd
similarity index 98%
rename from src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VBNET-Mode.xshd
rename to src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VB-Mode.xshd
index b22555a29e..05e38374f1 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VBNET-Mode.xshd
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/Resources/VB-Mode.xshd
@@ -5,7 +5,7 @@
-
+
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj
index 9fcf69a388..bd58cf2a60 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj
@@ -389,7 +389,7 @@
-
+
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
index 87c470e250..9014451fa4 100755
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
@@ -41,7 +41,7 @@
-
+
@@ -1922,8 +1922,8 @@
class = "ICSharpCode.SharpDevelop.Commands.CSharpConvertBuffer"/>
-
@@ -2447,7 +2447,7 @@
-
+
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 1697a2ebd0..0caf8c929a 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -197,10 +197,13 @@
+
+
+
@@ -592,10 +595,7 @@
-
-
-
@@ -725,7 +725,6 @@
-
diff --git a/src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs b/src/Main/Base/Project/Project/IProjectBinding.cs
similarity index 57%
rename from src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs
rename to src/Main/Base/Project/Project/IProjectBinding.cs
index 119bbe46ed..5cfaf7e517 100644
--- a/src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs
+++ b/src/Main/Base/Project/Project/IProjectBinding.cs
@@ -6,18 +6,17 @@ using System;
namespace ICSharpCode.SharpDevelop.Project
{
///
- /// The IProjectBinding
interface is the base interface
- /// of all project bindings avaiable.
+ /// The IProjectBinding interface is implemented by language binding AddIns
+ /// in order to support project creation/loading.
///
+ ///
public interface IProjectBinding
{
- ///
- /// The language for this project binding.
- ///
- string Language {
- get;
- }
-
+ ///
+ /// Loads a project from disk.
+ ///
+ /// Invalid project file (or other error)
+ /// Error reading from the project file
IProject LoadProject(ProjectLoadInformation info);
///
@@ -25,10 +24,12 @@ namespace ICSharpCode.SharpDevelop.Project
/// Each project binding must provide a representation of the project
/// it 'controls'.
///
+ /// Invalid project file (or other error)
+ /// Error writing new project to disk
IProject CreateProject(ProjectCreateInformation info);
///
- /// 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
///
bool HandlingMissingProject { get; }
diff --git a/src/Main/Base/Project/Project/IProjectService.cs b/src/Main/Base/Project/Project/IProjectService.cs
index 5c76132d70..71b35eed8e 100644
--- a/src/Main/Base/Project/Project/IProjectService.cs
+++ b/src/Main/Base/Project/Project/IProjectService.cs
@@ -142,6 +142,23 @@ namespace ICSharpCode.SharpDevelop.Project
event EventHandler ProjectItemAdded;
event EventHandler ProjectItemRemoved;
+
+ ///
+ /// Gets the list of registered project bindings.
+ ///
+ IReadOnlyList ProjectBindings { get; }
+
+ ///
+ /// Loads a project from disk without opening it in the IDE.
+ ///
+ /// Invalid project file (or other error)
+ /// Error reading from the project file
+ ///
+ /// 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.
+ ///
+ IProject LoadProject(ProjectLoadInformation info);
}
public interface IProjectServiceRaiseEvents
diff --git a/src/Main/Base/Project/Project/ISolutionFolder.cs b/src/Main/Base/Project/Project/ISolutionFolder.cs
index 4b88972a12..40affc9155 100644
--- a/src/Main/Base/Project/Project/ISolutionFolder.cs
+++ b/src/Main/Base/Project/Project/ISolutionFolder.cs
@@ -48,7 +48,7 @@ namespace ICSharpCode.SharpDevelop.Project
///
/// Path to the project file
/// The specified file is not a valid project file
- /// Error reading from the specified project file
+ /// Error reading from the specified project file
IProject AddExistingProject(FileName fileName);
/* if (solutionFolderNode.Solution.SolutionFolders.Any(
diff --git a/src/Main/Base/Project/Project/PortableLibrary/PortableLibraryProjectBehavior.cs b/src/Main/Base/Project/Project/PortableLibrary/PortableLibraryProjectBehavior.cs
index 41fbcf8f91..10dd679fe2 100644
--- a/src/Main/Base/Project/Project/PortableLibrary/PortableLibraryProjectBehavior.cs
+++ b/src/Main/Base/Project/Project/PortableLibrary/PortableLibraryProjectBehavior.cs
@@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Project.PortableLibrary
public override IEnumerable 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 {
diff --git a/src/Main/Base/Project/Project/ProjectBindingDescriptor.cs b/src/Main/Base/Project/Project/ProjectBindingDescriptor.cs
new file mode 100644
index 0000000000..9820ad6a78
--- /dev/null
+++ b/src/Main/Base/Project/Project/ProjectBindingDescriptor.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 ICSharpCode.Core;
+using ICSharpCode.NRefactory.Utils;
+using ICSharpCode.SharpDevelop.Project;
+
+namespace ICSharpCode.SharpDevelop.Project
+{
+ ///
+ /// Represents the registration of a project binding with the project service.
+ ///
+ 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"]);
+ }
+ }
+}
diff --git a/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDoozer.cs b/src/Main/Base/Project/Project/ProjectBindingDoozer.cs
similarity index 93%
rename from src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDoozer.cs
rename to src/Main/Base/Project/Project/ProjectBindingDoozer.cs
index c9e34e32e6..1c02b96cad 100644
--- a/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDoozer.cs
+++ b/src/Main/Base/Project/Project/ProjectBindingDoozer.cs
@@ -5,7 +5,7 @@ using System;
using System.Collections;
using ICSharpCode.Core;
-namespace ICSharpCode.SharpDevelop
+namespace ICSharpCode.SharpDevelop.Project
{
///
/// Creates ProjectBindingDescriptor objects for the project service.
@@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop
///
/// Name of the IProjectBinding class.
///
- /// Only in /SharpDevelop/Workbench/ProjectBinding
+ /// Only in /SharpDevelop/Workbench/ProjectBindings
///
/// A ProjectBindingDescriptor object that wraps the IProjectBinding object.
///
diff --git a/src/Main/Base/Project/Project/Project_TypeGuids.cs b/src/Main/Base/Project/Project/Project_TypeGuids.cs
index c9c9b5ec7c..7c147e1888 100644
--- a/src/Main/Base/Project/Project/Project_TypeGuids.cs
+++ b/src/Main/Base/Project/Project/Project_TypeGuids.cs
@@ -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}");
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceGeneratorOptions.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceGeneratorOptions.cs
index 77ab44cef1..97559d7c66 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceGeneratorOptions.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ServiceReferenceGeneratorOptions.cs
@@ -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";
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs
index 66e4ca3651..bf0f1d63b6 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs
@@ -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
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) {
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
index 19de1fffcd..55a21449b6 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
@@ -43,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
int GetFileFilterIndex(IProject project, IReadOnlyList 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) {
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
index 978f99af5c..1deb4efcf6 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs
@@ -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
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();
}
diff --git a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
index 0fc4508719..feaeb64855 100644
--- a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
+++ b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
@@ -17,6 +17,7 @@ using Microsoft.Build.Construction;
namespace ICSharpCode.SharpDevelop.Project.Converter
{
+ /*
///
/// Converts projects from one language to another, for example C# <-> VB
///
@@ -206,6 +207,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
}
}
}
+*/
/*
public abstract class NRefactoryLanguageConverter : LanguageConverter
@@ -271,6 +273,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
}
*/
+ /*
///
/// Exception used when converting a file fails.
///
@@ -293,4 +296,5 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
{
}
}
+ */
}
diff --git a/src/Main/Base/Project/Src/Project/MSBuildFileProject.cs b/src/Main/Base/Project/Src/Project/MSBuildFileProject.cs
index a357dd47ca..28c52f6116 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildFileProject.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildFileProject.cs
@@ -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 {
diff --git a/src/Main/Base/Project/Src/Project/UnknownProject.cs b/src/Main/Base/Project/Src/Project/UnknownProject.cs
index bd35cb9a08..a9f08fb0e5 100644
--- a/src/Main/Base/Project/Src/Project/UnknownProject.cs
+++ b/src/Main/Base/Project/Src/Project/UnknownProject.cs
@@ -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)
diff --git a/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDescriptor.cs b/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDescriptor.cs
deleted file mode 100644
index 52e384da92..0000000000
--- a/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingDescriptor.cs
+++ /dev/null
@@ -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;
- }
- }
-}
diff --git a/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingService.cs b/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingService.cs
deleted file mode 100644
index 23fcceab0f..0000000000
--- a/src/Main/Base/Project/Src/Services/ProjectBinding/ProjectBindingService.cs
+++ /dev/null
@@ -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 bindings;
-
- static ProjectBindingService()
- {
- bindings = AddInTree.BuildItems("/SharpDevelop/Workbench/ProjectBindings", null, false);
- }
-
- ///
- /// Overwrites the list of used bindings. Used for unit tests.
- ///
- public static void SetBindings(IList 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;
- }
- }
-}
diff --git a/src/Main/Base/Project/Templates/ITemplateService.cs b/src/Main/Base/Project/Templates/ITemplateService.cs
index 639dc7d7ae..d0e1a7c0b0 100644
--- a/src/Main/Base/Project/Templates/ITemplateService.cs
+++ b/src/Main/Base/Project/Templates/ITemplateService.cs
@@ -41,7 +41,7 @@ namespace ICSharpCode.SharpDevelop.Templates
/// File system used to open referenced input files.
/// This should usually be a 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.
///
/// or instance.
/// Invalid file format
diff --git a/src/Main/Base/Project/Util/SharpDevelopExtensions.cs b/src/Main/Base/Project/Util/SharpDevelopExtensions.cs
index 0d5ac25e01..1ad21dde04 100644
--- a/src/Main/Base/Project/Util/SharpDevelopExtensions.cs
+++ b/src/Main/Base/Project/Util/SharpDevelopExtensions.cs
@@ -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;
diff --git a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
index 54375397e1..6cf0f2feef 100644
--- a/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
+++ b/src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
@@ -136,7 +136,7 @@
-
+
diff --git a/src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs b/src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs
index 05f467cf42..e4ffd78dcb 100644
--- a/src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs
+++ b/src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs
@@ -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
{
CreateProjectWithVisualBasicMSBuildProject();
- Assert.AreEqual("VBNet", project.Language);
+ Assert.AreEqual("VB", project.Language);
}
[Test]
diff --git a/src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs b/src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs
index f7279a0afd..7c6febfe88 100644
--- a/src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs
+++ b/src/Main/Base/Test/ServiceReferences/ServiceReferenceGeneratorTests.cs
@@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
void UseVisualBasicProject()
{
- SetProjectLanguage("VBNet");
+ SetProjectLanguage("VB");
}
void SetProjectLanguage(string language)
diff --git a/src/Main/Base/Test/WebReferences/VBNetWebReferenceTest.cs b/src/Main/Base/Test/WebReferences/VBWebReferenceTest.cs
similarity index 94%
rename from src/Main/Base/Test/WebReferences/VBNetWebReferenceTest.cs
rename to src/Main/Base/Test/WebReferences/VBWebReferenceTest.cs
index 4d39c95ddd..f989a887e5 100644
--- a/src/Main/Base/Test/WebReferences/VBNetWebReferenceTest.cs
+++ b/src/Main/Base/Test/WebReferences/VBWebReferenceTest.cs
@@ -18,7 +18,7 @@ namespace ICSharpCode.SharpDevelop.Tests.WebReferences
/// a vb project.
///
[TestFixture]
- public class VBNetWebReferenceTest : SDTestFixtureBase
+ public class VBWebReferenceTest : SDTestFixtureBase
{
Gui.WebReference webReference;
DiscoveryClientProtocol protocol;
@@ -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();
diff --git a/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs b/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs
index 8f919a86d4..220acc470e 100644
--- a/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs
+++ b/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs
@@ -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();
+ var projectBinding = MockRepository.GenerateStrictMock();
+
+ 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 items, string include, ItemType itemType) {
diff --git a/src/Main/SharpDevelop/Project/ProjectService.cs b/src/Main/SharpDevelop/Project/ProjectService.cs
index f4a788a578..19dcc7fcb5 100644
--- a/src/Main/SharpDevelop/Project/ProjectService.cs
+++ b/src/Main/SharpDevelop/Project/ProjectService.cs
@@ -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
{
allSolutions = new NullSafeSimpleModelCollection();
allProjects = allSolutions.SelectMany(s => s.Projects);
+ projectBindings = SD.AddInTree.BuildItems("/SharpDevelop/Workbench/ProjectBindings", null);
SD.GetFutureService().ContinueWith(t => t.Result.ActiveViewContentChanged += ActiveViewContentChanged);
@@ -364,5 +367,44 @@ namespace ICSharpCode.SharpDevelop.Project
ProjectItemRemoved(this, e);
}
#endregion
+
+ #region Project Bindings
+ readonly IReadOnlyList projectBindings;
+
+ public IReadOnlyList 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
}
}
diff --git a/src/Main/SharpDevelop/Project/SolutionFolder.cs b/src/Main/SharpDevelop/Project/SolutionFolder.cs
index 89044a17a5..92f3f9392f 100644
--- a/src/Main/SharpDevelop/Project/SolutionFolder.cs
+++ b/src/Main/SharpDevelop/Project/SolutionFolder.cs
@@ -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();
diff --git a/src/Main/SharpDevelop/Project/SolutionLoader.cs b/src/Main/SharpDevelop/Project/SolutionLoader.cs
index f1fb59aa30..8fb6a39d5f 100644
--- a/src/Main/SharpDevelop/Project/SolutionLoader.cs
+++ b/src/Main/SharpDevelop/Project/SolutionLoader.cs
@@ -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
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
diff --git a/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs b/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs
index 1292e061ec..fe0f465c7b 100644
--- a/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs
+++ b/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs
@@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop.Templates
/// Creates a project descriptor for the project node specified by the xml element.
///
/// The <Project> node of the xml template file.
- /// The directory on which relative paths (e.g. for referenced files) are based.
+ /// The file system from which referenced files are loaded. Use a ChrootFileSystem to specify the base directory for relative paths.
public ProjectDescriptor(XmlElement element, IReadOnlyFileSystem fileSystem)
{
if (element == null)
@@ -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
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
}
}
- info.TypeGuid = descriptor.Guid;
+ info.TypeGuid = descriptor.TypeGuid;
info.RootNamespace = standardNamespace.ToString();
info.ProjectName = newProjectName;
if (!string.IsNullOrEmpty(defaultPlatform))