Browse Source

Fixed code completion for VB.NET. Implemented LanguageProperties to control case sensivity for project content.

Fixed solution loading to first create all project contents and then create the references to each other.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@130 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
d0400c2e1d
  1. 2
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 2
      data/templates/file/CSharp/CSharp.Forms.Form.xft
  3. 2
      data/templates/file/VBNet/VBNet.Forms.Form.xft
  4. 4
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs
  5. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
  6. 19
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
  7. 9
      src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin
  8. 1
      src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
  9. 23
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs
  10. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  11. 4
      src/Main/Base/Project/Src/Dom/IClass.cs
  12. 6
      src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
  13. 6
      src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs
  14. 45
      src/Main/Base/Project/Src/Dom/LanguageProperties.cs
  15. 5
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  16. 95
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  17. 2
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
  18. 12
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  19. 4
      src/Main/Base/Project/Src/Project/IProject.cs
  20. 227
      src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
  21. 11
      src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs
  22. 54
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  23. 9
      src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs
  24. 5
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs
  25. 4
      src/Main/Base/Test/NRefactoryResolverTests.cs
  26. 82
      src/SharpDevelop.sln

2
AddIns/ICSharpCode.SharpDevelop.addin

@ -1415,7 +1415,7 @@ @@ -1415,7 +1415,7 @@
</Condition>
</Path>
<Path name = "/AddIns/DefaultTextEditor/Formater">
<Path name = "/AddIns/DefaultTextEditor/Formatter">
<Condition name = "TextContent" textcontent = "XML">
<Class id ="XmlFormatter" class = "ICSharpCode.SharpDevelop.DefaultEditor.XmlFormattingStrategy"/>
</Condition>

2
data/templates/file/CSharp/CSharp.Forms.Form.xft

@ -57,7 +57,7 @@ namespace ${StandardNamespace} @@ -57,7 +57,7 @@ namespace ${StandardNamespace}
//
// ${ClassName}
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Text = "${ClassName}";
this.Name = "${ClassName}";

2
data/templates/file/VBNet/VBNet.Forms.Form.xft

@ -51,7 +51,7 @@ Namespace ${StandardNamespace} @@ -51,7 +51,7 @@ Namespace ${StandardNamespace}
'
'${ClassName}
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Name = "${ClassName}"
Me.Text = "${ClassName}"

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

@ -109,7 +109,7 @@ namespace VBNetBinding.Parser @@ -109,7 +109,7 @@ namespace VBNetBinding.Parser
public ICompilationUnit Parse(IProjectContent projectContent, string fileName, string fileContent)
{
using (ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp, new StringReader(fileContent))) {
using (ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet, new StringReader(fileContent))) {
p.Lexer.SpecialCommentTags = lexerTags;
p.Parse();
@ -138,7 +138,7 @@ namespace VBNetBinding.Parser @@ -138,7 +138,7 @@ namespace VBNetBinding.Parser
public IResolver CreateResolver()
{
return new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp);
return new ICSharpCode.SharpDevelop.Dom.NRefactoryResolver.NRefactoryResolver(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet);
}
///////// IParser Interface END
}

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

@ -221,6 +221,7 @@ namespace VBNetBinding @@ -221,6 +221,7 @@ namespace VBNetBinding
{
this.Name = projectName;
Language = "VBNet";
LanguageProperties = ICSharpCode.SharpDevelop.Dom.LanguageProperties.VBNet;
SetupProject(fileName);
IdGuid = BaseConfiguration["ProjectGuid"];
}
@ -228,6 +229,7 @@ namespace VBNetBinding @@ -228,6 +229,7 @@ namespace VBNetBinding
public VBNetProject(ProjectCreateInformation info)
{
Language = "VBNet";
LanguageProperties = ICSharpCode.SharpDevelop.Dom.LanguageProperties.VBNet;
Create(info);
imports.Add(@"$(MSBuildBinPath)\Microsoft.VisualBasic.Targets");
}

19
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version value="$version"/>
// </file>
using System;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
namespace VBNetBinding
{
public class VBNetCompletionBinding : DefaultCodeCompletionBinding
{
public VBNetCompletionBinding() : base(".vb")
{
}
}
}

9
src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin

@ -53,8 +53,13 @@ @@ -53,8 +53,13 @@
class = "ICSharpCode.SharpDevelop.Gui.OptionPanels.Publish"/>
</Path>
<Path name = "/AddIns/DefaultTextEditor/Formatter/VBNet">
<Class id ="VBNetFormatter" insertbefore="DefaultFormatter" class = "CSharpBinding.FormattingStrategy.VBNetFormattingStrategy"/>
<Path name = "/AddIns/DefaultTextEditor/CodeCompletion">
<Class id = "VBNetCompletionBinding"
class = "VBNetBinding.VBNetCompletionBinding"/>
</Path>
<Path name = "/AddIns/DefaultTextEditor/Formatter/VBNET">
<Class id ="VBNetFormatter" insertbefore="DefaultFormatter" class = "VBNetBinding.FormattingStrategy.VBFormattingStrategy"/>
</Path>
<Path name = "/Workspace/Icons">

