Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md7
-rwxr-xr-xconfigure2
-rw-r--r--main/build/MacOSX/monostub.m4
-rw-r--r--main/src/addins/AspNet/MonoDevelop.AspNet.csproj24
-rw-r--r--main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml7
-rw-r--r--main/src/addins/MacPlatform/MacPlatform.cs8
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs1
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs8
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs5
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs5
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageManagementEventsMonitor.cs9
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj1
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/BackgroundPackageActionRunnerTests.cs61
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/InstallPackageActionTests.cs25
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MSBuildTargetsRestoredMonitorTests.cs87
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/RestorePackagesActionTests.cs43
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectProxy.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IDotNetProject.cs1
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IPackageManagementEvents.cs7
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MSBuildTargetsRestoredMonitor.cs64
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEvents.cs18
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs40
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs35
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoredEventArgs.cs42
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ParentPackageOperationEventArgs.cs17
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs7
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs8
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ThreadSafePackageManagementEvents.cs17
-rw-r--r--main/src/addins/NUnit/Gui/TestResultsPad.cs34
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs6
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs8
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs26
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/TreeViewState.cs120
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs1
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs17
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs10
-rw-r--r--main/src/core/MonoDevelop.Ide/gtkrc6
-rw-r--r--main/src/core/MonoDevelop.Ide/gtkrc.win326
-rw-r--r--main/src/core/MonoDevelop.Ide/gtkrc.win32-vista7
-rwxr-xr-xmain/tests/test-projects/console-project/ConsoleProject.sln5
-rw-r--r--main/tests/test-projects/generated-console-project/TestSolution.sln5
-rw-r--r--main/tests/test-projects/generated-shared-project/TestSolution.sln5
-rw-r--r--main/tests/test-projects/solution-build-order/ConsoleApplication3.sln5
-rw-r--r--main/tests/test-projects/unsupported-project/console-with-libs.sln3
55 files changed, 727 insertions, 140 deletions
diff --git a/README.md b/README.md
index 73a291640d..a55c57fe6f 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@ using Gtk#.
See http://www.monodevelop.com for more info.
+[![Build Status](http://jenkins.mono-project.com/job/test-monodevelop-mainline/badge/icon)](http://jenkins.mono-project.com/job/test-monodevelop-mainline/)
+
Directory organization
----------------------
@@ -39,6 +41,7 @@ There are two variables you can set when running `configure`:
* `stable`: builds the MonoDevelop core and some stable extra add-ins.
* `core`: builds the MonoDevelop core only.
* `all`: builds everything
+ * `mac`: builds for Mac OS X
* You can also create your own profile by adding a file to the profiles
directory containing a list of the directories to build.
@@ -66,8 +69,8 @@ Packaging for OS X
To package MonoDevelop for OS X in a convenient MonoDevelop.app
file, just do this after MonoDevelop has finished building (with
-`make`):
-`cd main/build/MacOSX ; make MonoDevelop.app`
+`make`): `cd main/build/MacOSX ; make`.
+You can run MonoDevelop: `open MonoDevelop.app` or build dmg package: `./make-dmg-bundle.sh`
Dependencies
------------
diff --git a/configure b/configure
index ff149220aa..42ff68fc52 100755
--- a/configure
+++ b/configure
@@ -278,7 +278,7 @@ if test `uname` = "Darwin"; then
export ACLOCAL_FLAGS="-I /Library/Frameworks/Mono.framework/Versions/Current/share/aclocal"
fi
# add in libsvn's directory as a fallback path. user-set paths will override it
- export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:/Library/Developer/CommandLineTools/usr/lib:`pwd`/main/build/bin"
+ export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:/Library/Developer/CommandLineTools/usr/lib:/usr/local/lib:`pwd`/main/build/bin"
fi
configure_packages
diff --git a/main/build/MacOSX/monostub.m b/main/build/MacOSX/monostub.m
index e4ac9256a1..a1910113ee 100644
--- a/main/build/MacOSX/monostub.m
+++ b/main/build/MacOSX/monostub.m
@@ -270,7 +270,7 @@ update_environment (const char* macosDir, const char *resourcesDir, const char *
char buf[32];
/* CommandLineTools are needed for OSX 10.9+ */
- v1 = "/Library/Frameworks/Mono.framework/Versions/Current/lib:/lib:/usr/lib:/Library/Developer/CommandLineTools/usr/lib:";
+ v1 = "/Library/Frameworks/Mono.framework/Versions/Current/lib:/lib:/usr/lib:/Library/Developer/CommandLineTools/usr/lib:/usr/local/lib:";
v1 = str_append (v1, macosDir);
v1 = str_append (v1, "/lib/monodevelop/bin/");
push_env ("DYLD_FALLBACK_LIBRARY_PATH", v1);
@@ -363,7 +363,7 @@ int main (int argc, char **argv)
NSString *binDir = [[NSString alloc] initWithUTF8String: "Contents/Resources/lib/monodevelop/bin"];
NSString *appDir = [[NSBundle mainBundle] bundlePath];
// can be overridden with plist string MonoMinVersion
- NSString *req_mono_version = @"3.0.7";
+ NSString *req_mono_version = @"3.8";
// can be overridden with either plist bool MonoUseSGen or MONODEVELOP_USE_SGEN env
bool use_sgen = YES;
diff --git a/main/src/addins/AspNet/MonoDevelop.AspNet.csproj b/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
index efe89650c8..621d9d1716 100644
--- a/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
+++ b/main/src/addins/AspNet/MonoDevelop.AspNet.csproj
@@ -447,6 +447,30 @@
<None Include="Templates\Projects\WebApplication.xpt.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
+ <None Include="..\..\..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll">
+ <Link>System.Web.Mvc.dll</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\..\..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll">
+ <Link>System.Web.Razor.dll</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll">
+ <Link>System.Web.Helpers.dll</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll">
+ <Link>System.Web.WebPages.Deployment.dll</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll">
+ <Link>System.Web.WebPages.dll</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="..\..\..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll">
+ <Link>System.Web.WebPages.Razor.dll</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
</ItemGroup>
<ItemGroup>
<Content Include="Html\Schemas\readme.txt">
diff --git a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
index 17406e444f..6dfbed0e80 100644
--- a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
+++ b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
@@ -1,6 +1,13 @@
<ExtensionModel>
<Runtime>
+ <Import assembly = "System.Web.Helpers.dll" />
+ <Import assembly = "System.Web.Mvc.dll" />
+ <Import assembly = "System.Web.Razor.dll" />
+ <Import assembly = "System.Web.WebPages.Deployment.dll" />
+ <Import assembly = "System.Web.WebPages.dll" />
+ <Import assembly = "System.Web.WebPages.Razor.dll" />
+
<Import file = "Html/Schemas/xhtml1-strict.xsd" />
<Import file = "Html/Schemas/xhtml1-transitional.xsd" />
<Import file = "Html/Schemas/xhtml1-frameset.xsd" />
diff --git a/main/src/addins/MacPlatform/MacPlatform.cs b/main/src/addins/MacPlatform/MacPlatform.cs
index 25cbcd3c52..9d54831387 100644
--- a/main/src/addins/MacPlatform/MacPlatform.cs
+++ b/main/src/addins/MacPlatform/MacPlatform.cs
@@ -733,8 +733,12 @@ namespace MonoDevelop.MacIntegration
{
var toplevels = GtkQuartz.GetToplevels ();
- return toplevels.Any (t => t.Key.IsVisible && (t.Value == null || t.Value.Modal)
- && !t.Key.DebugDescription.StartsWith ("<NSStatusBarWindow", StringComparison.Ordinal));
+ // When we're looking for modal windows that don't belong to GTK, exclude
+ // NSStatusBarWindow (which is visible on Mavericks when we're in fullscreen) and
+ // NSToolbarFullscreenWindow (which is visible on Yosemite in fullscreen).
+ return toplevels.Any (t => t.Key.IsVisible && (t.Value == null || t.Value.Modal) &&
+ !(t.Key.DebugDescription.StartsWith("<NSStatusBarWindow", StringComparison.Ordinal) ||
+ t.Key.DebugDescription.StartsWith ("<NSToolbarFullScreenWindow", StringComparison.Ordinal)));
}
public override void AddChildWindow (Gtk.Window parent, Gtk.Window child)
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs
index 283b212534..c4b708a94b 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Visualizer/ValueVisualizerDialog.cs
@@ -41,6 +41,7 @@ namespace MonoDevelop.Debugger.Viewers
public ValueVisualizerDialog ()
{
this.Build ();
+ this.Modal = true;
}
public void Show (ObjectValue val)
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
index 0dea8f754c..85eb0d32da 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
@@ -77,7 +77,7 @@ namespace MonoDevelop.Debugger
// Text entries
readonly TextEntry entryFunctionName = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. System.Object.ToString") };
- readonly TextEntry entryLocationFile = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. ./monodevelop/main/src/addins/YCombinator.cs:515:16") };
+ readonly TextEntry entryLocationFile = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. Program.cs:15:5") };
readonly TextEntryWithCodeCompletion entryExceptionType = new TextEntryWithCodeCompletion (){ PlaceholderText = GettextCatalog.GetString ("e.g. System.InvalidOperationException") };
readonly TextEntry entryConditionalExpression = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. colorName == \"Red\"") };
readonly TextEntry entryPrintExpression = new TextEntry () { PlaceholderText = GettextCatalog.GetString ("e.g. Value of 'name' is {name}") };
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
index 3426ed37e6..f814565f0c 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs
@@ -749,8 +749,12 @@ namespace MonoDevelop.Debugger
try {
DebuggingService.SetNextStatement (doc.FileName, doc.Editor.Caret.Line, doc.Editor.Caret.Column);
- } catch (NotSupportedException) {
- MessageService.ShowError ("Unable to set the next statement to this location.");
+ } catch (Exception e) {
+ if (e is NotSupportedException || e.InnerException is NotSupportedException) {
+ MessageService.ShowError ("Unable to set the next statement to this location.");
+ } else {
+ throw;
+ }
}
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs
index dab33bbb60..82d66b48fe 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs
@@ -26,7 +26,6 @@
//
using System;
-using System.Linq;
using Mono.Debugging.Client;
using System.Collections.Generic;
@@ -116,9 +115,9 @@ namespace MonoDevelop.Debugger
return false;
return true;
- } else {
- return a.SourceLocation.MethodName.Equals (z.SourceLocation.MethodName, StringComparison.Ordinal);
}
+
+ return a.SourceLocation.MethodName.Equals (z.SourceLocation.MethodName, StringComparison.Ordinal);
}
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs
index 892f150861..9d3791efec 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs
@@ -503,8 +503,9 @@ namespace MonoDevelop.Debugger
void Refresh (bool resetScrollPosition)
{
- foreach (ObjectValue val in new List<ObjectValue> (nodes.Keys))
+ foreach (var val in new List<ObjectValue> (nodes.Keys))
UnregisterValue (val);
+
nodes.Clear ();
// Note: this is a hack that ideally we could get rid of...
@@ -518,7 +519,7 @@ namespace MonoDevelop.Debugger
bool showExpanders = AllowAdding;
- foreach (ObjectValue val in values) {
+ foreach (var val in values) {
AppendValue (TreeIter.Zero, null, val);
if (val.HasChildren)
showExpanders = true;
diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs
index 28dac4d37e..40b3c74d59 100644
--- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs
@@ -579,7 +579,7 @@ namespace MonoDevelop.GtkCore.GuiBuilder
string mt = DesktopService.GetMimeTypeForUri (file);
var formatter = MonoDevelop.Ide.CodeFormatting.CodeFormatterService.GetFormatter (mt);
if (formatter != null)
- content = formatter.FormatText (PolicyService.InvariantPolicies, content);
+ content = formatter.FormatText (PolicyService.InvariantPolicies, content) ?? content;
// The project policies should be taken for generated files (windows git eol problem)
var pol = project.Policies.Get<TextStylePolicy> (DesktopService.GetMimeTypeForUri (file));
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs
index cb2285740b..010cc795b5 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeDotNetProject.cs
@@ -137,6 +137,10 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
{
return EqualsAction (project);
}
+
+ public void RefreshProjectBuilder ()
+ {
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageManagementEventsMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageManagementEventsMonitor.cs
index 451310dd19..0c114f4535 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageManagementEventsMonitor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestablePackageManagementEventsMonitor.cs
@@ -63,6 +63,15 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public bool IsPackageConsoleShown;
public IProgressMonitor ProgressMonitorPassedToShowPackageConsole;
+
+ protected override void ReconnectAssemblyReferences (IPackageManagementProject project)
+ {
+ ProjectsPassedToReconnectAssemblyReferences.Add (project);
+ IsTypeSystemRefreshed = true;
+ }
+
+ public List<IPackageManagementProject> ProjectsPassedToReconnectAssemblyReferences = new List<IPackageManagementProject> ();
+ public bool IsTypeSystemRefreshed;
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
index f7d81fb679..eff06ad1e8 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
@@ -199,6 +199,7 @@
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableSolutionPackageRepository.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\FakeFileRemover.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\FakePackageRepositoryWithConstraintProvider.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests\MSBuildTargetsRestoredMonitorTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/BackgroundPackageActionRunnerTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/BackgroundPackageActionRunnerTests.cs
index b4e42e263d..4f37481c12 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/BackgroundPackageActionRunnerTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/BackgroundPackageActionRunnerTests.cs
@@ -85,7 +85,7 @@ namespace MonoDevelop.PackageManagement.Tests
return action;
}
- void AddInstallActionWithPowerShellScript (string packageId = "Test")
+ FakeInstallPackageAction AddInstallActionWithPowerShellScript (string packageId = "Test")
{
FakeInstallPackageAction action = AddInstallAction ();
var package = new FakePackage (packageId);
@@ -94,6 +94,7 @@ namespace MonoDevelop.PackageManagement.Tests
operations.Add (new PackageOperation (package, PackageAction.Install));
action.Operations = operations;
action.Package = package;
+ return action;
}
void AddInstallActionWithLicenseToAccept (string packageId = "Test")
@@ -130,6 +131,20 @@ namespace MonoDevelop.PackageManagement.Tests
return action;
}
+ FakeInstallPackageAction AddInstallActionWithMSBuildTargetsFile (
+ string packageId = "Test",
+ PackageAction packageAction = PackageAction.Install)
+ {
+ FakeInstallPackageAction action = AddInstallAction ();
+ var package = new FakePackage (packageId);
+ package.AddFile (@"build\net40\" + packageId + ".targets");
+ var operations = new List<PackageOperation> ();
+ operations.Add (new PackageOperation (package, packageAction));
+ action.Operations = operations;
+ action.Package = package;
+ return action;
+ }
+
[Test]
public void Run_OneInstallActionAndOneUninstallActionAndRunNotCompleted_InstallActionMarkedAsPending ()
{
@@ -433,6 +448,50 @@ namespace MonoDevelop.PackageManagement.Tests
progressMonitor.AssertMessageIsLogged ("Download2");
progressMonitor.AssertMessageIsNotLogged ("Download2" + Environment.NewLine + "Download2");
}
+
+ [Test]
+ public void Run_OneInstallActionWithPackageOperationWithCustomMSBuildTask_TypeSystemIsRefreshed ()
+ {
+ CreateRunner ();
+ FakeInstallPackageAction action = AddInstallActionWithMSBuildTargetsFile ();
+ action.ExecuteAction = () => {
+ packageManagementEvents.OnParentPackageInstalled (action.Package, action.Project, action.Operations);
+ };
+
+ Run ();
+
+ Assert.IsTrue (runner.EventsMonitor.IsTypeSystemRefreshed);
+ Assert.AreEqual (action.Project, runner.EventsMonitor.ProjectsPassedToReconnectAssemblyReferences [0]);
+ Assert.IsNotNull (action.Project);
+ }
+
+ [Test]
+ public void Run_OneUninstallActionWithPackageOperationWithCustomMSBuildTask_TypeSystemIsNotRefreshed ()
+ {
+ CreateRunner ();
+ FakeInstallPackageAction action = AddInstallActionWithMSBuildTargetsFile ("Test", PackageAction.Uninstall);
+ action.ExecuteAction = () => {
+ packageManagementEvents.OnParentPackageInstalled (action.Package, action.Project, action.Operations);
+ };
+
+ Run ();
+
+ Assert.IsFalse (runner.EventsMonitor.IsTypeSystemRefreshed);
+ }
+
+ [Test]
+ public void Run_OneInstallActionNoCustomMSBuildTask_TypeSystemIsNotRefreshed ()
+ {
+ CreateRunner ();
+ FakeInstallPackageAction action = AddInstallActionWithPowerShellScript ();
+ action.ExecuteAction = () => {
+ packageManagementEvents.OnParentPackageInstalled (action.Package, action.Project, action.Operations);
+ };
+
+ Run ();
+
+ Assert.IsFalse (runner.EventsMonitor.IsTypeSystemRefreshed);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/InstallPackageActionTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/InstallPackageActionTests.cs
index 758341f3a6..5273282109 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/InstallPackageActionTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/InstallPackageActionTests.cs
@@ -493,5 +493,30 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.AreEqual ("Test Package contains PowerShell scripts which will not be run.", messageLogged);
}
+
+ [Test]
+ public void Execute_PackageAndPackageRepositoryPassed_PackageInstallNotificationRaisedWithProject ()
+ {
+ CreateAction ();
+ IPackageManagementProject project = null;
+ packageManagementEvents.ParentPackageInstalled += (sender, e) => project = e.Project;
+
+ installPackageHelper.InstallTestPackage ();
+
+ Assert.AreEqual (fakeProject, project);
+ }
+
+ [Test]
+ public void Execute_InstallHasPackageOperations_PackageInstallNotificationRaisedWithPackageOperations ()
+ {
+ CreateAction ();
+ installPackageHelper.AddPackageInstallOperation ();
+ IEnumerable<PackageOperation> actualOperations = null;
+ packageManagementEvents.ParentPackageInstalled += (sender, e) => actualOperations = e.Operations;
+
+ installPackageHelper.InstallTestPackage ();
+
+ CollectionAssert.AreEqual (action.Operations, actualOperations);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MSBuildTargetsRestoredMonitorTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MSBuildTargetsRestoredMonitorTests.cs
new file mode 100644
index 0000000000..93ae95c5b1
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MSBuildTargetsRestoredMonitorTests.cs
@@ -0,0 +1,87 @@
+//
+// MSBuildTargetsRestoredMonitorTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2014 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using ICSharpCode.PackageManagement;
+using NUnit.Framework;
+using MonoDevelop.PackageManagement.Tests.Helpers;
+
+namespace MonoDevelop.PackageManagement.Tests
+{
+ [TestFixture]
+ public class MSBuildTargetsRestoredMonitorTests
+ {
+ MSBuildTargetsRestoredMonitor monitor;
+ PackageManagementEvents packageEvents;
+
+ void CreateMonitor ()
+ {
+ packageEvents = new PackageManagementEvents ();
+ monitor = new MSBuildTargetsRestoredMonitor (packageEvents);
+ }
+
+ void PackageWithMSBuildTargetsIsRestored ()
+ {
+ var package = new FakePackage ("MyPackage");
+ package.AddFile (@"build\MyPackage.targets");
+
+ packageEvents.OnPackageRestored (package);
+ }
+
+ [Test]
+ public void AnyMSBuildTargetsRestored_NoPackagesRestored_ReturnsFalse ()
+ {
+ CreateMonitor ();
+
+ bool result = monitor.AnyMSBuildTargetsRestored;
+
+ Assert.IsFalse (result);
+ }
+
+ [Test]
+ public void AnyMSBuildTargetsRestored_OnePackageWithMSBuildTargetsFileIsRestored_ReturnsTrue ()
+ {
+ CreateMonitor ();
+ PackageWithMSBuildTargetsIsRestored ();
+
+ bool result = monitor.AnyMSBuildTargetsRestored;
+
+ Assert.IsTrue (result);
+ }
+
+ [Test]
+ public void AnyMSBuildTargetsRestored_PackageRestoredWithMSBuildTargetsFileAfterMonitorIsDisposed_ReturnsFalse ()
+ {
+ CreateMonitor ();
+ monitor.Dispose ();
+ PackageWithMSBuildTargetsIsRestored ();
+
+ bool result = monitor.AnyMSBuildTargetsRestored;
+
+ Assert.IsFalse (result);
+ }
+ }
+}
+
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/RestorePackagesActionTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/RestorePackagesActionTests.cs
index f247203e80..fb19a62571 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/RestorePackagesActionTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/RestorePackagesActionTests.cs
@@ -43,6 +43,7 @@ namespace MonoDevelop.PackageManagement.Tests
FakePackageRepositoryFactory packageRepositoryCache;
PackageManagementEvents packageEvents;
List<PackageOperationMessage> messagesLogged;
+ List<PackageRestoredEventArgs> packageRestoredEvents;
void CreateSolution ()
{
@@ -112,6 +113,14 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.That (allMessages, Has.No.ContainsSubstring (expectedMessage));
}
+ void CapturePackageRestoredEvents ()
+ {
+ packageRestoredEvents = new List<PackageRestoredEventArgs> ();
+ packageEvents.PackageRestored += (sender, e) => {
+ packageRestoredEvents.Add (e);
+ };
+ }
+
[Test]
public void Execute_ProjectHasOneUnrestoredPackage_PackageFromPriorityRepositoryIsInstalled ()
{
@@ -317,6 +326,40 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.AreEqual (1, packageManagerFactory.FakePackageManager.PackagesInstalled.Count);
Assert.AreEqual ("MyPackage1", packageManagerFactory.FakePackageManager.PackagePassedToInstallPackage.Id);
}
+
+ [Test]
+ public void Execute_ProjectHasOneUnrestoredPackage_PackageRestoredEventFiredForPackage ()
+ {
+ FakePackageManagementProject project = CreateSolutionWithOneProject ();
+ project.AddPackageReference ("MyPackage", "1.0");
+ FakePackage package = AddPackageToPriorityRepository ("MyPackage", "1.0");
+ CreateAction ();
+ CapturePackageRestoredEvents ();
+ var dotNetProject = new FakeDotNetProject ();
+ dotNetProject.Name = "MyProject";
+ solution.FakeProjectsToReturnFromGetProject.Add ("MyProject", project);
+ action.Project = dotNetProject;
+
+ action.Execute ();
+
+ PackageRestoredEventArgs eventArgs = packageRestoredEvents [0];
+ Assert.AreEqual (package, eventArgs.Package);
+ }
+
+ [Test]
+ public void Execute_SolutionHasOneProjectWithOneUnrestoredPackage_PackageRestoredEventFiredForPackage ()
+ {
+ FakePackageManagementProject project = CreateSolutionWithOneProject ();
+ project.AddPackageReference ("MyPackage", "1.0");
+ FakePackage package = AddPackageToPriorityRepository ("MyPackage", "1.0");
+ CreateAction ();
+ CapturePackageRestoredEvents ();
+
+ action.Execute ();
+
+ PackageRestoredEventArgs eventArgs = packageRestoredEvents [0];
+ Assert.AreEqual (package, eventArgs.Package);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index 55e16bc4de..b26d6fa8a4 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -359,6 +359,8 @@
<Compile Include="MonoDevelop.PackageManagement\PackageManagementPackageReference.cs" />
<Compile Include="MonoDevelop.PackageManagement\PackageManagementProjectOperations.cs" />
<Compile Include="MonoDevelop.PackageManagement\PackageManagementPackageReferenceEventArgs.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\PackageRestoredEventArgs.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\MSBuildTargetsRestoredMonitor.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.PackageManagement.addin.xml" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectProxy.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectProxy.cs
index 6c719fc6de..c6de7677f5 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectProxy.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectProxy.cs
@@ -112,6 +112,11 @@ namespace MonoDevelop.PackageManagement
{
return DotNetProject == project.DotNetProject;
}
+
+ public void RefreshProjectBuilder ()
+ {
+ DotNetProject.RefreshProjectBuilder ();
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IDotNetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IDotNetProject.cs
index bee62295d5..9c7dfabff9 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IDotNetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IDotNetProject.cs
@@ -46,6 +46,7 @@ namespace MonoDevelop.PackageManagement
void AddImportIfMissing (string name, string condition);
void RemoveImport (string name);
bool Equals (IDotNetProject project);
+ void RefreshProjectBuilder ();
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IPackageManagementEvents.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IPackageManagementEvents.cs
index 0e476e576f..06e1edced4 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IPackageManagementEvents.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IPackageManagementEvents.cs
@@ -50,12 +50,13 @@ namespace ICSharpCode.PackageManagement
event EventHandler<FileEventArgs> FileChanged;
event EventHandler<FileRemovingEventArgs> FileRemoving;
event EventHandler UpdatedPackagesAvailable;
+ event EventHandler<PackageRestoredEventArgs> PackageRestored;
void OnPackageOperationsStarting();
void OnPackageOperationsFinished();
void OnPackageOperationError(Exception ex);
bool OnAcceptLicenses(IEnumerable<IPackage> packages);
- void OnParentPackageInstalled(IPackage package, IPackageManagementProject project);
+ void OnParentPackageInstalled (IPackage package, IPackageManagementProject project, IEnumerable<PackageOperation> operations);
void OnParentPackageUninstalled(IPackage package, IPackageManagementProject project);
void OnParentPackagesUpdated(IEnumerable<IPackage> packages);
void OnPackageOperationMessageLogged(MessageLevel level, string message, params object[] args);
@@ -65,5 +66,9 @@ namespace ICSharpCode.PackageManagement
void OnFileChanged(string path);
void OnUpdatedPackagesAvailable ();
bool OnFileRemoving (string path);
+ void OnPackageRestored (IPackage package);
+
+ [Obsolete]
+ void OnParentPackageInstalled (IPackage package, IPackageManagementProject project);
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs
index a5726d465c..778140286e 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs
@@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement
protected override void ExecuteCore()
{
Project.InstallPackage(Package, this);
- OnParentPackageInstalled();
+ OnParentPackageInstalled ();
}
protected override string StartingMessageFormat {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MSBuildTargetsRestoredMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MSBuildTargetsRestoredMonitor.cs
new file mode 100644
index 0000000000..1f8f80f58c
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MSBuildTargetsRestoredMonitor.cs
@@ -0,0 +1,64 @@
+//
+// MSBuildTargetsRestoredMonitor.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2014 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Linq;
+using ICSharpCode.PackageManagement;
+using NuGet;
+
+namespace MonoDevelop.PackageManagement
+{
+ public class MSBuildTargetsRestoredMonitor : IDisposable
+ {
+ IPackageManagementEvents packageManagementEvents;
+
+ public MSBuildTargetsRestoredMonitor (IPackageManagementEvents packageManagementEvents)
+ {
+ this.packageManagementEvents = packageManagementEvents;
+ this.packageManagementEvents.PackageRestored += PackageRestored;
+ }
+
+ void PackageRestored (object sender, PackageRestoredEventArgs e)
+ {
+ if (PackageHasMSBuildTargetsFile (e.Package)) {
+ AnyMSBuildTargetsRestored = true;
+ }
+ }
+
+ bool PackageHasMSBuildTargetsFile (IPackage package)
+ {
+ return package.GetBuildFiles ().Any ();
+ }
+
+ public void Dispose ()
+ {
+ this.packageManagementEvents.PackageRestored -= PackageRestored;
+ }
+
+ public bool AnyMSBuildTargetsRestored { get; private set; }
+ }
+}
+
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEvents.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEvents.cs
index 4500ce5cd2..6ed96e3ca7 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEvents.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEvents.cs
@@ -83,7 +83,14 @@ namespace ICSharpCode.PackageManagement
ParentPackageInstalled(this, new ParentPackageOperationEventArgs(package, project));
}
}
-
+
+ public void OnParentPackageInstalled (IPackage package, IPackageManagementProject project, IEnumerable<PackageOperation> operations)
+ {
+ if (ParentPackageInstalled != null) {
+ ParentPackageInstalled (this, new ParentPackageOperationEventArgs(package, project, operations));
+ }
+ }
+
public event EventHandler<ParentPackageOperationEventArgs> ParentPackageUninstalled;
public void OnParentPackageUninstalled(IPackage package, IPackageManagementProject project)
@@ -174,5 +181,14 @@ namespace ICSharpCode.PackageManagement
}
return true;
}
+
+ public event EventHandler<PackageRestoredEventArgs> PackageRestored;
+
+ public void OnPackageRestored (IPackage package)
+ {
+ if (PackageRestored != null) {
+ PackageRestored (this, new PackageRestoredEventArgs (package));
+ }
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs
index 7594cb305e..39df61d6e9 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs
@@ -31,6 +31,7 @@ using ICSharpCode.PackageManagement;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using NuGet;
+using MonoDevelop.Ide.TypeSystem;
namespace MonoDevelop.PackageManagement
{
@@ -43,6 +44,7 @@ namespace MonoDevelop.PackageManagement
IFileConflictResolver fileConflictResolver = new FileConflictResolver ();
string currentProgressOperation;
List<FileEventArgs> fileChangedEvents = new List<FileEventArgs> ();
+ List<IPackageManagementProject> projectsRequiringTypeSystemRefresh = new List<IPackageManagementProject> ();
public PackageManagementEventsMonitor (
IProgressMonitor progressMonitor,
@@ -57,18 +59,21 @@ namespace MonoDevelop.PackageManagement
packageManagementEvents.ResolveFileConflict += ResolveFileConflict;
packageManagementEvents.AcceptLicenses += AcceptLicenses;
packageManagementEvents.FileChanged += FileChanged;
+ packageManagementEvents.ParentPackageInstalled += PackageInstalled;
progressProvider.ProgressAvailable += ProgressAvailable;
}
-
+
public void Dispose ()
{
progressProvider.ProgressAvailable -= ProgressAvailable;
+ packageManagementEvents.ParentPackageInstalled -= PackageInstalled;
packageManagementEvents.FileChanged -= FileChanged;
packageManagementEvents.AcceptLicenses -= AcceptLicenses;
packageManagementEvents.ResolveFileConflict -= ResolveFileConflict;
packageManagementEvents.PackageOperationMessageLogged -= PackageOperationMessageLogged;
NotifyFilesChanged ();
+ RefreshTypeSystem ();
}
void ResolveFileConflict(object sender, ResolveFileConflictEventArgs e)
@@ -194,6 +199,39 @@ namespace MonoDevelop.PackageManagement
{
progressMonitor.ShowPackageConsole ();
}
+
+ void RefreshTypeSystem ()
+ {
+ foreach (IPackageManagementProject project in projectsRequiringTypeSystemRefresh) {
+ ReconnectAssemblyReferences (project);
+ }
+ }
+
+ protected virtual void ReconnectAssemblyReferences (IPackageManagementProject project)
+ {
+ var projectWrapper = TypeSystemService.GetProjectContentWrapper (project.DotNetProject);
+ if (projectWrapper != null) {
+ projectWrapper.ReconnectAssemblyReferences ();
+ }
+ }
+
+ void PackageInstalled (object sender, ParentPackageOperationEventArgs e)
+ {
+ if (ShouldRefreshTypeSystemForProject (e)) {
+ projectsRequiringTypeSystemRefresh.Add (e.Project);
+ }
+ }
+
+ bool ShouldRefreshTypeSystemForProject (ParentPackageOperationEventArgs e)
+ {
+ return e.Operations.Any (operation => IsInstallingMSBuildFiles (operation));
+ }
+
+ bool IsInstallingMSBuildFiles (PackageOperation operation)
+ {
+ return (operation.Action == PackageAction.Install) &&
+ operation.Package.GetBuildFiles ().Any ();
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
index 1c1b915142..2dd4d79a71 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
@@ -28,10 +28,8 @@ using System;
using System.Linq;
using ICSharpCode.PackageManagement;
using MonoDevelop.Core;
-using MonoDevelop.Core.Execution;
using MonoDevelop.Ide;
-using MonoDevelop.Ide.Gui;
-using MonoDevelop.Core.ProgressMonitoring;
+using MonoDevelop.Ide.TypeSystem;
using MonoDevelop.Projects;
using NuGet;
@@ -109,13 +107,16 @@ namespace MonoDevelop.PackageManagement
void RestorePackages (IProgressMonitor progressMonitor, ProgressMonitorStatusMessage progressMessage)
{
- var action = new RestorePackagesAction (solution, packageManagementEvents);
- if (project != null) {
- action.Project = project;
+ var msbuildTargetsMonitor = new MSBuildTargetsRestoredMonitor (packageManagementEvents);
+ using (msbuildTargetsMonitor) {
+ var action = new RestorePackagesAction (solution, packageManagementEvents);
+ if (project != null) {
+ action.Project = project;
+ }
+ action.Execute ();
}
- action.Execute ();
- RefreshProjectReferences ();
+ RefreshProjectReferences (msbuildTargetsMonitor.AnyMSBuildTargetsRestored);
ForceCreationOfSharedRepositoriesConfigFile ();
progressMonitor.ReportSuccess (progressMessage.Success);
@@ -136,14 +137,30 @@ namespace MonoDevelop.PackageManagement
/// Refresh all projects even though we may have only restored packages for one project since
/// the packages may be used in other projects.
/// </summary>
- void RefreshProjectReferences ()
+ void RefreshProjectReferences (bool refreshMSBuildTargets)
{
DispatchService.GuiDispatch (() => {
foreach (IDotNetProject projectInSolution in solution.GetDotNetProjects ()) {
+ if (refreshMSBuildTargets) {
+ projectInSolution.RefreshProjectBuilder ();
+ }
+
projectInSolution.DotNetProject.RefreshReferenceStatus ();
+
+ if (refreshMSBuildTargets) {
+ ReconnectAssemblyReferences (projectInSolution.DotNetProject);
+ }
}
});
}
+
+ void ReconnectAssemblyReferences (DotNetProject dotNetProject)
+ {
+ var projectWrapper = TypeSystemService.GetProjectContentWrapper (dotNetProject);
+ if (projectWrapper != null) {
+ projectWrapper.ReconnectAssemblyReferences ();
+ }
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoredEventArgs.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoredEventArgs.cs
new file mode 100644
index 0000000000..cf9b9dc141
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoredEventArgs.cs
@@ -0,0 +1,42 @@
+//
+// PackageRestoredEventArgs.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2014 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using NuGet;
+
+namespace MonoDevelop.PackageManagement
+{
+ public class PackageRestoredEventArgs : EventArgs
+ {
+ public PackageRestoredEventArgs (IPackage package)
+ {
+ Package = package;
+ }
+
+ public IPackage Package { get; set; }
+ }
+}
+
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ParentPackageOperationEventArgs.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ParentPackageOperationEventArgs.cs
index 6ffeaf4138..2fdc32c4fc 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ParentPackageOperationEventArgs.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ParentPackageOperationEventArgs.cs
@@ -27,6 +27,7 @@
//
using System;
+using System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
@@ -34,12 +35,22 @@ namespace ICSharpCode.PackageManagement
public class ParentPackageOperationEventArgs : EventArgs
{
public ParentPackageOperationEventArgs(IPackage package, IPackageManagementProject project)
+ : this (package, project, new PackageOperation [0])
{
- this.Package = package;
- this.Project = project;
}
-
+
+ public ParentPackageOperationEventArgs (
+ IPackage package,
+ IPackageManagementProject project,
+ IEnumerable<PackageOperation> operations)
+ {
+ Package = package;
+ Project = project;
+ Operations = operations;
+ }
+
public IPackage Package { get; private set; }
public IPackageManagementProject Project { get; private set; }
+ public IEnumerable<PackageOperation> Operations { get; private set; }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs
index a17603c744..c957f7c8e5 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs
@@ -65,12 +65,7 @@ namespace ICSharpCode.PackageManagement
{
return false;
}
-
- protected void OnParentPackageInstalled()
- {
- packageManagementEvents.OnParentPackageInstalled(Package, Project);
- }
-
+
protected void OnParentPackageUninstalled()
{
packageManagementEvents.OnParentPackageUninstalled(Package, Project);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs
index 5c2a87e349..bd4d6da486 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs
@@ -35,11 +35,14 @@ namespace ICSharpCode.PackageManagement
{
public abstract class ProcessPackageOperationsAction : ProcessPackageAction
{
+ IPackageManagementEvents packageManagementEvents;
+
public ProcessPackageOperationsAction(
IPackageManagementProject project,
IPackageManagementEvents packageManagementEvents)
: base(project, packageManagementEvents)
{
+ this.packageManagementEvents = packageManagementEvents;
}
public IEnumerable<PackageOperation> Operations { get; set; }
@@ -74,5 +77,10 @@ namespace ICSharpCode.PackageManagement
BeforeExecute ();
return Operations.Where (operation => operation.Action == PackageAction.Install);
}
+
+ protected void OnParentPackageInstalled ()
+ {
+ packageManagementEvents.OnParentPackageInstalled (Package, Project, Operations);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs
index 17e844d4da..8f67b0fd6e 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs
@@ -36,6 +36,7 @@ namespace MonoDevelop.PackageManagement
public class RestorePackagesAction : IPackageAction
{
IPackageManagementSolution solution;
+ IPackageManagementEvents packageManagementEvents;
ISolutionPackageRepository solutionPackageRepository;
IPackageRepositoryCache repositoryCache;
IPackageManagerFactory packageManagerFactory;
@@ -66,6 +67,7 @@ namespace MonoDevelop.PackageManagement
IPackageManagerFactory packageManagerFactory)
{
this.solution = solution;
+ this.packageManagementEvents = packageManagementEvents;
this.repositoryCache = repositoryCache;
this.packageManagerFactory = packageManagerFactory;
@@ -168,6 +170,8 @@ namespace MonoDevelop.PackageManagement
ignoreDependencies: true,
allowPrereleaseVersions: true,
ignoreWalkInfo: true);
+
+ packageManagementEvents.OnPackageRestored (package);
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ThreadSafePackageManagementEvents.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ThreadSafePackageManagementEvents.cs
index f4a3eaf390..3f19a691e2 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ThreadSafePackageManagementEvents.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ThreadSafePackageManagementEvents.cs
@@ -195,7 +195,12 @@ namespace ICSharpCode.PackageManagement
{
unsafeEvents.OnParentPackageInstalled(package, project);
}
-
+
+ public void OnParentPackageInstalled (IPackage package, IPackageManagementProject project, IEnumerable<PackageOperation> operations)
+ {
+ unsafeEvents.OnParentPackageInstalled (package, project, operations);
+ }
+
public void OnParentPackageUninstalled(IPackage package, IPackageManagementProject project)
{
unsafeEvents.OnParentPackageUninstalled(package, project);
@@ -283,5 +288,15 @@ namespace ICSharpCode.PackageManagement
{
return unsafeEvents.OnFileRemoving (path);
}
+
+ public event EventHandler<PackageRestoredEventArgs> PackageRestored {
+ add { unsafeEvents.PackageRestored += value; }
+ remove { unsafeEvents.PackageRestored -= value; }
+ }
+
+ public void OnPackageRestored (IPackage package)
+ {
+ unsafeEvents.OnPackageRestored (package);
+ }
}
}
diff --git a/main/src/addins/NUnit/Gui/TestResultsPad.cs b/main/src/addins/NUnit/Gui/TestResultsPad.cs
index 9d49a55c49..f528d5c082 100644
--- a/main/src/addins/NUnit/Gui/TestResultsPad.cs
+++ b/main/src/addins/NUnit/Gui/TestResultsPad.cs
@@ -115,7 +115,7 @@ namespace MonoDevelop.NUnit
// Failures tree
failuresTreeView = new MonoDevelop.Ide.Gui.Components.PadTreeView ();
failuresTreeView.HeadersVisible = false;
- failuresStore = new TreeStore (typeof(Xwt.Drawing.Image), typeof(string), typeof(object), typeof(string), typeof(int));
+ failuresStore = new TreeStore (typeof(Xwt.Drawing.Image), typeof(string), typeof(object), typeof(string), typeof(int), typeof(int));
var pr = new CellRendererImage ();
CellRendererText tr = new CellRendererText ();
TreeViewColumn col = new TreeViewColumn ();
@@ -362,7 +362,9 @@ namespace MonoDevelop.NUnit
errorMessage = message;
AddErrorMessage ();
}
-
+ const int ErrorMessage = 1;
+ const int StackTrace = 2;
+
public void AddErrorMessage ()
{
string msg = GettextCatalog.GetString ("Internal error");
@@ -405,7 +407,7 @@ namespace MonoDevelop.NUnit
string fileName;
int lineNumber;
TryParseLocationFromStackTrace (line, out fileName, out lineNumber);
- failuresStore.AppendValues (row, null, Escape (line), test, fileName, lineNumber);
+ failuresStore.AppendValues (row, null, Escape (line), test, fileName, lineNumber, StackTrace);
}
}
@@ -485,8 +487,26 @@ namespace MonoDevelop.NUnit
var last = test.GetLastResult ();
if (last == null)
return;
+
+ Gtk.TreeModel foo;
+ Gtk.TreeIter iter;
+ if (!failuresTreeView.Selection.GetSelected (out foo, out iter))
+ return;
+
+ int type = (int)failuresStore.GetValue (iter, 5);
+
var clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
- clipboard.Text = last.StackTrace;
+ switch (type) {
+ case ErrorMessage:
+ clipboard.Text = last.Message;
+ break;
+ case StackTrace:
+ clipboard.Text = last.StackTrace;
+ break;
+ default:
+ clipboard.Text = last.Message + Environment.NewLine + "Stack trace:" + Environment.NewLine + last.StackTrace;
+ break;
+ }
}
}
@@ -561,7 +581,7 @@ namespace MonoDevelop.NUnit
Gtk.TreeIter iter;
if (!failuresTreeView.Selection.GetSelected (out foo, out iter))
return null;
-
+
UnitTest t = (UnitTest)failuresStore.GetValue (iter, 2);
return t;
}
@@ -624,11 +644,11 @@ namespace MonoDevelop.NUnit
TreeIter testRow = failuresStore.AppendValues (TestStatusIcon.Failure, Escape (test.FullName), test, file);
bool hasMessage = result.Message != null && result.Message.Length > 0;
if (hasMessage)
- failuresStore.AppendValues (testRow, null, Escape (result.Message), test);
+ failuresStore.AppendValues (testRow, null, Escape (result.Message), test, null, 0, ErrorMessage);
if (result.StackTrace != null && result.StackTrace.Length > 0) {
TreeIter row = testRow;
if (hasMessage)
- row = failuresStore.AppendValues (testRow, null, GettextCatalog.GetString ("Stack Trace"), test);
+ row = failuresStore.AppendValues (testRow, null, GettextCatalog.GetString ("Stack Trace"), test, null, 0, StackTrace);
AddStackTrace (row, result.StackTrace, test);
}
failuresTreeView.ScrollToCell (failuresStore.GetPath (testRow), null, false, 0, 0);
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs
index af78e7c4a0..71096f96a7 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs
@@ -1157,6 +1157,8 @@ namespace MonoDevelop.VersionControl.Subversion.Unix
{
destroypool (pool);
updatemonitor = null;
+ progressData.LogTimer.Dispose ();
+ progressData = null;
Monitor.Exit (svn);
}
@@ -1274,10 +1276,8 @@ namespace MonoDevelop.VersionControl.Subversion.Unix
}
long totalProgress = total;
- if (totalProgress != -1 && currentProgress >= totalProgress) {
- progressData.LogTimer.Dispose ();
+ if (totalProgress != -1 && currentProgress >= totalProgress)
return;
- }
progressData.Remainder += currentProgress % 1024;
if (progressData.Remainder >= 1024) {
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs
index 960ffa14d7..914e666d33 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs
@@ -167,12 +167,14 @@ namespace MonoDevelop.VersionControl
LoggingService.LogError ("VersionControl returned {0} items for {1}", infos.Length, localPath);
LoggingService.LogError ("The infos were: {0}", string.Join (" ::: ", infos.Select (i => i.LocalPath)));
}
- try {
+ // HACK: This was slowing down the IDE a lot in case in the eventuality of submodules.
+ return infos [0];
+ /*try {
return infos.Single ();
} catch (InvalidOperationException) {
// Workaround for #17216.
return infos [0];
- }
+ }*/
}
/// <summary>
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs
index de0f337225..0cc1588968 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs
@@ -213,6 +213,13 @@ namespace MonoDevelop.Projects.Formats.MSBuild
}
}
+ public void RefreshProjectBuilder ()
+ {
+ if (projectBuilder != null) {
+ projectBuilder.Refresh ();
+ }
+ }
+
public override void Dispose ()
{
base.Dispose ();
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
index d6a7a8c7f0..7efaac4d77 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
@@ -1269,5 +1269,13 @@ namespace MonoDevelop.Projects
importsAdded.Clear ();
importsRemoved.Clear ();
}
+
+ public void RefreshProjectBuilder ()
+ {
+ var handler = ItemHandler as MSBuildProjectHandler;
+ if (handler != null) {
+ handler.RefreshProjectBuilder ();
+ }
+ }
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs
index 2d92bc3a6c..fc9ee9731a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs
@@ -180,7 +180,7 @@ namespace MonoDevelop.Projects
}
// Used by serialization only
- [ProjectPathItemProperty ("StartupItem", DefaultValue=null)]
+ [ProjectPathItemProperty ("StartupItem", DefaultValue=null, ReadOnly=true)]
internal string StartupItemFileName {
get {
if (SingleStartup && StartupItem != null)
@@ -190,8 +190,8 @@ namespace MonoDevelop.Projects
}
set { startItemFileName = value; }
}
-
- [ItemProperty ("StartupItems")]
+
+ [ItemProperty ("StartupItems", ReadOnly=true)]
[ProjectPathItemProperty ("Item", Scope="*")]
internal List<string> MultiStartupItemFileNames {
get {
@@ -241,8 +241,26 @@ namespace MonoDevelop.Projects
LoadItemProperties (UserProperties, RootFolder, "MonoDevelop.Ide.ItemProperties");
}
+ public override void LoadUserProperties ()
+ {
+ base.LoadUserProperties ();
+ var sitem = UserProperties.GetValue<string> ("StartupItem");
+ if (!string.IsNullOrEmpty (sitem))
+ startItemFileName = GetAbsoluteChildPath (sitem);
+
+ var sitems = UserProperties.GetValue<string[]> ("StartupItems");
+ if (sitems != null && sitems.Length > 0)
+ multiStartupItems = sitems.Select (p => (string) GetAbsoluteChildPath (p)).ToList ();
+ }
+
public override void SaveUserProperties ()
{
+ UserProperties.SetValue ("StartupItem", (string) GetRelativeChildPath (StartupItemFileName));
+ if (MultiStartupItemFileNames != null) {
+ UserProperties.SetValue ("StartupItems", MultiStartupItemFileNames.Select (p => (string)GetRelativeChildPath (p)).ToArray ());
+ } else
+ UserProperties.RemoveValue ("StartupItems");
+
CollectItemProperties (UserProperties, RootFolder, "MonoDevelop.Ide.ItemProperties");
base.SaveUserProperties ();
CleanItemProperties (UserProperties, RootFolder, "MonoDevelop.Ide.ItemProperties");
@@ -673,7 +691,7 @@ namespace MonoDevelop.Projects
foreach (SolutionConfiguration conf in Configurations)
conf.AddItem (eitem);
// If there is no startup project or it is an invalid one, use the new project as startup if possible
- if ((StartupItem == null || !StartupItem.SupportsExecute ()) && eitem.SupportsExecute ())
+ if (!Loading && (StartupItem == null || !StartupItem.SupportsExecute ()) && eitem.SupportsExecute ())
StartupItem = eitem;
} else {
// Reuse the configuration information of the replaced item
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs
index 181137d274..7fffbd3b8d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs
@@ -347,7 +347,7 @@ namespace MonoDevelop.Components.Docking
if (it.ShowingContextMemu)
return true;
// Don't hide the item if it has the focus. Try again later.
- if (it.Widget.FocusChild != null && !force && ((Gtk.Window)autoShowFrame.Toplevel).HasToplevelFocus)
+ if (it.Widget.FocusChild != null && !force && autoShowFrame != null && ((Gtk.Window)autoShowFrame.Toplevel).HasToplevelFocus)
return true;
// Don't hide the item if the mouse pointer is still inside the window. Try again later.
int px, py;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs
index ec06229cd2..166f3e401b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs
@@ -139,7 +139,7 @@ namespace MonoDevelop.Components
using (var stream = File.OpenRead (path))
newImage = Xwt.Drawing.Image.FromStream (stream);
if (Math.Abs (scaleFactor - 1) > 0.2)
- newImage = Image.Scale (1 / scaleFactor);
+ newImage = newImage.Scale (1 / scaleFactor);
}
UpdateImage (newImage, downloaded);
} catch (Exception ex) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/TreeViewState.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/TreeViewState.cs
index 72f90c9c0f..f99b9b3dbc 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/TreeViewState.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/TreeViewState.cs
@@ -34,9 +34,9 @@ namespace MonoDevelop.Components
{
public class TreeViewState
{
+ List<NodeInfo> state;
TreeView tree;
int idColumn;
- List<NodeInfo> state;
class NodeInfo {
public object Id;
@@ -53,109 +53,125 @@ namespace MonoDevelop.Components
public void Save ()
{
- TreeIter it;
+ TreeIter iter;
+
state = new List<NodeInfo> ();
- if (!tree.Model.GetIterFirst (out it))
+ if (!tree.Model.GetIterFirst (out iter))
return;
- Save (state, it);
+
+ Save (state, iter);
}
- void Save (List<NodeInfo> info, TreeIter it)
+ void Save (ICollection<NodeInfo> collection, TreeIter iter)
{
do {
- object id = tree.Model.GetValue (it, idColumn);
- NodeInfo ni = new NodeInfo ();
- ni.Id = id;
- ni.Expanded = tree.GetRowExpanded (tree.Model.GetPath (it));
- ni.Selected = tree.Selection.IterIsSelected (it);
- info.Add (ni);
- TreeIter cit;
- if (tree.Model.IterChildren (out cit, it)) {
- ni.ChildInfo = new List<NodeInfo> ();
- Save (ni.ChildInfo, cit);
+ TreeIter child;
+
+ var node = new NodeInfo {
+ Expanded = tree.GetRowExpanded (tree.Model.GetPath (iter)),
+ Selected = tree.Selection.IterIsSelected (iter),
+ Id = tree.Model.GetValue (iter, idColumn)
+ };
+
+ collection.Add (node);
+
+ if (tree.Model.IterChildren (out child, iter)) {
+ node.ChildInfo = new List<NodeInfo> ();
+ Save (node.ChildInfo, child);
}
- }
- while (tree.Model.IterNext (ref it));
+ } while (tree.Model.IterNext (ref iter));
}
public void Load ()
{
if (state == null)
throw new InvalidOperationException ("State not saved");
- TreeIter it;
- if (!tree.Model.GetIterFirst (out it))
+
+ TreeIter iter;
+ if (!tree.Model.GetIterFirst (out iter))
return;
- Load (state, it);
+
+ Load (state, iter);
state = null;
}
- void Load (List<NodeInfo> info, TreeIter it)
+ void Load (List<NodeInfo> info, TreeIter iter)
{
- bool oneSelected = false;
+ var nodes = new Dictionary<NodeInfo, TreeIter> ();
var infoCopy = new List<NodeInfo> (info);
- Dictionary<NodeInfo,TreeIter> nodes = new Dictionary<NodeInfo, TreeIter> ();
+ bool oneSelected = false;
+
do {
- object id = tree.Model.GetValue (it, idColumn);
+ object id = tree.Model.GetValue (iter, idColumn);
NodeInfo ni = ExtractNodeInfo (info, id);
+
if (ni != null) {
- nodes [ni] = it;
+ nodes[ni] = iter;
+
if (ni.Expanded)
- tree.ExpandRow (tree.Model.GetPath (it), false);
+ tree.ExpandRow (tree.Model.GetPath (iter), false);
else
- tree.CollapseRow (tree.Model.GetPath (it));
+ tree.CollapseRow (tree.Model.GetPath (iter));
+
if (ni.Selected) {
oneSelected = true;
- tree.Selection.SelectIter (it);
+ tree.Selection.SelectIter (iter);
+ } else {
+ tree.Selection.UnselectIter (iter);
}
- else
- tree.Selection.UnselectIter (it);
-
+
if (ni.ChildInfo != null) {
- TreeIter cit;
- if (tree.Model.IterChildren (out cit, it))
- Load (ni.ChildInfo, cit);
+ TreeIter child;
+
+ if (tree.Model.IterChildren (out child, iter))
+ Load (ni.ChildInfo, child);
}
}
- }
- while (tree.Model.IterNext (ref it));
+ } while (tree.Model.IterNext (ref iter));
// If this tree level had a selected node and this node has been deleted, then
// try to select and adjacent node
if (!oneSelected) {
// 'info' contains the nodes that have not been inserted
if (info.Any (n => n.Selected)) {
- NodeInfo an = FindAdjacentNode (infoCopy, nodes, info[0]);
- if (an != null) {
- it = nodes [an];
- tree.Selection.SelectIter (it);
+ NodeInfo adjacent = FindAdjacentNode (infoCopy, nodes, info[0]);
+
+ if (adjacent != null) {
+ iter = nodes [adjacent];
+ tree.Selection.SelectIter (iter);
}
}
}
}
- NodeInfo FindAdjacentNode (List<NodeInfo> infos, Dictionary<NodeInfo,TreeIter> nodes, NodeInfo referenceNode)
+ static NodeInfo FindAdjacentNode (IList<NodeInfo> infos, IDictionary<NodeInfo,TreeIter> nodes, NodeInfo referenceNode)
{
- int i = infos.IndexOf (referenceNode);
- for (int n=i; n<infos.Count; n++) {
- if (nodes.ContainsKey (infos[n]))
- return infos[n];
+ int index = infos.IndexOf (referenceNode);
+
+ for (int i = index; i < infos.Count; i++) {
+ if (nodes.ContainsKey (infos[i]))
+ return infos[i];
}
- for (int n=i-1; n>=0; n--) {
- if (nodes.ContainsKey (infos[n]))
- return infos[n];
+
+ for (int i = index - 1; i >= 0; i--) {
+ if (nodes.ContainsKey (infos[i]))
+ return infos[i];
}
+
return null;
}
- NodeInfo ExtractNodeInfo (List<NodeInfo> info, object id)
+ static NodeInfo ExtractNodeInfo (IList<NodeInfo> info, object id)
{
- for (int n=0; n<info.Count; n++) {
- NodeInfo ni = (NodeInfo) info [n];
+ for (int i = 0; i < info.Count; i++) {
+ var ni = info[i];
+
if (object.Equals (ni.Id, id)) {
- info.RemoveAt (n);
+ info.RemoveAt (i);
return ni;
}
}
+
return null;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs
index 12c91fdb78..4ff1fd707a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs
@@ -69,11 +69,12 @@ namespace MonoDevelop.Ide.CodeFormatting
formatter.OnTheFlyFormat (doc, 0, doc.Editor.Length);
}
} else {
- string formattedText = formatter.FormatText (doc.Project.Policies, doc.Editor.Text);
- if (formattedText == null)
+ var text = doc.Editor.Text;
+ string formattedText = formatter.FormatText (doc.Project.Policies, text);
+ if (formattedText == null || formattedText == text)
return;
- doc.Editor.Replace (0, doc.Editor.Text.Length, formattedText);
+ doc.Editor.Replace (0, text.Length, formattedText);
}
doc.Editor.Document.CommitUpdateAll ();
}
@@ -111,8 +112,9 @@ namespace MonoDevelop.Ide.CodeFormatting
} else {
var pol = doc.Project != null ? doc.Project.Policies : null;
try {
- string text = formatter.FormatText (pol, editor.Text, selection.Offset, selection.EndOffset);
- if (text != null) {
+ var editorText = editor.Text;
+ string text = formatter.FormatText (pol, editorText, selection.Offset, selection.EndOffset);
+ if (text != null && editorText.Substring (selection.Offset, selection.Length) != text) {
editor.Replace (selection.Offset, selection.Length, text);
}
} catch (Exception e) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs
index 4573cde7be..a42caae6b0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs
@@ -51,6 +51,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
{
public CommonAboutDialog ()
{
+ Name = "wizard_dialog";
Title = string.Format (GettextCatalog.GetString ("About {0}"), BrandingService.ApplicationName);
TransientFor = IdeApp.Workbench.RootWindow;
AllowGrow = false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs
index f008cf6790..c5468e9ee5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs
@@ -357,6 +357,7 @@ namespace MonoDevelop.Ide.Gui
box.PackStart (toolbar.Container, false, false, 0);
box.ReorderChild (toolbar.Container, 0);
toolbar.Visible = (targetView == ActiveViewContent);
+ PathWidgetEnabled = !toolbar.Visible;
}
return toolbar;
}
@@ -654,6 +655,12 @@ namespace MonoDevelop.Ide.Gui
return;
pathDoc.PathChanged += HandlePathChange;
this.pathDoc = pathDoc;
+
+ // If a toolbar is already being shown, we don't show the pathbar yet
+ DocumentToolbar toolbar;
+ if (documentToolbars.TryGetValue (ActiveViewContent, out toolbar) && toolbar.Visible)
+ return;
+
PathWidgetEnabled = true;
pathBar.SetPath (pathDoc.CurrentPath);
}
@@ -727,11 +734,15 @@ namespace MonoDevelop.Ide.Gui
pathedDocument = (IPathedDocument) viewContents[newIndex].GetContent (typeof(IPathedDocument));
}
- if (pathedDocument != null)
+ var toolbarVisible = false;
+ foreach (var t in documentToolbars) {
+ toolbarVisible = ActiveViewContent == t.Key;
+ t.Value.Container.Visible = toolbarVisible;
+ }
+
+ if (pathedDocument != null && !toolbarVisible)
AttachToPathedDocument (pathedDocument);
- foreach (var t in documentToolbars)
- t.Value.Container.Visible = ActiveViewContent == t.Key;
if (subViewContent != null)
subViewContent.Selected ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
index 6f7a898781..9cab784847 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
@@ -393,9 +393,11 @@ namespace MonoDevelop.Ide.TypeSystem
var file = pcnt._content.GetFile (fileName);
if (file != null) {
var newResult = parser.Parse (false, fileName, new StringReader (content), pcnt.Project);
- pcnt.UpdateContent (c => c.AddOrUpdateFiles (newResult.ParsedFile));
- pcnt.InformFileRemoved (new ParsedFileEventArgs (file));
- pcnt.InformFileAdded (new ParsedFileEventArgs (newResult.ParsedFile));
+ if ((newResult.Flags & ParsedDocumentFlags.NonSerializable) != ParsedDocumentFlags.NonSerializable) {
+ pcnt.UpdateContent (c => c.AddOrUpdateFiles (newResult.ParsedFile));
+ pcnt.InformFileRemoved (new ParsedFileEventArgs (file));
+ pcnt.InformFileAdded (new ParsedFileEventArgs (newResult.ParsedFile));
+ }
}
}
}
@@ -2669,7 +2671,7 @@ namespace MonoDevelop.Ide.TypeSystem
return;
parsedFiles.Add (Tuple.Create (parsedDocument, Context._content.GetFile (fileName)));
}
- Context.UpdateContent (c => c.AddOrUpdateFiles (parsedFiles.Select (p => p.Item1.ParsedFile)));
+ Context.UpdateContent (c => c.AddOrUpdateFiles (parsedFiles.Where (f => (f.Item1.Flags & ParsedDocumentFlags.NonSerializable) != ParsedDocumentFlags.NonSerializable).Select (p => p.Item1.ParsedFile)));
foreach (var file in parsedFiles) {
if (token.IsCancellationRequested)
return;
diff --git a/main/src/core/MonoDevelop.Ide/gtkrc b/main/src/core/MonoDevelop.Ide/gtkrc
index 46079b7c48..cd967ef523 100644
--- a/main/src/core/MonoDevelop.Ide/gtkrc
+++ b/main/src/core/MonoDevelop.Ide/gtkrc
@@ -228,6 +228,11 @@ style "combo-box" = "default"
}
}
+style "wizard-dialog"
+{
+ GtkDialog::content-area-border = 0
+}
+
style "combo-box-entry" = "combo-box"
{
engine "xamarin" {
@@ -353,6 +358,7 @@ class "GtkScale" style "scale"
#widget "*GtkEntry" style "entry"
widget "*search-entry*" style "search-entry"
widget "*GtkTextView" style "entry"
+widget "wizard_dialog" style "wizard-dialog"
widget_class "*<GtkButton>" style "button"
widget_class "*<GtkToggleButton>" style "toggle-button"
diff --git a/main/src/core/MonoDevelop.Ide/gtkrc.win32 b/main/src/core/MonoDevelop.Ide/gtkrc.win32
index af0fa8c5bd..2fc52a45b9 100644
--- a/main/src/core/MonoDevelop.Ide/gtkrc.win32
+++ b/main/src/core/MonoDevelop.Ide/gtkrc.win32
@@ -264,6 +264,11 @@ style "search-entry" = "wider"
bg[NORMAL] = @base_color
}
+style "wizard-dialog"
+{
+ GtkDialog::content-area-border = 0
+}
+
style "scrollbar" = "default"
{
GtkRange::slider-width = 7
@@ -317,6 +322,7 @@ widget "*search-entry*" style "search-entry"
widget_class "*<GtkButton>" style "button"
widget "*.GtkToggleButton" style "button"
+widget "wizard_dialog" style "wizard-dialog"
widget_class "*<GtkMenu>*" style "menu"
widget_class "*<GtkMenuItem>*" style "menu-item"
diff --git a/main/src/core/MonoDevelop.Ide/gtkrc.win32-vista b/main/src/core/MonoDevelop.Ide/gtkrc.win32-vista
index db29eeb54d..0bd3b3b586 100644
--- a/main/src/core/MonoDevelop.Ide/gtkrc.win32-vista
+++ b/main/src/core/MonoDevelop.Ide/gtkrc.win32-vista
@@ -233,6 +233,11 @@ style "notebook" = "default"
}
}
+style "wizard-dialog"
+{
+ GtkDialog::content-area-border =
+}
+
style "radio-button" = "default"
{
GtkCheckButton::indicator-size = 15
@@ -318,6 +323,8 @@ widget "*search-entry*" style "search-entry"
widget_class "*<GtkButton>" style "button"
widget "*.GtkToggleButton" style "button"
+widget "wizard_dialog" style "wizard-dialog"
+
widget_class "*<GtkMenu>*" style "menu"
widget_class "*<GtkMenuItem>*" style "menu-item"
diff --git a/main/tests/test-projects/console-project/ConsoleProject.sln b/main/tests/test-projects/console-project/ConsoleProject.sln
index 199aa24543..8ff45c4f45 100755
--- a/main/tests/test-projects/console-project/ConsoleProject.sln
+++ b/main/tests/test-projects/console-project/ConsoleProject.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleProject", "ConsoleProject\ConsoleProject.csproj", "{4A9E3523-48F0-4BDF-A0F4-49DAD4431FAB}"
@@ -14,9 +14,6 @@ Global
{4A9E3523-48F0-4BDF-A0F4-49DAD4431FAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A9E3523-48F0-4BDF-A0F4-49DAD4431FAB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = ConsoleProject\ConsoleProject.csproj
- EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
diff --git a/main/tests/test-projects/generated-console-project/TestSolution.sln b/main/tests/test-projects/generated-console-project/TestSolution.sln
index 3af6b2e2a1..d6c9bca5fb 100644
--- a/main/tests/test-projects/generated-console-project/TestSolution.sln
+++ b/main/tests/test-projects/generated-console-project/TestSolution.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestProject", "TestProject.csproj", "{969F05E2-0E79-4C5B-982C-8F3DD4D46311}"
@@ -14,7 +14,4 @@ Global
{969F05E2-0E79-4C5B-982C-8F3DD4D46311}.Release|Any CPU.ActiveCfg = Release|Any CPU
{969F05E2-0E79-4C5B-982C-8F3DD4D46311}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = TestProject.csproj
- EndGlobalSection
EndGlobal
diff --git a/main/tests/test-projects/generated-shared-project/TestSolution.sln b/main/tests/test-projects/generated-shared-project/TestSolution.sln
index 3ec62a6e4a..8484fa154f 100644
--- a/main/tests/test-projects/generated-shared-project/TestSolution.sln
+++ b/main/tests/test-projects/generated-shared-project/TestSolution.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestProject", "TestProject.csproj", "{7DE4B613-BAB6-49DE-83FA-707D4E120306}"
@@ -16,7 +16,4 @@ Global
{7DE4B613-BAB6-49DE-83FA-707D4E120306}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DE4B613-BAB6-49DE-83FA-707D4E120306}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = TestProject.csproj
- EndGlobalSection
EndGlobal
diff --git a/main/tests/test-projects/solution-build-order/ConsoleApplication3.sln b/main/tests/test-projects/solution-build-order/ConsoleApplication3.sln
index d9dfe95b00..f65cb04327 100644
--- a/main/tests/test-projects/solution-build-order/ConsoleApplication3.sln
+++ b/main/tests/test-projects/solution-build-order/ConsoleApplication3.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
VisualStudioVersion = 12.0.30312.1
@@ -49,9 +49,6 @@ Global
{D98AE4E1-382B-4E3C-8F1D-6DDC469392FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D98AE4E1-382B-4E3C-8F1D-6DDC469392FF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = ConsoleApplication3\ConsoleApplication3.csproj
- EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
diff --git a/main/tests/test-projects/unsupported-project/console-with-libs.sln b/main/tests/test-projects/unsupported-project/console-with-libs.sln
index 3a1c54554b..866b16def0 100644
--- a/main/tests/test-projects/unsupported-project/console-with-libs.sln
+++ b/main/tests/test-projects/unsupported-project/console-with-libs.sln
@@ -1,4 +1,4 @@
-
+
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "console-with-libs", "console-with-libs\console-with-libs.csproj", "{EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}"
@@ -27,7 +27,6 @@ Global
{EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = console-with-libs\console-with-libs.csproj
name = console-with-libs
EndGlobalSection
EndGlobal