diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx
index 9c4b48eb3a..49d65c8075 100644
--- a/data/resources/StringResources.resx
+++ b/data/resources/StringResources.resx
@@ -8377,67 +8377,4 @@ Press Esc to cancel this operation.
Press "Alt" to enter Container
-
- Assembly Info
-
-
- Assembly version:
-
-
- Company:
-
-
- Copyright:
-
-
- Description:
-
-
- File version:
-
-
- GUID:
-
-
- Make assembly COM-visible
-
-
- Neutral language:
-
-
- Product:
-
-
- Title:
-
-
- Trademark:
-
-
- Assembly info file was not found. Please ensure that the project contains assembly info file.
-
-
- CLS compliant
-
-
- Default alias:
-
-
- Informational version:
-
-
- JIT optimization
-
-
- JIT tracking
-
-
- New GUID
-
-
- One of the assembly info values is incorrect.
-
-
- None
-
\ No newline at end of file
diff --git a/data/templates/file/CSharp/CSharp.Exception.xft b/data/templates/file/CSharp/CSharp.Exception.xft
index ac825703d8..fdaa09aed9 100644
--- a/data/templates/file/CSharp/CSharp.Exception.xft
+++ b/data/templates/file/CSharp/CSharp.Exception.xft
@@ -28,7 +28,7 @@ using System.Runtime.Serialization;
namespace ${StandardNamespace}
{
///
- /// Desctiption of ${ClassName}.
+ /// Description of ${ClassName}.
///
public class ${ClassName} : Exception, ISerializable
{
diff --git a/data/templates/file/VB/VB.Exception.xft b/data/templates/file/VB/VB.Exception.xft
index 77c92f1eca..8bced5fe62 100644
--- a/data/templates/file/VB/VB.Exception.xft
+++ b/data/templates/file/VB/VB.Exception.xft
@@ -27,7 +27,7 @@ Imports System.Runtime.Serialization
Namespace ${StandardNamespace}
'''
- ''' Desctiption of ${ClassName}.
+ ''' Description of ${ClassName}.
'''
Public Class ${ClassName}
Inherits Exception
diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs
index b53be5572f..9f5bdde79b 100644
--- a/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs
@@ -52,8 +52,9 @@ namespace ICSharpCode.CodeCoverage
CodeCoverageResults ReadCodeCoverageResults(string fileName)
{
- TextReader reader = fileSystem.OpenText(FileName.Create(fileName));
- return new CodeCoverageResults(reader);
+ using (TextReader reader = fileSystem.OpenText(FileName.Create(fileName))) {
+ return new CodeCoverageResults(reader);
+ }
}
public IEnumerable GetMissingResultsFiles()
diff --git a/src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs b/src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs
index b60ff8f777..aafd3f7464 100644
--- a/src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs
+++ b/src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs
@@ -119,13 +119,18 @@ namespace ICSharpCode.CodeCoverage
void DisplayCodeCoverageResults(CodeCoverageResultsReader coverageResultsReader)
{
- foreach (CodeCoverageResults result in coverageResultsReader.GetResults()) {
+ foreach (CodeCoverageResults result in GetResults(coverageResultsReader)) {
DisplayCodeCoverageResults(result);
}
foreach (string missingFile in coverageResultsReader.GetMissingResultsFiles()) {
DisplayNoCodeCoverageResultsGeneratedMessage(missingFile);
}
}
+
+ IEnumerable GetResults(CodeCoverageResultsReader coverageResultsReader)
+ {
+ return SD.MainThread.InvokeIfRequired(() => coverageResultsReader.GetResults().ToList());
+ }
void DisplayCodeCoverageResults(CodeCoverageResults results)
{
diff --git a/src/AddIns/Analysis/Profiler/Frontend/AddIn/Properties/AssemblyInfo.cs b/src/AddIns/Analysis/Profiler/Frontend/AddIn/Properties/AssemblyInfo.cs
index 19351e6298..2a20a546a7 100644
--- a/src/AddIns/Analysis/Profiler/Frontend/AddIn/Properties/AssemblyInfo.cs
+++ b/src/AddIns/Analysis/Profiler/Frontend/AddIn/Properties/AssemblyInfo.cs
@@ -50,4 +50,4 @@ using System.Windows;
//
// You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.*")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.0.*")]
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
index 11db4687c6..785b7fcd74 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
@@ -115,9 +115,6 @@
-
diff --git a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
index 7f39644774..1e534faede 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
+++ b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
@@ -444,7 +444,7 @@ namespace Debugger.AddIn
} else
throw new GetValueException("Invoked member must be a method or property");
Value target = null;
- if (!usedMethod.IsStatic)
+ if (!usedMethod.IsStatic && !usedMethod.IsConstructor)
target = Convert(result.TargetResult).GetPermanentReference(evalThread);
return InvokeMethod(target, usedMethod, result.Arguments.Select(rr => Convert(rr).GetPermanentReference(evalThread)).ToArray());
}
@@ -479,26 +479,33 @@ namespace Debugger.AddIn
}
sb.Append("}");
return sb.ToString();
- } else if (val.Type.GetAllBaseTypeDefinitions().Any(def => def.IsKnownType(KnownTypeCode.ICollection))) {
- StringBuilder sb = new StringBuilder();
- sb.Append(new CSharpAmbience().ConvertType(val.Type));
- sb.Append(" {");
- val = val.GetPermanentReference(evalThread);
- var countProp = val.Type.GetProperties(p => p.Name == "Count" && !p.IsExplicitInterfaceImplementation).Single();
- int count = (int)val.GetMemberValue(evalThread, countProp).PrimitiveValue;
- for(int i = 0; i < count; i++) {
- if (i > 0) sb.Append(", ");
- var itemProperty = val.Type.GetProperties(p => p.IsIndexer && p.Name == "Item" && !p.IsExplicitInterfaceImplementation).Single();
- Value item = val.GetPropertyValue(evalThread, itemProperty, Eval.CreateValue(evalThread, i));
- sb.Append(FormatValue(evalThread, item));
+ } else if (val.Type.GetAllBaseTypeDefinitions().Any(def => def.IsKnownType(KnownTypeCode.ICollection) || def.IsKnownType(KnownTypeCode.ICollectionOfT))) {
+ var countProp = val.Type.GetProperties(p => p.Name == "Count" && !p.IsExplicitInterfaceImplementation).SingleOrDefault();
+ if (countProp != null) {
+ StringBuilder sb = new StringBuilder();
+ sb.Append(new CSharpAmbience().ConvertType(val.Type));
+ val = val.GetPermanentReference(evalThread);
+ int count = (int)val.GetMemberValue(evalThread, countProp).PrimitiveValue;
+ var itemProperty = val.Type.GetProperties(p => p.IsIndexer && p.Name == "Item" && !p.IsExplicitInterfaceImplementation).SingleOrDefault();
+ if (itemProperty != null) {
+ sb.Append(" {");
+ for (int i = 0; i < count; i++) {
+ if (i > 0)
+ sb.Append(", ");
+ Value item = val.GetPropertyValue(evalThread, itemProperty, Eval.CreateValue(evalThread, i));
+ sb.Append(FormatValue(evalThread, item));
+ }
+ sb.Append("}");
+ } else {
+ sb.AppendFormat(" ({0} elements)", count);
+ }
+ return sb.ToString();
}
- sb.Append("}");
- return sb.ToString();
} else if (val.Type.IsKnownType(KnownTypeCode.String) || val.Type.IsPrimitiveType()) {
return TextWriterTokenWriter.PrintPrimitiveValue(val.PrimitiveValue);
- } else {
- return val.InvokeToString(evalThread);
}
+
+ return val.InvokeToString(evalThread);
}
}
diff --git a/src/AddIns/Debugger/Debugger.Core/Value.cs b/src/AddIns/Debugger/Debugger.Core/Value.cs
index 8b7ba28b67..c18a5560ef 100644
--- a/src/AddIns/Debugger/Debugger.Core/Value.cs
+++ b/src/AddIns/Debugger/Debugger.Core/Value.cs
@@ -416,6 +416,8 @@ namespace Debugger
if (memberInfo == null)
throw new DebuggerException("memberInfo is null");
if (!memberInfo.IsStatic) {
+ if (memberInfo.SymbolKind == SymbolKind.Constructor)
+ throw new GetValueException("Constructor expression");
if (objectInstance == null)
throw new DebuggerException("No target object specified");
if (objectInstance.IsNull)
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs
index cb867140e6..ecd03af1c2 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/MyTypeFinder.cs
@@ -17,6 +17,7 @@
// DEALINGS IN THE SOFTWARE.
using System;
+using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.ExceptionServices;
@@ -73,6 +74,36 @@ namespace ICSharpCode.WpfDesign.AddIn
}
}
+ public override Uri ConvertUriToLocalUri(Uri uri)
+ {
+ if (!uri.IsAbsoluteUri)
+ {
+ var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
+ var assembly = this.typeResolutionService.LoadAssembly(compilation.MainAssembly);
+ var prj = SD.ProjectService.CurrentProject;
+
+ if (uri.OriginalString.Contains(";"))
+ {
+ var parts = uri.OriginalString.Split(';');
+ if (prj.Name == parts[0].Substring(1))
+ {
+ var newUri = new Uri(("file://" + Path.Combine(prj.Directory, parts[1].Substring("component".Length + 1))).Replace("\\", "/"), UriKind.RelativeOrAbsolute);
+ return newUri;
+ }
+ }
+ else
+ {
+ var strg = uri.OriginalString;
+ if (strg.StartsWith("/"))
+ strg = strg.Substring(1);
+ var newUri = new Uri(("file://" + Path.Combine(prj.Directory, strg)).Replace("\\", "/"), UriKind.RelativeOrAbsolute);
+ return newUri;
+ }
+ }
+
+ return uri;
+ }
+
Assembly FindAssemblyInProjectReferences(string name)
{
IProject pc = GetProject(file);
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
index fdca8ae69b..7a9765cf85 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
@@ -22,16 +22,20 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
+using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Markup;
using System.Xml;
+using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Designer;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
@@ -44,6 +48,7 @@ using ICSharpCode.WpfDesign.Designer.OutlineView;
using ICSharpCode.WpfDesign.Designer.PropertyGrid;
using ICSharpCode.WpfDesign.Designer.Services;
using ICSharpCode.WpfDesign.Designer.Xaml;
+using ICSharpCode.WpfDesign.XamlDom;
namespace ICSharpCode.WpfDesign.AddIn
{
@@ -60,6 +65,10 @@ namespace ICSharpCode.WpfDesign.AddIn
this.TabPageText = "${res:FormsDesigner.DesignTabPages.DesignTabPage}";
this.IsActiveViewContentChanged += OnIsActiveViewContentChanged;
+
+ var compilation = SD.ParserService.GetCompilationForFile(file.FileName);
+ _path = Path.GetDirectoryName(compilation.MainAssembly.UnresolvedAssembly.Location);
+ AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
static WpfViewContent()
@@ -101,6 +110,8 @@ namespace ICSharpCode.WpfDesign.AddIn
if (outline != null) {
outline.Root = null;
}
+
+
using (XmlTextReader r = new XmlTextReader(stream)) {
XamlLoadSettings settings = new XamlLoadSettings();
settings.DesignerAssemblies.Add(typeof(WpfViewContent).Assembly);
@@ -117,7 +128,20 @@ namespace ICSharpCode.WpfDesign.AddIn
settings.ReportErrors = UpdateTasks;
designer.LoadDesigner(r, settings);
- designer.ContextMenuOpening += (sender, e) => MenuService.ShowContextMenu(e.OriginalSource as UIElement, designer, "/AddIns/WpfDesign/Designer/ContextMenu");
+ designer.DesignPanel.ContextMenuHandler = (contextMenu) => {
+ var newContextmenu = new ContextMenu();
+ var sdContextMenuItems = MenuService.CreateMenuItems(newContextmenu, designer, "/AddIns/WpfDesign/Designer/ContextMenu", "ContextMenu");
+ foreach(var entry in sdContextMenuItems)
+ newContextmenu.Items.Add(entry);
+ newContextmenu.Items.Add(new Separator());
+
+ var items = contextMenu.Items.Cast