1
src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj

@ -53,6 +53,7 @@ @@ -53,6 +53,7 @@
<None Include="VBNetBinding.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Compile Include="Src\VBNetCompletionBinding.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj">

23
src/Libraries/NRefactory/Project/Src/Parser/Visitors/LookupTableVisitor.cs

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
using System;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using ICSharpCode.NRefactory.Parser.AST;
@ -38,18 +38,29 @@ namespace ICSharpCode.NRefactory.Parser @@ -38,18 +38,29 @@ namespace ICSharpCode.NRefactory.Parser
public class LookupTableVisitor : AbstractASTVisitor
{
public Hashtable variables = new Hashtable();
Dictionary<string, List<LocalLookupVariable>> variables;
public Dictionary<string, List<LocalLookupVariable>> Variables {
get {
return variables;
}
}
public LookupTableVisitor(StringComparer nameComparer)
{
variables = new Dictionary<string, List<LocalLookupVariable>>(nameComparer);
}
public void AddVariable(TypeReference typeRef, string name, Point startPos, Point endPos)
{
if (name == null || name.Length == 0) {
return;
}
ArrayList list;
if (variables[name] == null) {
variables[name] = list = new ArrayList();
List<LocalLookupVariable> list;
if (!variables.ContainsKey(name)) {
variables[name] = list = new List<LocalLookupVariable>();
} else {
list = (ArrayList)variables[name];
list = (List<LocalLookupVariable>)variables[name];
}
list.Add(new LocalLookupVariable(typeRef, startPos, endPos));
}

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

@ -645,6 +645,7 @@ @@ -645,6 +645,7 @@
<Compile Include="Src\Dom\Implementations\GenericReturnType.cs" />
<Compile Include="Src\Dom\Implementations\ArrayReturnType.cs" />
<Compile Include="Src\Dom\Implementations\SpecificReturnType.cs" />
<Compile Include="Src\Dom\LanguageProperties.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

4
src/Main/Base/Project/Src/Dom/IClass.cs

@ -99,9 +99,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -99,9 +99,9 @@ namespace ICSharpCode.SharpDevelop.Dom
}
IClass GetInnermostClass(int caretLine, int caretColumn);
List<IClass> GetAccessibleTypes(IClass callingClass);
//List<IClass> GetAccessibleTypes(IClass callingClass);
bool IsTypeInInheritanceTree(IClass possibleBaseClass);
//bool IsTypeInInheritanceTree(IClass possibleBaseClass);
//IMember SearchMember(string memberName);

6
src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs

@ -273,6 +273,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -273,6 +273,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
/*
public bool IsTypeInInheritanceTree(IClass possibleBaseClass)
{
if (possibleBaseClass == null) {
@ -291,7 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -291,7 +292,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
return false;
}
*/
/*
public IMember SearchMember(string memberName)
{
@ -358,6 +359,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -358,6 +359,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return this;
}
/*
public List<IClass> GetAccessibleTypes(IClass callingClass)
{
List<IClass> types = new List<IClass>();
@ -376,7 +378,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -376,7 +378,7 @@ namespace ICSharpCode.SharpDevelop.Dom
return types;
}
/*
public ArrayList GetAccessibleMembers(IClass callingClass, bool showStatic)
{
ArrayList members = new ArrayList();

6
src/Main/Base/Project/Src/Dom/Implementations/DefaultReturnType.cs

@ -34,8 +34,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -34,8 +34,12 @@ namespace ICSharpCode.SharpDevelop.Dom
if (bc.ClassType == ClassType.Interface && c.ClassType != ClassType.Interface)
continue; // ignore explicit interface implementations
// do not add methods that were overridden
foreach (IMethod m in bc.Methods) {
// do not add base class constructors
if (m.IsConstructor && c != bc)
continue;
// do not add methods that were overridden
bool ok = true;
foreach (IMethod oldMethod in l) {
if (string.Equals(oldMethod.Name, m.Name, StringComparison.InvariantCultureIgnoreCase)) {

45
src/Main/Base/Project/Src/Dom/LanguageProperties.cs

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
// <version value="$version"/>
// </file>
using System;
namespace ICSharpCode.SharpDevelop.Dom
{
public class LanguageProperties
{
public readonly static LanguageProperties CSharp = new LanguageProperties(StringComparer.InvariantCulture);
public readonly static LanguageProperties VBNet = new VBNetProperties();
private class VBNetProperties : LanguageProperties
{
public VBNetProperties() : base(StringComparer.InvariantCultureIgnoreCase) {}
public override bool ShowMember(IMember member, bool showStatic)
{
return member.IsStatic || !showStatic;
}
}
StringComparer nameComparer;
public LanguageProperties(StringComparer nameComparer)
{
this.nameComparer = nameComparer;
}
public StringComparer NameComparer {
get {
return nameComparer;
}
}
public virtual bool ShowMember(IMember member, bool showStatic)
{
return member.IsStatic == showStatic;
}
}
}

5
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -37,7 +37,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -37,7 +37,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
ModifierEnum ConvertModifier(AST.Modifier m)
{
return ConvertModifier(m, ModifierEnum.Private);
if (currentClass.Count > 0 && currentClass.Peek().ClassType == ClassType.Interface)
return ConvertModifier(m, ModifierEnum.Public);
else
return ConvertModifier(m, ModifierEnum.Private);
}
ModifierEnum ConvertModifier(AST.Modifier m, ModifierEnum defaultModifier)

95
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -25,8 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -25,8 +25,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
ICSharpCode.NRefactory.Parser.LookupTableVisitor lookupTableVisitor;
IProjectContent projectContent = null;
bool caseSensitive = true;
SupportedLanguages language = SupportedLanguages.CSharp;
SupportedLanguages language;
int caretLine;
int caretColumn;
@ -70,19 +69,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -70,19 +69,25 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
LanguageProperties languageProperties;
public LanguageProperties LanguageProperties {
get {
return languageProperties;
}
}
public NRefactoryResolver(SupportedLanguages language)
{
this.language = language;
this.projectContent = ParserService.CurrentProjectContent;
}
bool IsCaseSensitive(SupportedLanguages language)
{
switch (language) {
case SupportedLanguages.CSharp:
return true;
languageProperties = LanguageProperties.CSharp;
break;
case SupportedLanguages.VBNet:
return false;
languageProperties = LanguageProperties.VBNet;
break;
default:
throw new NotSupportedException("The language " + language + " is not supported in the resolver");
}
@ -93,15 +98,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -93,15 +98,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
int caretColumn,
string fileName)
{
caseSensitive = IsCaseSensitive(language);
if (expression == null) {
expression = "";
}
expression = expression.TrimStart(null);
if (!caseSensitive) {
expression = expression.ToLower();
}
this.caretLine = caretLineNumber;
this.caretColumn = caretColumn;
@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -132,7 +132,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
}
lookupTableVisitor = new LookupTableVisitor();
lookupTableVisitor = new LookupTableVisitor(languageProperties.NameComparer);
lookupTableVisitor.Visit(fileCompilationUnit, null);
NRefactoryASTConvertVisitor cSharpVisitor = new NRefactoryASTConvertVisitor(parseInfo.MostRecentCompilationUnit != null ? parseInfo.MostRecentCompilationUnit.ProjectContent : null);
@ -312,11 +312,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -312,11 +312,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
bool IsSameName(string name1, string name2)
{
if (IsCaseSensitive(language)) {
return name1 == name2;
} else {
return name1.ToLower() == name2.ToLower();
}
return languageProperties.NameComparer.Equals(name1, name2);
}
bool IsInside(Point between, Point start, Point end)
@ -406,34 +402,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -406,34 +402,6 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
#endregion
#region SearchIndexer
public ArrayList SearchIndexer(IReturnType type)
{
// TODO: indexer for arrays
IClass curType = SearchType(type.FullyQualifiedName, null, null);
return SearchIndexer(new ArrayList(), curType);
}
ArrayList SearchIndexer(ArrayList indexer, IClass curType)
{
if (curType == null)
return indexer;
bool isClassInInheritanceTree = false;
if (callingClass != null)
isClassInInheritanceTree = callingClass.IsTypeInInheritanceTree(curType);
foreach (IIndexer i in curType.Indexer) {
if (i.MustBeShown(callingClass, true, isClassInInheritanceTree) && !((i.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) {
indexer.Add(i);
}
}
IClass baseClass = curType.BaseClass;
if (baseClass != null) {
return SearchIndexer(indexer, baseClass);
}
return indexer;
}
#endregion
#region SearchMember
// no methods or indexer
public IReturnType SearchMember(IReturnType type, string memberName)
@ -552,8 +520,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -552,8 +520,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
LocalLookupVariable SearchVariable(string name)
{
ArrayList variables = (ArrayList)lookupTableVisitor.variables[IsCaseSensitive(language) ? name : name.ToLower()];
if (variables == null || variables.Count <= 0) {
if (!lookupTableVisitor.Variables.ContainsKey(name))
return null;
List<LocalLookupVariable> variables = lookupTableVisitor.Variables[name];
if (variables.Count <= 0) {
return null;
}
@ -569,16 +539,21 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -569,16 +539,21 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public ArrayList CtrlSpace(int caretLine, int caretColumn, string fileName)
{
if (!IsCaseSensitive(language)) {
caseSensitive = false;
ArrayList result;
if (language == SupportedLanguages.VBNet) {
result = new ArrayList();
foreach (string primitive in TypeReference.GetPrimitiveTypesVB()) {
result.Add(Char.ToUpper(primitive[0]) + primitive.Substring(1));
}
} else {
result = new ArrayList(TypeReference.GetPrimitiveTypes());
}
ArrayList result = new ArrayList(TypeReference.GetPrimitiveTypes());
ParseInformation parseInfo = ParserService.GetParseInformation(fileName);
ICSharpCode.NRefactory.Parser.AST.CompilationUnit fileCompilationUnit = parseInfo.MostRecentCompilationUnit.Tag as ICSharpCode.NRefactory.Parser.AST.CompilationUnit;
if (fileCompilationUnit == null) {
return null;
}
lookupTableVisitor = new LookupTableVisitor();
lookupTableVisitor = new LookupTableVisitor(languageProperties.NameComparer);
lookupTableVisitor.Visit(fileCompilationUnit, null);
NRefactoryASTConvertVisitor cSharpVisitor = new NRefactoryASTConvertVisitor(parseInfo.MostRecentCompilationUnit != null ? parseInfo.MostRecentCompilationUnit.ProjectContent : null);
@ -602,20 +577,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -602,20 +577,18 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
//}
}
}
foreach (string name in lookupTableVisitor.variables.Keys) {
ArrayList variables = (ArrayList)lookupTableVisitor.variables[name];
if (variables != null && variables.Count > 0) {
foreach (LocalLookupVariable v in variables) {
foreach (KeyValuePair<string, List<LocalLookupVariable>> pair in lookupTableVisitor.Variables) {
if (pair.Value != null && pair.Value.Count > 0) {
foreach (LocalLookupVariable v in pair.Value) {
if (IsInside(new Point(caretColumn, caretLine), v.StartPos, v.EndPos)) {
// LocalLookupVariable in no known Type in DisplayBindings.TextEditor
// so add Field for the Variables
result.Add(new DefaultField(TypeVisitor.CreateReturnType(v.TypeRef, this), name, ModifierEnum.None, new DefaultRegion(v.StartPos, v.EndPos), callingClass));
// convert to a field for display
result.Add(new DefaultField(TypeVisitor.CreateReturnType(v.TypeRef, this), pair.Key, ModifierEnum.None, new DefaultRegion(v.StartPos, v.EndPos), callingClass));
break;
}
}
}
}
result.AddRange(projectContent.GetNamespaceContents(""));
projectContent.AddNamespaceContents(result, "", languageProperties, true);
foreach (IUsing u in cu.Usings) {
if (u != null) {
foreach (string name in u.Usings) {

2
src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs

@ -377,7 +377,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -377,7 +377,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
static IReturnType WrapArray(IReturnType t, TypeReference reference)
{
if (reference.IsArrayType) {
for (int i = 0; i < reference.RankSpecifier.Length; ++i) {
for (int i = reference.RankSpecifier.Length - 1; i >= 0; --i) {
t = new ArrayReturnType(t, reference.RankSpecifier[i] + 1);
}
}

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

@ -121,6 +121,18 @@ namespace ICSharpCode.SharpDevelop.Project @@ -121,6 +121,18 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
ICSharpCode.SharpDevelop.Dom.LanguageProperties languageProperties = ICSharpCode.SharpDevelop.Dom.LanguageProperties.CSharp;
[Browsable(false)]
public ICSharpCode.SharpDevelop.Dom.LanguageProperties LanguageProperties {
get {
return languageProperties;
}
set {
languageProperties = value;
}
}
[Browsable(false)]
public string Configuration {
get {

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

@ -32,6 +32,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -32,6 +32,10 @@ namespace ICSharpCode.SharpDevelop.Project
get;
}
ICSharpCode.SharpDevelop.Dom.LanguageProperties LanguageProperties {
get;
}
string FileName {
get;
}

227
src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs

@ -22,23 +22,67 @@ using ICSharpCode.SharpDevelop.Dom; @@ -22,23 +22,67 @@ using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.Core
{
public class CaseSensitiveProjectContent : IProjectContent
public class DefaultProjectContent : IProjectContent
{
List<IProjectContent> referencedContents = new List<IProjectContent>();
Dictionary<string, IClass> classes = new Dictionary<string, IClass>();
List<Dictionary<string, IClass>> classLists = new List<Dictionary<string, IClass>>();
Hashtable namespaces = new Hashtable();
XmlDoc xmlDoc = new XmlDoc();
public List<Dictionary<string, IClass>> ClassLists {
get {
if (classLists.Count == 0) {
classLists.Add(new Dictionary<string, IClass>(language.NameComparer));
}
return classLists;
}
}
Dictionary<string, IClass> GetClasses(LanguageProperties language)
{
for (int i = 0; i < classLists.Count; ++i) {
if (classLists[i].Comparer == language.NameComparer)
return classLists[i];
}
Dictionary<string, IClass> d;
if (classLists.Count > 0) {
Dictionary<string, IClass> oldList = classLists[0];
d = new Dictionary<string, IClass>(oldList.Count, language.NameComparer);
foreach (KeyValuePair<string, IClass> pair in oldList) {
d.Add(pair.Key, pair.Value);
}
} else {
d = new Dictionary<string, IClass>(language.NameComparer);
}
classLists.Add(d);
return d;
}
public XmlDoc XmlDoc {
get {
return xmlDoc;
}
}
public ICollection<IClass> Classes {
get {
return classes.Values;
return ClassLists[0].Values;
}
}
LanguageProperties language = LanguageProperties.CSharp;
/// <summary>
/// Gets the properties of the language this project content was written in.
/// </summary>
public LanguageProperties Language {
get {
return language;
}
set {
if (value == null) throw new ArgumentNullException();
language = value;
}
}
@ -70,13 +114,13 @@ namespace ICSharpCode.Core @@ -70,13 +114,13 @@ namespace ICSharpCode.Core
public static IProjectContent Create(Assembly assembly)
{
CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent();
DefaultProjectContent newProjectContent = new DefaultProjectContent();
ICompilationUnit assemblyCompilationUnit = new DefaultCompilationUnit(newProjectContent);
foreach (Type type in assembly.GetTypes()) {
if (!type.FullName.StartsWith("<") && type.IsPublic) {
newProjectContent.AddClassToNamespaceList(new ReflectionClass(assemblyCompilationUnit, type, null));
newProjectContent.AddClassToNamespaceListInternal(new ReflectionClass(assemblyCompilationUnit, type, null));
}
}
string fileName = LookupLocalizedXmlDoc(assembly.Location);
@ -93,44 +137,78 @@ namespace ICSharpCode.Core @@ -93,44 +137,78 @@ namespace ICSharpCode.Core
return newProjectContent;
}
public static IProjectContent Create(IProject project)
internal static IProjectContent CreateUninitalized(IProject project)
{
CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent();
DefaultProjectContent newProjectContent = new DefaultProjectContent();
newProjectContent.project = project;
newProjectContent.language = project.LanguageProperties;
newProjectContent.referencedContents.Add(ProjectContentRegistry.GetMscorlibContent());
return newProjectContent;
}
public static IProjectContent Create(IProject project)
{
IProjectContent newProjectContent = CreateUninitalized(project);
if (newProjectContent is DefaultProjectContent) {
((DefaultProjectContent)newProjectContent).Initialize1();
((DefaultProjectContent)newProjectContent).Initialize2();
}
return newProjectContent;
}
IProject project;
// project is only used for initialization, the field is set to null after
// initialization has completed.
internal void Initialize1()
{
foreach (ProjectItem item in project.Items.ToArray()) {
switch (item.ItemType) {
case ItemType.Reference:
case ItemType.ProjectReference:
IProjectContent referencedContent = ProjectContentRegistry.GetProjectContentForReference(item as ReferenceProjectItem);
if (referencedContent != null) {
newProjectContent.referencedContents.Add(referencedContent);
}
break;
case ItemType.Compile:
ParseInformation parseInfo = ParserService.ParseFile(item.FileName, null, true, false);
if (parseInfo != null) {
newProjectContent.UpdateCompilationUnit(null, parseInfo.BestCompilationUnit as ICompilationUnit, item.FileName, true);
referencedContents.Add(referencedContent);
}
break;
}
}
return newProjectContent;
}
internal void Initialize2()
{
foreach (ProjectItem item in project.Items.ToArray()) {
if (item.ItemType == ItemType.Compile) {
ParseInformation parseInfo = ParserService.ParseFile(item.FileName, null, true, false);
if (parseInfo != null) {
UpdateCompilationUnit(null, parseInfo.BestCompilationUnit as ICompilationUnit, item.FileName, true);
}
}
}
project = null;
}
public Hashtable AddClassToNamespaceList(IClass addClass)
{
classes[addClass.FullyQualifiedName] = addClass;
lock (namespaces) {
return AddClassToNamespaceListInternal(addClass);
}
}
Hashtable AddClassToNamespaceListInternal(IClass addClass)
{
foreach (Dictionary<string, IClass> classes in ClassLists) {
classes[addClass.FullyQualifiedName] = addClass;
}
string nSpace = addClass.Namespace;
if (nSpace == null) {
nSpace = String.Empty;
}
string[] path = nSpace.Split('.');
Hashtable cur = namespaces;
lock (namespaces) {
Hashtable cur = namespaces;
if (nSpace.Length > 0) {
string[] path = nSpace.Split('.');
for (int i = 0; i < path.Length; ++i) {
object curPath = cur[path[i]];
if (curPath == null) {
@ -143,12 +221,12 @@ namespace ICSharpCode.Core @@ -143,12 +221,12 @@ namespace ICSharpCode.Core
}
cur = (Hashtable)curPath;
}
string name = addClass.Name == null ? "" : addClass.Name;
cur[name] = addClass;
return cur;
}
string name = addClass.Name == null ? "" : addClass.Name;
cur[name] = addClass;
return cur;
}
public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags)
@ -158,53 +236,66 @@ namespace ICSharpCode.Core @@ -158,53 +236,66 @@ namespace ICSharpCode.Core
TaskService.UpdateCommentTags(fileName, parserOutput.TagComments);
}
if (oldUnit != null) {
RemoveClasses(oldUnit);
}
ICompilationUnit cu = (ICompilationUnit)parserOutput;
foreach (IClass c in cu.Classes) {
AddClassToNamespaceList(c);
lock (namespaces) {
if (oldUnit != null) {
RemoveClasses(oldUnit);
}
ICompilationUnit cu = (ICompilationUnit)parserOutput;
foreach (IClass c in cu.Classes) {
AddClassToNamespaceListInternal(c);
}
}
}
void RemoveClasses(ICompilationUnit cu)
{
if (cu != null) {
lock (classes) {
foreach (IClass c in cu.Classes) {
foreach (IClass c in cu.Classes) {
foreach (Dictionary<string, IClass> classes in ClassLists) {
classes.Remove(c.FullyQualifiedName);
}
}
// TODO: remove classes from namespace lists
}
}
#region Default Parser Layer dependent functions
public IClass GetClass(string typeName)
{
return GetClass(typeName, language, true);
}
public IClass GetClass(string typeName, LanguageProperties language, bool lookInReferences)
{
// Console.WriteLine("GetClass({0}) is known:{1}", typeName, classes.ContainsKey(typeName));
Dictionary<string, IClass> classes = GetClasses(language);
if (classes.ContainsKey(typeName)) {
return classes[typeName];
}
// Search in references:
foreach (IProjectContent content in referencedContents) {
IClass classFromContent = content.GetClass(typeName);
if (classFromContent != null) {
return classFromContent;
if (lookInReferences) {
foreach (IProjectContent content in referencedContents) {
IClass classFromContent = content.GetClass(typeName, language, false);
if (classFromContent != null) {
return classFromContent;
}
}
}
// not found -> maybe nested type -> trying to find class that contains this one.
int lastIndex = typeName.LastIndexOf('.');
if (lastIndex > 0) {
string innerName = typeName.Substring(lastIndex + 1);
string outerName = typeName.Substring(0, lastIndex);
IClass upperClass = GetClass(outerName);
if (upperClass != null && upperClass.InnerClasses != null) {
foreach (IClass c in upperClass.InnerClasses) {
if (c.Name == innerName) {
return c;
if (classes.ContainsKey(outerName)) {
IClass upperClass = classes[outerName];
if (upperClass.InnerClasses != null) {
string innerName = typeName.Substring(lastIndex + 1);
foreach (IClass c in upperClass.InnerClasses) {
if (language.NameComparer.Equals(c.Name, innerName)) {
return c;
}
}
}
}
@ -215,18 +306,19 @@ namespace ICSharpCode.Core @@ -215,18 +306,19 @@ namespace ICSharpCode.Core
public ArrayList GetNamespaceContents(string subNameSpace)
{
ArrayList namespaceList = new ArrayList();
AddNamespaceContents(namespaceList, subNameSpace, language, true);
return namespaceList;
}
public void AddNamespaceContents(ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences)
{
if (subNameSpace == null) {
return namespaceList;
return;
}
foreach (IProjectContent content in referencedContents) {
foreach (object o in content.GetNamespaceContents(subNameSpace)) {
if (o is string) {
if (!namespaceList.Contains(o))
namespaceList.Add(o);
} else {
namespaceList.Add(o);
}
if (lookInReferences) {
foreach (IProjectContent content in referencedContents) {
content.AddNamespaceContents(list, subNameSpace, language, false);
}
}
@ -237,7 +329,7 @@ namespace ICSharpCode.Core @@ -237,7 +329,7 @@ namespace ICSharpCode.Core
for (int i = 0; i < path.Length; ++i) {
if (!(cur[path[i]] is Hashtable)) {
// namespace does not exist in this project content
return namespaceList;
return;
}
cur = (Hashtable)cur[path[i]];
}
@ -245,26 +337,31 @@ namespace ICSharpCode.Core @@ -245,26 +337,31 @@ namespace ICSharpCode.Core
foreach (DictionaryEntry entry in cur) {
if (entry.Value is Hashtable) {
if (!namespaceList.Contains(entry.Key))
namespaceList.Add(entry.Key);
if (!list.Contains(entry.Key))
list.Add(entry.Key);
} else {
namespaceList.Add(entry.Value);
if (!list.Contains(entry.Value))
list.Add(entry.Value);
}
}
return namespaceList;
}
public bool NamespaceExists(string name)
{
// Console.WriteLine("NamespaceExists({0}) == ", name);
return NamespaceExists(name, language, true);
}
public bool NamespaceExists(string name, LanguageProperties language, bool lookInReferences)
{
if (name == null) {
return false;
}
foreach (IProjectContent content in referencedContents) {
if (content.NamespaceExists(name)) {
return true;
if (lookInReferences) {
foreach (IProjectContent content in referencedContents) {
if (content.NamespaceExists(name, language, false)) {
return true;
}
}
}

11
src/Main/Base/Project/Src/Services/ParserService/IProjectContent.cs

@ -32,6 +32,13 @@ namespace ICSharpCode.Core @@ -32,6 +32,13 @@ namespace ICSharpCode.Core
get;
}
/// <summary>
/// Gets the properties of the language this project content was written in.
/// </summary>
LanguageProperties Language {
get;
}
string GetXmlDocumentation(string memberTag);
Hashtable AddClassToNamespaceList(IClass addClass);
@ -41,6 +48,10 @@ namespace ICSharpCode.Core @@ -41,6 +48,10 @@ namespace ICSharpCode.Core
bool NamespaceExists(string name);
ArrayList GetNamespaceContents(string subNameSpace);
IClass GetClass(string typeName, LanguageProperties language, bool lookInReferences);
bool NamespaceExists(string name, LanguageProperties language, bool lookInReferences);
void AddNamespaceContents(ArrayList list, string subNameSpace, LanguageProperties language, bool lookInReferences);
string SearchNamespace(string name, ICompilationUnit unit, int caretLine, int caretColumn);
IClass SearchType(string name, IClass curType, int caretLine, int caretColumn);
IClass SearchType(string name, IClass curType, ICompilationUnit unit, int caretLine, int caretColumn);

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

@ -39,7 +39,7 @@ namespace ICSharpCode.Core @@ -39,7 +39,7 @@ namespace ICSharpCode.Core
public static IProjectContent CurrentProjectContent {
get {
if (ProjectService.CurrentProject == null || !projectContents.ContainsKey(ProjectService.CurrentProject)) {
return new CaseSensitiveProjectContent();
return defaultProjectContent;
}
return projectContents[ProjectService.CurrentProject];
}
@ -74,17 +74,37 @@ namespace ICSharpCode.Core @@ -74,17 +74,37 @@ namespace ICSharpCode.Core
static void LoadSolutionProjects()
{
List<DefaultProjectContent> createdContents = new List<DefaultProjectContent>();
foreach (IProject project in ProjectService.OpenSolution.Projects) {
try {
IProjectContent newContent = CaseSensitiveProjectContent.Create(project);
IProjectContent newContent = DefaultProjectContent.CreateUninitalized(project);
lock (projectContents) {
projectContents[project] = newContent;
}
if (newContent is DefaultProjectContent) {
createdContents.Add((DefaultProjectContent)newContent);
}
} catch (Exception e) {
Console.WriteLine("Error while retrieving project contents from {0}:", project);
ICSharpCode.Core.MessageService.ShowError(e);
}
}
foreach (DefaultProjectContent newContent in createdContents) {
try {
newContent.Initialize1();
} catch (Exception e) {
Console.WriteLine("Error while initializing project references:" + newContent);
ICSharpCode.Core.MessageService.ShowError(e);
}
}
foreach (DefaultProjectContent newContent in createdContents) {
try {
newContent.Initialize2();
} catch (Exception e) {
Console.WriteLine("Error while initializing project contents:" + newContent);
ICSharpCode.Core.MessageService.ShowError(e);
}
}
}
public static IProjectContent GetProjectContent(IProject project)
@ -190,7 +210,7 @@ namespace ICSharpCode.Core @@ -190,7 +210,7 @@ namespace ICSharpCode.Core
return null;
}
static IProjectContent defaultProjectContent = new CaseSensitiveProjectContent();
static IProjectContent defaultProjectContent = new DefaultProjectContent();
public static ParseInformation ParseFile(string fileName, string fileContent, bool updateCommentTags, bool fireUpdate)
{
@ -256,8 +276,8 @@ namespace ICSharpCode.Core @@ -256,8 +276,8 @@ namespace ICSharpCode.Core
if (fireEvent) {
try {
OnParseInformationUpdated(new ParseInformationEventArgs(fileName, parseInformation, parserOutput));
} catch (Exception e) {
Console.WriteLine(e);
} catch (Exception e) {
Console.WriteLine(e);
}
}
@ -270,7 +290,7 @@ namespace ICSharpCode.Core @@ -270,7 +290,7 @@ namespace ICSharpCode.Core
return parseInformation;
}
public static ParseInformation GetParseInformation(string fileName)
{
@ -322,19 +342,19 @@ namespace ICSharpCode.Core @@ -322,19 +342,19 @@ namespace ICSharpCode.Core
}
public static ResolveResult Resolve(string expression,
int caretLineNumber,
int caretColumn,
string fileName,
string fileContent)
int caretLineNumber,
int caretColumn,
string fileName,
string fileContent)
{
// added exception handling here to prevent silly parser exceptions from
// being thrown and corrupting the textarea control
//try {
IParser parser = GetParser(fileName);
if (parser != null) {
return parser.CreateResolver().Resolve(expression, caretLineNumber, caretColumn, fileName);
}
return null;
IParser parser = GetParser(fileName);
if (parser != null) {
return parser.CreateResolver().Resolve(expression, caretLineNumber, caretColumn, fileName);
}
return null;
//} catch {
// return null;
//}
@ -355,13 +375,13 @@ namespace ICSharpCode.Core @@ -355,13 +375,13 @@ namespace ICSharpCode.Core
// {
// List<IComment> miscComments = new List<IComment>();
// List<IComment> dokuComments = new List<IComment>();
//
//
// public override List<IComment> MiscComments {
// get {
// return miscComments;
// }
// }
//
//
// public override List<IComment> DokuComments {
// get {
// return dokuComments;

9
src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.Core @@ -31,7 +31,7 @@ namespace ICSharpCode.Core
if (contents.ContainsKey("mscorlib")) {
return contents["mscorlib"];
}
contents["mscorlib"] = CaseSensitiveProjectContent.Create(typeof(object).Assembly);
contents["mscorlib"] = DefaultProjectContent.Create(typeof(object).Assembly);
return contents["mscorlib"];
}
@ -47,24 +47,27 @@ namespace ICSharpCode.Core @@ -47,24 +47,27 @@ namespace ICSharpCode.Core
return contents[item.Include];
}
int time = Environment.TickCount;
Assembly assembly = null;
try {
assembly = Assembly.ReflectionOnlyLoadFrom(item.FileName);
if (assembly != null) {
contents[item.FileName] = CaseSensitiveProjectContent.Create(assembly);
contents[item.FileName] = DefaultProjectContent.Create(assembly);
return contents[item.FileName];
}
} catch (Exception) {
try {
assembly = LoadGACAssembly(item.Include, true);
if (assembly != null) {
contents[item.Include] = CaseSensitiveProjectContent.Create(assembly);
contents[item.Include] = DefaultProjectContent.Create(assembly);
return contents[item.Include];
}
} catch (Exception e) {
Console.WriteLine("Can't load assembly '{0}' : " + e.Message, item.Include);
}
} finally {
Console.WriteLine("Loaded {0} in {1}ms", item.Include, Environment.TickCount - time);
}
return null;

5
src/Main/Base/Project/Src/TextEditor/Gui/Editor/InsightWindow/MethodInsightDataProvider.cs

@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
if (result == null)
return;
foreach (IMethod method in result.ResolvedType.GetMethods()) {
if (method.IsConstructor) {
if (method.IsConstructor && !method.IsStatic) {
methods.Add(method);
}
}
@ -85,8 +85,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -85,8 +85,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
MethodResolveResult result = results as MethodResolveResult;
if (result == null)
return;
IProjectContent p = ParserService.CurrentProjectContent;
foreach (IMethod method in result.ContainingType.GetMethods()) {
if (method.Name == result.Name) {
if (p.Language.NameComparer.Equals(method.Name, result.Name)) {
methods.Add(method);
}
}

4
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.CSharp, new StringReader(fileContent));
p.Parse();
IProjectContent pc = new CaseSensitiveProjectContent();
IProjectContent pc = new DefaultProjectContent();
lastPC = pc;
NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc);
visitor.Visit(p.CompilationUnit, null);
@ -36,7 +36,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -36,7 +36,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
ICSharpCode.NRefactory.Parser.IParser p = ICSharpCode.NRefactory.Parser.ParserFactory.CreateParser(ICSharpCode.NRefactory.Parser.SupportedLanguages.VBNet, new StringReader(fileContent));
p.Parse();
IProjectContent pc = new CaseSensitiveProjectContent();
IProjectContent pc = new DefaultProjectContent();
lastPC = pc;
NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc);
visitor.Visit(p.CompilationUnit, null);

82
src/SharpDevelop.sln

@ -1,35 +1,5 @@ @@ -1,35 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -76,6 +46,36 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\St @@ -76,6 +46,36 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\St
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -157,17 +157,6 @@ Global @@ -157,17 +157,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
@ -185,5 +174,16 @@ Global @@ -185,5 +174,16 @@ Global
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal

Loading…
Cancel
Save