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:
authorDavid Karlaš <david.karlas@xamarin.com>2017-03-07 17:28:34 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2017-03-07 17:28:34 +0300
commit41e227d8187ee05a3496375d514bcb08b9b8de6b (patch)
treede01a949df06bba86b783bb7ca46550d3bc88cd6
parenta11ede7183f77eaca433a9bffabafb940f9594ff (diff)
parentaa201bd070d1e1aa9f09dfe5b7a46f5573870a13 (diff)
Merge vNext into roslyn-ivt
# Conflicts: # main/external/debugger-libs # main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj # main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs # main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj # main/src/core/MonoDevelop.Ide/packages.config # version-checks
-rw-r--r--.gitignore1
-rw-r--r--NuGet.config1
m---------main/external/debugger-libs0
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Completions.fs4
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Lexer.fs6
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharp.Shared/MonoDevelop.FSharp.Shared.fsproj509
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharp.Tests/CompilerArguments.fs17
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharp.Tests/MonoDevelop.FSharp.Tests.fsproj560
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharp.Tests/TemplateTests.fs4
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpBinding.addin.xml2
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpIndentationTracker.fs3
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpOutlineTextEditorExtension.fs24
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpParser.fs2
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs4
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpResolverProvider.fs2
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpSyntaxMode.fs11
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpTextEditorCompletion.fs2
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/MonoDevelop.FSharp.fsproj351
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerArguments.fs16
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/FSharpConsoleView.fs2
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/LanguageService.fs14
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/Lexer.fs6
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/MDLanguageService.fs7
-rw-r--r--main/external/fsharpbinding/MonoDevelop.FSharpi.Service/MonoDevelop.FSharpInteractive.Service.fsproj556
-rw-r--r--main/external/fsharpbinding/paket.dependencies3
-rw-r--r--main/external/fsharpbinding/paket.lock160
m---------main/external/guiunit0
m---------main/external/mono-addins0
-rw-r--r--main/src/addins/CSharpBinding/CSharpBinding.addin.xml1
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/ParameterHinting/ParameterHintingEngine.cs15
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextPasteHandler.cs23
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs76
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs130
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/SelectorView.cs47
-rw-r--r--main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/VSCodeDebuggerSession.cs36
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs53
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/PackageDependenciesNodeCommandHandler.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageDependenciesNodeCommandHandler.cs)3
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/PackageDependencyNodeCommandHandler.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageDependencyNodeCommandHandler.cs)72
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/ProjectOrAssemblyDependenciesCommandHandler.cs40
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNode.cs74
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNodeBuilder.cs68
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNode.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs)15
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNodeBuilder.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs)23
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNodeBuilderExtension.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs)54
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreFolderNodeBuilderExtension.cs (renamed from main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreFolderNodeBuilderExtension.cs)2
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectNodeBuilderExtension.cs (renamed from main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectNodeBuilderExtension.cs)2
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectReferencesNodeBuilderExtension.cs57
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNode.cs94
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNodeBuilder.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs)31
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNode.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs)39
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNodeBuilder.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs)6
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNodeCache.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs)54
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNode.cs74
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNodeBuilder.cs68
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNode.cs82
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNodeBuilder.cs112
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/TargetFrameworkNode.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs)47
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/TargetFrameworkNodeBuilder.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs)3
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreMSBuildProjectTests.cs42
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/DotNetCoreTestProvider.cs5
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/IDotNetCoreTestProvider.cs2
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj154
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionCommand.cs6
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionHandler.cs58
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectBuilderMaintainer.cs2
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs47
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs19
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfiguration.cs107
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfigurationEditor.cs166
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetMigrate.cs196
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/ProjectReferenceExtensions.cs (renamed from main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreServices.cs)19
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkExtensions.cs5
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkMonikerExtensions.cs13
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Properties/MonoDevelop.DotNetCore.addin.xml163
-rwxr-xr-xmain/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs9
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs.xft.xml19
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.csproj8
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.xpt.xml23
-rwxr-xr-xmain/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs24
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs.xft.xml19
-rwxr-xr-xmain/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs37
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs.xft.xml19
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.csproj11
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.xpt.xml23
-rwxr-xr-xmain/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs11
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs.xft.xml19
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.csproj7
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.xpt.xml23
-rwxr-xr-xmain/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs13
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs.xft.xml19
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.csproj13
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.xpt.xml23
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/packages.config2
-rw-r--r--main/src/addins/MonoDevelop.DotNetCore/pull-package.cs53
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs17
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageReferenceNodeCommandHandler.cs38
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs11
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetPackageManager.cs22
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableUninstallNuGetPackagesAction.cs66
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreNuGetProjectTests.cs15
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UninstallNuGetPackagesActionTests.cs136
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml22
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj12
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs36
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/INuGetPackageManager.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs7
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetPackageManager.cs14
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetPackageLicenseAuditor.cs8
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdateChecker.cs100
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs10
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestoreNuGetPackagesAction.cs1
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallNuGetPackagesAction.cs137
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor.Theatrics/SmartScrolledWindow.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/GtkGestures.cs254
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/LayoutCache.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/MonoTextEditor.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextArea.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextEditorAccessibility.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs10
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/BehaviorPanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/NewColorShemeDialog.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj1
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.NewColorShemeDialog.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic5
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs7
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Highlighting/XmlReadHelper.cs2
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/FileSettingsStore.cs2
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/RedBlackTree.cs2
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Actions/ClipboardActions.cs2
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs4
-rw-r--r--main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/HeightTree.cs6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetRuntime.cs5
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs12
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExternalConsoleFactory.cs9
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/OperationConsoleFactory.cs13
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/RemoteProcessConnection.cs40
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs78
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs32
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs35
-rw-r--r--main/src/core/MonoDevelop.Ide/ExtensionModel/Templates.addin.xml6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs16
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarModels.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs89
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextPasteHandler.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxHighlighting.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs10
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextLinkModeOptions.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/AssemblyRunConfigurationEditor.cs13
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/IProjectTemplatingProvider.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProcessedTemplateResult.cs67
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs226
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs64
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplatingProvider.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplatingService.cs25
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj31
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/packages.config9
-rw-r--r--main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.v4.0.cs5
-rw-r--r--main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/ClipboardTests.cs4
-rw-r--r--main/tests/MonoDevelop.CSharpBinding.Tests/Features/ParameterHinting/ParameterHintingTests.cs29
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs8
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MSBuildGlobTests.cs25
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs3
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs44
-rw-r--r--main/tests/UnitTests/TestBase.cs5
-rwxr-xr-xmain/tests/test-projects/ConsoleApp-VS2010/ConsoleApplication.csproj1
-rwxr-xr-xmain/tests/test-projects/msbuild-tests/functions.csproj3
-rwxr-xr-xversion-checks2
-rw-r--r--version.config2
186 files changed, 3618 insertions, 3409 deletions
diff --git a/.gitignore b/.gitignore
index 4f63417c9e..01705eb107 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,7 @@ obj/
/scripts/configure.exe
/main/packages
/main/.nuget/
+pull-package.exe
#VS writes these sometimes even when it doesn't change anything
/main/_UpgradeReport_Files
diff --git a/NuGet.config b/NuGet.config
index 7bab043aad..b5e8933c61 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -6,5 +6,6 @@
<add key="Roslyn Nightlies" value ="https://dotnet.myget.org/F/roslyn/api/v3/index.json" />
<add key="NuGetizer3000" value="https://ci.appveyor.com/nuget/nugetizer3000" />
<add key="VSTest" value="https://dotnet.myget.org/F/vstest/" />
+ <add key="Templating" value="https://dotnet.myget.org/F/templating/" />
</packageSources>
</configuration>
diff --git a/main/external/debugger-libs b/main/external/debugger-libs
-Subproject 621df7c2941284d1b8262bb6f90440d43804075
+Subproject c79f049f50d6bdc16aeacdcc4dceadf905a335c
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Completions.fs b/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Completions.fs
index 8d33294c90..7133fc76bd 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Completions.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Completions.fs
@@ -151,7 +151,7 @@ module Completion =
let getCompletions (fsiSession: FsiEvaluationSession, input:string, column: int) =
async {
- let parseResults, checkResults, _checkProjectResults = fsiSession.ParseAndCheckInteraction(input)
+ let! parseResults, checkResults, _checkProjectResults = fsiSession.ParseAndCheckInteraction(input)
let longName,residue = Parsing.findLongIdentsAndResidue(column, input)
if residue.Length > 0 && residue.[0] = '#' then
return hashDirectives
@@ -185,7 +185,7 @@ module Completion =
let getParameterHints (fsiSession: FsiEvaluationSession, input:string, column: int) =
async {
- let _parseResults, checkResults, _checkProjectResults = fsiSession.ParseAndCheckInteraction("();;")
+ let! _parseResults, checkResults, _checkProjectResults = fsiSession.ParseAndCheckInteraction("();;")
let lineToCaret = input.[0..column-1]
let column = lineToCaret |> Seq.tryFindIndexBack (fun c -> c <> '(' && c <> ' ')
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Lexer.fs b/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Lexer.fs
index 365877c353..9e42d8e719 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Lexer.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/Lexer.fs
@@ -46,7 +46,7 @@ module Lexer =
| Some _, newLexState ->
loop lineTokenizer newLexState
- let sourceTokenizer = SourceTokenizer(defines, None)
+ let sourceTokenizer = FSharpSourceTokenizer(defines, None)
let lines = String.getLines source
let mutable lexState = 0L
for line in lines do
@@ -83,7 +83,7 @@ module Lexer =
let defines =
args |> Seq.choose (fun s -> if s.StartsWith "--define:" then Some s.[9..] else None)
|> Seq.toList
- let sourceTokenizer = SourceTokenizer(defines, None)
+ let sourceTokenizer = FSharpSourceTokenizer(defines, None)
let lineTokenizer = sourceTokenizer.CreateLineTokenizer lineStr
let rec loop lexState acc =
match lineTokenizer.ScanToken lexState with
@@ -155,7 +155,7 @@ module Lexer =
let getTokensWithInitialState state lines filename defines =
[ let mutable state = state
- let sourceTok = SourceTokenizer(defines, filename)
+ let sourceTok = FSharpSourceTokenizer(defines, filename)
for lineText in lines do
let tokenizer = sourceTok.CreateLineTokenizer(lineText)
let rec parseLine() =
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/MonoDevelop.FSharp.Shared.fsproj b/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/MonoDevelop.FSharp.Shared.fsproj
index 809f9a88b7..e255939bcd 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/MonoDevelop.FSharp.Shared.fsproj
+++ b/main/external/fsharpbinding/MonoDevelop.FSharp.Shared/MonoDevelop.FSharp.Shared.fsproj
@@ -62,16 +62,7 @@
<Import Project="$(FSharpTargetsPath)" />
<Import Project="..\.paket\paket.targets" />
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="ExtCore">
- <HintPath>..\packages\ExtCore\lib\net40\ExtCore.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="ExtCore">
<HintPath>..\packages\ExtCore\lib\net45\ExtCore.dll</HintPath>
@@ -82,7 +73,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Compiler.Service.MSBuild.v12">
<HintPath>..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.MSBuild.v12.dll</HintPath>
@@ -98,16 +89,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\net20\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Core">
<HintPath>..\packages\FSharp.Core\lib\net40\FSharp.Core.dll</HintPath>
@@ -116,85 +98,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'Silverlight' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile47')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Buffers">
- <HintPath>..\packages\System.Buffers\lib\netstandard1.1\System.Buffers.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.0\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.3\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')) Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile84')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Collections.Immutable">
<HintPath>..\packages\System.Collections.Immutable\lib\netstandard1.0\System.Collections.Immutable.dll</HintPath>
@@ -203,187 +109,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="System.Collections.Immutable">
- <HintPath>..\packages\System.Collections.Immutable\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.0\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.3\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.3\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.5\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.0\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.3\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.0\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.3\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.5\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.1\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.3\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5')">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.0\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.6'">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.6\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.0\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.3\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.5\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Extensions">
- <HintPath>..\packages\System.Reflection.Extensions\ref\netstandard1.0\System.Reflection.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3'))">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Reflection.Metadata">
<HintPath>..\packages\System.Reflection.Metadata\lib\netstandard1.1\System.Reflection.Metadata.dll</HintPath>
@@ -392,232 +120,5 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="System.Reflection.Metadata">
- <HintPath>..\packages\System.Reflection.Metadata\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Primitives">
- <HintPath>..\packages\System.Reflection.Primitives\ref\netstandard1.0\System.Reflection.Primitives.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Resources.ResourceManager">
- <HintPath>..\packages\System.Resources.ResourceManager\ref\netstandard1.0\System.Resources.ResourceManager.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.2'">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.0\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.3\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.5\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.Handles">
- <HintPath>..\packages\System.Runtime.Handles\ref\netstandard1.3\System.Runtime.Handles.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.1'">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.1\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.2'">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.2\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.3\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.5\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding">
- <HintPath>..\packages\System.Text.Encoding\ref\netstandard1.0\System.Text.Encoding.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding">
- <HintPath>..\packages\System.Text.Encoding\ref\netstandard1.3\System.Text.Encoding.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding.Extensions">
- <HintPath>..\packages\System.Text.Encoding.Extensions\ref\netstandard1.0\System.Text.Encoding.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding.Extensions">
- <HintPath>..\packages\System.Text.Encoding.Extensions\ref\netstandard1.3\System.Text.Encoding.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Threading">
- <HintPath>..\packages\System.Threading\ref\netstandard1.0\System.Threading.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Threading">
- <HintPath>..\packages\System.Threading\ref\netstandard1.3\System.Threading.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And $(TargetFrameworkVersion) == 'v8.1')">
- <ItemGroup>
- <Reference Include="System.Threading.Tasks">
- <HintPath>..\packages\System.Threading.Tasks\ref\netstandard1.0\System.Threading.Tasks.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Threading.Tasks">
- <HintPath>..\packages\System.Threading.Tasks\ref\netstandard1.3\System.Threading.Tasks.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
</Project>
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/CompilerArguments.fs b/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/CompilerArguments.fs
index 94dd2bc838..cf3065784e 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/CompilerArguments.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/CompilerArguments.fs
@@ -20,8 +20,13 @@ type CompilerArgumentsTests() =
let path = path.Substring(0,path.Length - 1)
path
+ let createFSharpProject() =
+ let testProject = Services.ProjectService.CreateDotNetProject ("F#")
+ testProject.FileName <- FilePath "FSharpProject.fsproj"
+ testProject
+
member private x.``Run Only mscorlib referenced`` (assemblyName) =
- use testProject = Services.ProjectService.CreateDotNetProject ("F#")
+ use testProject = createFSharpProject()
let assemblyName = match assemblyName with Fqn a -> fromFqn a | File a -> a
let _ = testProject.AddReference assemblyName
let references =
@@ -31,16 +36,14 @@ type CompilerArgumentsTests() =
ConfigurationSelector.Default,
true)
- references.Length |> should equal 3
-
//The two paths for mscorlib and FSharp.Core should match
let testPaths = references |> List.map makeTestableReference
match testPaths |> List.map Path.GetDirectoryName with
- | [one; two; three] -> ()//one |> should equal three
- | _ -> Assert.Fail("Too many references returned")
+ | [one; two; three] -> ()
+ | _ -> Assert.Fail(sprintf "Too many references returned %A" testPaths)
member private x.``Run Only FSharp.Core referenced``(assemblyName) =
- use testProject = Services.ProjectService.CreateDotNetProject ("F#")
+ use testProject = createFSharpProject()
let assemblyName = match assemblyName with Fqn a -> fromFqn a | File a -> a
let reference = testProject.AddReference assemblyName
let references =
@@ -102,7 +105,7 @@ type CompilerArgumentsTests() =
[<Test>]
member x.``Explicit FSharp.Core and mscorlib referenced``() =
if not Platform.IsWindows then
- use testProject = Services.ProjectService.CreateDotNetProject ("F#")
+ use testProject = createFSharpProject()
let _ = testProject.AddReference "mscorlib"
let reference = testProject.AddReference "FSharp.Core.dll"
let references =
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/MonoDevelop.FSharp.Tests.fsproj b/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/MonoDevelop.FSharp.Tests.fsproj
index 860e3ef2b2..e50e9f33fb 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/MonoDevelop.FSharp.Tests.fsproj
+++ b/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/MonoDevelop.FSharp.Tests.fsproj
@@ -1,5 +1,6 @@
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\MonoDevelop.props" />
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -20,7 +21,8 @@
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>TRACE;DEBUG;$(DefineConstants)</DefineConstants>
<ErrorReport>prompt</ErrorReport>
- <PlatformTarget></PlatformTarget>
+ <PlatformTarget>
+ </PlatformTarget>
<ConsolePause>true</ConsolePause>
<Optimize>false</Optimize>
<Tailcalls>false</Tailcalls>
@@ -34,17 +36,23 @@
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
- <PlatformTarget></PlatformTarget>
+ <PlatformTarget>
+ </PlatformTarget>
<ConsolePause>false</ConsolePause>
<Tailcalls>true</Tailcalls>
<DefineConstants>$(DefineConstants)</DefineConstants>
</PropertyGroup>
<ItemGroup>
- <Reference Include="pango-sharp"></Reference>
- <Reference Include="atk-sharp"></Reference>
- <Reference Include="gdk-sharp"></Reference>
- <Reference Include="gtk-sharp"></Reference>
- <Reference Include="glib-sharp"></Reference>
+ <Reference Include="pango-sharp">
+ </Reference>
+ <Reference Include="atk-sharp">
+ </Reference>
+ <Reference Include="gdk-sharp">
+ </Reference>
+ <Reference Include="gtk-sharp">
+ </Reference>
+ <Reference Include="glib-sharp">
+ </Reference>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq" />
@@ -113,9 +121,6 @@
<Reference Include="FSharpBinding">
<HintPath>..\..\..\build\AddIns\BackendBindings\FSharpBinding.dll</HintPath>
</Reference>
- <Reference Include="System.Collections.Immutable">
- <HintPath>..\..\..\build\bin\System.Collections.Immutable.dll</HintPath>
- </Reference>
<ProjectReference Include="..\..\..\src\addins\MonoDevelop.PackageManagement\MonoDevelop.PackageManagement.Tests\MonoDevelop.PackageManagement.Tests.csproj">
<Project>{2645C9F3-9ED5-4806-AB09-DAD9BE90C67B}</Project>
<Name>MonoDevelop.PackageManagement.Tests</Name>
@@ -219,16 +224,7 @@
</MonoDevelop>
</ProjectExtensions>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="ExtCore">
- <HintPath>..\packages\ExtCore\lib\net40\ExtCore.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="ExtCore">
<HintPath>..\packages\ExtCore\lib\net45\ExtCore.dll</HintPath>
@@ -239,7 +235,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Compiler.Service.MSBuild.v12">
<HintPath>..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.MSBuild.v12.dll</HintPath>
@@ -255,16 +251,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\net20\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Core">
<HintPath>..\packages\FSharp.Core\lib\net40\FSharp.Core.dll</HintPath>
@@ -273,78 +260,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'Silverlight' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile47')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="Mono.Cecil.Mdb">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.Mdb.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- <Reference Include="Mono.Cecil.Pdb">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.Pdb.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- <Reference Include="Mono.Cecil.Rocks">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- <Reference Include="Mono.Cecil">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="Mono.Cecil.Mdb">
<HintPath>..\packages\Mono.Cecil\lib\net45\Mono.Cecil.Mdb.dll</HintPath>
@@ -370,38 +288,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Buffers">
- <HintPath>..\packages\System.Buffers\lib\netstandard1.1\System.Buffers.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.0\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.3\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')) Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile84')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Collections.Immutable">
<HintPath>..\packages\System.Collections.Immutable\lib\netstandard1.0\System.Collections.Immutable.dll</HintPath>
@@ -410,187 +297,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="System.Collections.Immutable">
- <HintPath>..\packages\System.Collections.Immutable\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.0\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.3\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.3\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.5\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.0\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.3\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.0\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.3\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.5\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.1\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.3\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5')">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.0\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.6'">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.6\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.0\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.3\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.5\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Extensions">
- <HintPath>..\packages\System.Reflection.Extensions\ref\netstandard1.0\System.Reflection.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3'))">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Reflection.Metadata">
<HintPath>..\packages\System.Reflection.Metadata\lib\netstandard1.1\System.Reflection.Metadata.dll</HintPath>
@@ -599,232 +308,5 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="System.Reflection.Metadata">
- <HintPath>..\packages\System.Reflection.Metadata\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Primitives">
- <HintPath>..\packages\System.Reflection.Primitives\ref\netstandard1.0\System.Reflection.Primitives.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Resources.ResourceManager">
- <HintPath>..\packages\System.Resources.ResourceManager\ref\netstandard1.0\System.Resources.ResourceManager.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.2'">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.0\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.3\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.5\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.Handles">
- <HintPath>..\packages\System.Runtime.Handles\ref\netstandard1.3\System.Runtime.Handles.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.1'">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.1\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.2'">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.2\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.3\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.5\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding">
- <HintPath>..\packages\System.Text.Encoding\ref\netstandard1.0\System.Text.Encoding.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding">
- <HintPath>..\packages\System.Text.Encoding\ref\netstandard1.3\System.Text.Encoding.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding.Extensions">
- <HintPath>..\packages\System.Text.Encoding.Extensions\ref\netstandard1.0\System.Text.Encoding.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding.Extensions">
- <HintPath>..\packages\System.Text.Encoding.Extensions\ref\netstandard1.3\System.Text.Encoding.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Threading">
- <HintPath>..\packages\System.Threading\ref\netstandard1.0\System.Threading.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Threading">
- <HintPath>..\packages\System.Threading\ref\netstandard1.3\System.Threading.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And $(TargetFrameworkVersion) == 'v8.1')">
- <ItemGroup>
- <Reference Include="System.Threading.Tasks">
- <HintPath>..\packages\System.Threading.Tasks\ref\netstandard1.0\System.Threading.Tasks.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Threading.Tasks">
- <HintPath>..\packages\System.Threading.Tasks\ref\netstandard1.3\System.Threading.Tasks.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
</Project>
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/TemplateTests.fs b/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/TemplateTests.fs
index 3853f19d16..30c2c130ab 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/TemplateTests.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharp.Tests/TemplateTests.fs
@@ -69,7 +69,9 @@ type ``Template tests``() =
File.WriteAllText (configFileName, config, Text.Encoding.UTF8)
member x.Templates =
- solutionTemplates |> Seq.map (fun t -> t.Id)
+ solutionTemplates
+ |> Seq.map (fun t -> t.Id)
+ |> Seq.filter (fun id -> ProjectTemplate.ProjectTemplates |> Seq.exists(fun t -> t.Id = id))
[<Test>]
member x.``FSharp portable project``() =
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpBinding.addin.xml b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpBinding.addin.xml
index 8fbda1e15e..a1f0998abf 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpBinding.addin.xml
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpBinding.addin.xml
@@ -153,7 +153,7 @@
</Extension>
<Extension path = "/MonoDevelop/Ide/BraceMatcher">
- <Class class="MonoDevelop.FSharp.FSharpBraceMatcher" />
+ <Matcher class="MonoDevelop.FSharp.FSharpBraceMatcher" mimeType="text/x-fsharp"/>
</Extension>
<Extension path = "/MonoDevelop/Ide/TextEditorExtensions">
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpIndentationTracker.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpIndentationTracker.fs
index d5fcee8445..6b632e44e4 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpIndentationTracker.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpIndentationTracker.fs
@@ -1,6 +1,7 @@
namespace MonoDevelop.FSharp
open System
+open System.Threading.Tasks
open MonoDevelop.Core
open MonoDevelop.Ide.Editor
open MonoDevelop.Ide.Editor.Extension
@@ -25,7 +26,7 @@ type FSharpTextPasteHandler(editor:TextEditor) =
let indent = editor.GetLineIndent nonBlankLineNumber
[|byte indent.Length|]
- override x.PostFomatPastedText (_offset, _length) = ()
+ override x.PostFomatPastedText (_offset, _length) = Task.FromResult None :> Task
override x.FormatPlainText(offset, text, copyData) =
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpOutlineTextEditorExtension.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpOutlineTextEditorExtension.fs
index f16af93b68..5b9da15380 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpOutlineTextEditorExtension.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpOutlineTextEditorExtension.fs
@@ -34,7 +34,7 @@ type FSharpOutlineTextEditorExtension() as x =
|> Array.sortBy(fun xs -> xs.Declaration.Range.StartLine)
for item in toplevel do
- let iter = treeStore.AppendValues(item.Declaration)
+ let iter = treeStore.AppendValues([| item.Declaration |])
let children = item.Nested
|> Array.sortBy(fun xs -> xs.Range.StartLine)
@@ -78,19 +78,27 @@ type FSharpOutlineTextEditorExtension() as x =
let setCellIcon _column (cellRenderer : CellRenderer) (treeModel : TreeModel) (iter : TreeIter) =
let pixRenderer = cellRenderer :?> CellRendererImage
- let item = treeModel.GetValue(iter, 0) :?> FSharpNavigationDeclarationItem
- pixRenderer.Image <- ImageService.GetIcon(ServiceUtils.getIcon item, Gtk.IconSize.Menu)
+ treeModel.GetValue(iter, 0)
+ |> Option.tryCast<FSharpNavigationDeclarationItem[]>
+ |> Option.iter(fun item ->
+ pixRenderer.Image <- ImageService.GetIcon(ServiceUtils.getIcon item.[0], Gtk.IconSize.Menu))
let setCellText _column (cellRenderer : CellRenderer) (treeModel : TreeModel) (iter : TreeIter) =
let renderer = cellRenderer :?> CellRendererText
- let item = treeModel.GetValue(iter, 0) :?> FSharpNavigationDeclarationItem
- renderer.Text <- item.Name
+ treeModel.GetValue(iter, 0)
+ |> Option.tryCast<FSharpNavigationDeclarationItem[]>
+ |> Option.iter(fun item -> renderer.Text <- item.[0].Name)
+
let jumpToDeclaration focus =
let iter : TreeIter ref = ref Unchecked.defaultof<_>
if padTreeView.Selection.GetSelected(iter) then
- let node = padTreeView.Model.GetValue(!iter, 0) :?> FSharpNavigationDeclarationItem
- let (scol,sline) = node.Range.StartColumn, node.Range.StartLine
- IdeApp.Workbench.OpenDocument (x.Editor.FileName, null, max 1 sline, max 1 scol) |> ignore
+ padTreeView.Model.GetValue(!iter, 0)
+ |> Option.tryCast<FSharpNavigationDeclarationItem[]>
+ |> Option.iter(fun item ->
+ let node = item.[0]
+ let (scol,sline) = node.Range.StartColumn, node.Range.StartLine
+ IdeApp.Workbench.OpenDocument (x.Editor.FileName, null, max 1 sline, max 1 scol) |> ignore)
+
if focus then
x.Editor.GrabFocus()
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpParser.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpParser.fs
index 545248fb90..ac1f5f9636 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpParser.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpParser.fs
@@ -98,7 +98,7 @@ type FSharpParser() =
if file = "" then None else Some file
let isObsolete filename version (token:CancellationToken) =
- SourceCodeServices.IsResultObsolete(fun () ->
+ (fun () ->
let shortFilename = Path.GetFileName filename
try
if not token.IsCancellationRequested then
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs
index 08ca81debc..c16966382b 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs
@@ -260,6 +260,10 @@ type FSharpProject() as self =
override x.OnGetDefaultResourceId(projectFile) =
projectFile.FilePath.FileName
+ override x.OnModified(e) =
+ base.OnModified(e)
+ if not self.Loading then invalidateProjectFile()
+
override x.OnDispose () =
//if not self.Loading then invalidateProjectFile()
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpResolverProvider.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpResolverProvider.fs
index 727453ce97..eda9b08393 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpResolverProvider.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpResolverProvider.fs
@@ -30,7 +30,7 @@ type FSharpResolverProvider() =
// Try to get typed result - with the specified timeout
let curVersion = doc.Editor.Version
let isObsolete =
- IsResultObsolete(fun () ->
+ (fun () ->
let doc = IdeApp.Workbench.GetDocument(filename)
let newVersion = doc.Editor.Version
if newVersion.BelongsToSameDocumentAs(curVersion) && newVersion.CompareAge(curVersion) = 0
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpSyntaxMode.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpSyntaxMode.fs
index 163fc224a5..507dfdeeec 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpSyntaxMode.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpSyntaxMode.fs
@@ -19,18 +19,13 @@ module Patterns =
type TokenSymbol =
{ TokenInfo : FSharpTokenInfo
SymbolUse : FSharpSymbolUse option
- ExtraColorInfo : (Range.range * FSharpTokenColorKind) option }
+ ExtraColorInfo : (Range.range * SemanticClassificationType) option }
let (|Keyword|_|) ts =
match ts.TokenInfo.ColorClass, ts.ExtraColorInfo with
| FSharpTokenColorKind.Keyword, _ -> Some ts
| _ -> None
- let (|CustomKeyword|_|) ts =
- match ts.ExtraColorInfo with
- | Some(_range, extra) when extra = FSharpTokenColorKind.Keyword -> Some ts
- | _ -> None
-
let (|Punctuation|_|) (ts : TokenSymbol) =
if ts.TokenInfo.Tag = FSharpTokenTag.PLUS_MINUS_OP
|| ts.TokenInfo.Tag = FSharpTokenTag.MINUS
@@ -267,7 +262,7 @@ module Patterns =
| _ -> None
module SyntaxMode =
- let makeChunk (symbolsInFile:IDictionary<_,_>) lineNo lineOffset colourisations token =
+ let makeChunk (symbolsInFile:IDictionary<_,_>) lineNo lineOffset (colourisations:(Range.range * SemanticClassificationType) [] option) token =
let symbol =
if token.CharClass = FSharpTokenCharKind.Identifier || token.CharClass = FSharpTokenCharKind.Operator then
match symbolsInFile.TryGetValue(Range.mkPos lineNo (token.RightColumn + 1)) with
@@ -295,8 +290,6 @@ module Patterns =
makeSeg "punctuation.definition.comment.source"
| ComputationExpression _name ->
makeSeg "keyword.other.source"
- | CustomKeyword _ ->
- makeSeg "keyword.other.source"
| Module _ | ActivePatternCase | Record _ | Union _ | TypeAbbreviation | Class _ | Constructor _ ->
makeSeg EditorThemeColors.UserTypes
| GenericParameter _ ->
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpTextEditorCompletion.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpTextEditorCompletion.fs
index 0ba2fe4d86..3daea35ed1 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpTextEditorCompletion.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpTextEditorCompletion.fs
@@ -714,7 +714,7 @@ module ParameterHinting =
// Try to get typed result - within the specified timeout
let! methsOpt =
async { let projectFile = documentContext.Project |> function null -> filename | project -> project.FileName.ToString()
- let! tyRes = languageService.GetTypedParseResultWithTimeout (projectFile, filename, 0, docText, AllowStaleResults.MatchingSource, ServiceSettings.maximumTimeout, IsResultObsolete(fun() -> false) )
+ let! tyRes = languageService.GetTypedParseResultWithTimeout (projectFile, filename, 0, docText, AllowStaleResults.MatchingSource, ServiceSettings.maximumTimeout, (fun() -> false) )
match tyRes with
| Some tyRes ->
let line, col, lineStr = editor.GetLineInfoFromOffset (startOffset)
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/MonoDevelop.FSharp.fsproj b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/MonoDevelop.FSharp.fsproj
index e254a1bb8f..6564eaffa9 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/MonoDevelop.FSharp.fsproj
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/MonoDevelop.FSharp.fsproj
@@ -230,16 +230,7 @@
</MonoDevelop>
</ProjectExtensions>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="ExtCore">
- <HintPath>..\packages\ExtCore\lib\net40\ExtCore.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="ExtCore">
<HintPath>..\packages\ExtCore\lib\net45\ExtCore.dll</HintPath>
@@ -250,7 +241,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FantomasLib">
<HintPath>..\packages\Fantomas\lib\FantomasLib.dll</HintPath>
@@ -261,7 +252,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Compiler.CodeDom">
<HintPath>..\packages\FSharp.Compiler.CodeDom\lib\net40\FSharp.Compiler.CodeDom.dll</HintPath>
@@ -272,7 +263,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Compiler.Service.MSBuild.v12">
<HintPath>..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.MSBuild.v12.dll</HintPath>
@@ -288,16 +279,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\net20\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Core">
<HintPath>..\packages\FSharp.Core\lib\net40\FSharp.Core.dll</HintPath>
@@ -306,78 +288,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'Silverlight' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile47')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="Mono.Cecil.Mdb">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.Mdb.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- <Reference Include="Mono.Cecil.Pdb">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.Pdb.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- <Reference Include="Mono.Cecil.Rocks">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- <Reference Include="Mono.Cecil">
- <HintPath>..\packages\Mono.Cecil\lib\net40\Mono.Cecil.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="Mono.Cecil.Mdb">
<HintPath>..\packages\Mono.Cecil\lib\net45\Mono.Cecil.Mdb.dll</HintPath>
@@ -403,66 +316,10 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0')">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v3.5'">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'Silverlight' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile5') Or ($(TargetFrameworkProfile) == 'Profile6') Or ($(TargetFrameworkProfile) == 'Profile14') Or ($(TargetFrameworkProfile) == 'Profile19') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile37') Or ($(TargetFrameworkProfile) == 'Profile42') Or ($(TargetFrameworkProfile) == 'Profile47') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile92') Or ($(TargetFrameworkProfile) == 'Profile102') Or ($(TargetFrameworkProfile) == 'Profile136') Or ($(TargetFrameworkProfile) == 'Profile147') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile158') Or ($(TargetFrameworkProfile) == 'Profile225') Or ($(TargetFrameworkProfile) == 'Profile240') Or ($(TargetFrameworkProfile) == 'Profile255') Or ($(TargetFrameworkProfile) == 'Profile328') Or ($(TargetFrameworkProfile) == 'Profile336') Or ($(TargetFrameworkProfile) == 'Profile344')">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8+wpa81+dnxcore50\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Buffers">
- <HintPath>..\packages\System.Buffers\lib\netstandard1.1\System.Buffers.dll</HintPath>
<Private>True</Private>
<Paket>True</Paket>
</Reference>
@@ -470,27 +327,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.0\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.3\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Collections.Immutable">
<HintPath>..\packages\System.Collections.Immutable\lib\netstandard1.0\System.Collections.Immutable.dll</HintPath>
@@ -501,176 +338,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.0\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.3\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.3\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.5\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.0\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.3\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.0\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.3\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.5\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.1\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.3\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5')">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.0\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.6'">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.6\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.0\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.3\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.5\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Extensions">
- <HintPath>..\packages\System.Reflection.Extensions\ref\netstandard1.0\System.Reflection.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Reflection.Metadata">
<HintPath>..\packages\System.Reflection.Metadata\lib\netstandard1.1\System.Reflection.Metadata.dll</HintPath>
@@ -899,3 +567,4 @@
</When>
</Choose>
</Project>
+</Project> \ No newline at end of file
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerArguments.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerArguments.fs
index abdb68ec49..a95b05706a 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerArguments.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/CompilerArguments.fs
@@ -259,9 +259,13 @@ module CompilerArguments =
|> Seq.tryFind (fun fn -> fn.EndsWith(assemblyName + ".dll", true, CultureInfo.InvariantCulture)
|| fn.EndsWith(assemblyName, true, CultureInfo.InvariantCulture))
+ let isDotNetCoreProject =
+ let properties = project.MSBuildProject.EvaluatedProperties
+ properties.HasProperty ("TargetFramework") || properties.HasProperty ("TargetFrameworks")
+
// If 'mscorlib.dll' or 'FSharp.Core.dll' is not in the set of references, we try to resolve and add them.
- match find "FSharp.Core", find "mscorlib" with
- | None, Some mscorlib ->
+ match find "FSharp.Core", find "mscorlib", isDotNetCoreProject with
+ | None, Some mscorlib, false ->
// if mscorlib is founbd without FSharp.Core yield fsharp.core in the same base dir as mscorlib
// falling back to one of the default directories
let extraPath = Some (Path.GetDirectoryName (mscorlib))
@@ -269,13 +273,13 @@ module CompilerArguments =
| Some ref -> yield "-r:" + wrapf(ref)
| None -> LoggingService.LogWarning(resolutionFailedMessage "FSharp.Core")
- | Some fsharpCore, None ->
+ | Some fsharpCore, None, false ->
// If FSharp.Core is found without mscorlib yield an mscorlib thats referenced from FSharp.core
match ReferenceResolution.tryGetReferenceFromAssembly fsharpCore "mscorlib" with
| Some resolved -> yield "-r:" + wrapf(resolved)
| None -> LoggingService.LogWarning(resolutionFailedMessage "mscorlib")
- | None, None ->
+ | None, None, false ->
// If neither are found yield the default fsharp.core and mscorlib
match ReferenceResolution.tryGetDefaultReference langVersion targetFramework "FSharp.Core" None with
| Some ref -> yield "-r:" + wrapf(ref)
@@ -353,7 +357,9 @@ module CompilerArguments =
IsIncompleteTypeCheckEnvironment = false
UseScriptResolutionRules = false
LoadTime = loadedTimeStamp
- UnresolvedReferences = None }
+ UnresolvedReferences = None
+ OriginalLoadReferences = []
+ ExtraProjectInfo = None }
/// Get source files of the current project (returns files that have
/// build action set to 'Compile', but not e.g. scripts or resources)
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/FSharpConsoleView.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/FSharpConsoleView.fs
index c0d6110cbf..a27c9ccd15 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/FSharpConsoleView.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/FSharpConsoleView.fs
@@ -56,7 +56,7 @@ type FSharpConsoleView() as x =
// Get defined directives
let defines = defines |> Option.map (fun (s:string) -> s.Split([| ' '; ';'; ',' |], StringSplitOptions.RemoveEmptyEntries) |> List.ofSeq)
// Create source tokenizer
- let sourceTok = SourceTokenizer(defaultArg defines ["INTERACTIVE";"EDITING"], file)
+ let sourceTok = FSharpSourceTokenizer(defaultArg defines ["INTERACTIVE";"EDITING"], file)
// Parse lines using the tokenizer
let tokenizer = sourceTok.CreateLineTokenizer(line)
let rec parseLine state =
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/LanguageService.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/LanguageService.fs
index b63bfd2f91..368714cdd4 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/LanguageService.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/LanguageService.fs
@@ -179,7 +179,7 @@ type ParseAndCheckResults (infoOpt : FSharpCheckFileResults option, parseResults
member x.GetExtraColorizations() =
match infoOpt with
- | Some checkResults -> Some(checkResults.GetExtraColorizationsAlternate())
+ | Some checkResults -> Some(checkResults.GetSemanticClassification())
| None -> None
member x.GetStringFormatterColours() =
@@ -197,14 +197,14 @@ type AllowStaleResults =
//type Debug = System.Console
/// Provides functionality for working with the F# interactive checker running in background
-type LanguageService(dirtyNotify) as x =
+type LanguageService(dirtyNotify, extraProjectInfo) as x =
/// Load times used to reset type checking properly on script/project load/unload. It just has to be unique for each project load/reload.
/// Not yet sure if this works for scripts.
let fakeDateTimeRepresentingTimeLoaded proj = DateTime(abs (int64 (match proj with null -> 0 | _ -> proj.GetHashCode())) % 103231L)
let checkProjectResultsCache = Collections.Generic.Dictionary<string, _>()
- let projectChecked filename =
+ let projectChecked (filename, _) =
let computation =
async {
let displayname = Path.GetFileName filename
@@ -251,8 +251,8 @@ type LanguageService(dirtyNotify) as x =
checker.PauseBeforeBackgroundWork <- ServiceSettings.idleBackgroundCheckTime
checker.BeforeBackgroundFileCheck.Add dirtyNotify
#if DEBUG
- checker.FileParsed.Add (fun filename -> LoggingService.logDebug "LanguageService: File parsed: %s" filename)
- checker.FileChecked.Add (fun filename -> LoggingService.logDebug "LanguageService: File type checked: %s" filename)
+ checker.FileParsed.Add (fun (filename, _) -> LoggingService.logDebug "LanguageService: File parsed: %s" filename)
+ checker.FileChecked.Add (fun (filename, _) -> LoggingService.logDebug "LanguageService: File type checked: %s" filename)
#endif
checker.ProjectChecked.Add projectChecked
checker
@@ -409,7 +409,7 @@ type LanguageService(dirtyNotify) as x =
let fileName = fixFileName(fileName)
match options with
| Some opts ->
- let! parseResults, checkAnswer = checker.ParseAndCheckFileInProject(fileName, version, src ,opts, obsoleteCheck, null )
+ let! parseResults, checkAnswer = checker.ParseAndCheckFileInProject(fileName, version, src ,opts, obsoleteCheck)
// Construct new typed parse result if the task succeeded
let results =
@@ -435,7 +435,7 @@ type LanguageService(dirtyNotify) as x =
/// Parses and checks the given file in the given project under the given configuration.
///Asynchronously returns the results of checking the file.
member x.GetTypedParseResultWithTimeout(projectFilename, fileName, version:int, src:string, stale, ?timeout, ?obsoleteCheck) =
- let obs = defaultArg obsoleteCheck (IsResultObsolete(fun () -> false))
+ let obs = defaultArg obsoleteCheck (fun () -> false)
async {
let fileName = if Path.GetExtension fileName = ".sketchfs" then Path.ChangeExtension (fileName, ".fsx") else fileName
let options = x.GetCheckerOptions(fileName, projectFilename, src)
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/Lexer.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/Lexer.fs
index 377178cf71..3ad341c082 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/Lexer.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/Lexer.fs
@@ -47,7 +47,7 @@ module Lexer =
| Some _, newLexState ->
loop lineTokenizer newLexState
- let sourceTokenizer = SourceTokenizer(defines, None)
+ let sourceTokenizer = FSharpSourceTokenizer(defines, None)
let lines = String.getLines source
let mutable lexState = 0L
for line in lines do
@@ -84,7 +84,7 @@ module Lexer =
let defines =
args |> Seq.choose (fun s -> if s.StartsWith "--define:" then Some s.[9..] else None)
|> Seq.toList
- let sourceTokenizer = SourceTokenizer(defines, None)
+ let sourceTokenizer = FSharpSourceTokenizer(defines, None)
let lineTokenizer = sourceTokenizer.CreateLineTokenizer lineStr
let rec loop lexState acc =
match lineTokenizer.ScanToken lexState with
@@ -156,7 +156,7 @@ module Lexer =
let getTokensWithInitialState state lines filename defines =
[ let mutable state = state
- let sourceTok = SourceTokenizer(defines, filename)
+ let sourceTok = FSharpSourceTokenizer(defines, filename)
for lineText in lines do
let tokenizer = sourceTok.CreateLineTokenizer(lineText)
let rec parseLine() =
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/MDLanguageService.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/MDLanguageService.fs
index b6e56b4be0..3f18affa70 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/MDLanguageService.fs
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/Services/MDLanguageService.fs
@@ -95,15 +95,18 @@ type MDLanguageService() =
static let mutable instance =
lazy
let _ = vfs.Force()
+ // VisualFSharp sets extraProjectInfo to be the Roslyn Workspace
+ // object, but we don't have that level of integration yet
+ let extraProjectInfo = None
new LanguageService(
- (fun changedfile ->
+ (fun (changedfile, _) ->
try
let doc = IdeApp.Workbench.ActiveDocument
if doc <> null && doc.FileName.FullPath.ToString() = changedfile then
LoggingService.LogDebug("FSharp Language Service: Compiler notifying document '{0}' is dirty and needs reparsing. Reparsing as its the active document.", (Path.GetFileName changedfile))
doc.ReparseDocument()
with exn ->
- LoggingService.LogDebug("FSharp Language Service: Error while attempting to notify document '{0}' needs reparsing", (Path.GetFileName changedfile), exn) ))
+ LoggingService.LogDebug("FSharp Language Service: Error while attempting to notify document '{0}' needs reparsing", (Path.GetFileName changedfile), exn) ), extraProjectInfo)
static member Instance with get () = instance.Force ()
and set v = instance <- lazy v
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpi.Service/MonoDevelop.FSharpInteractive.Service.fsproj b/main/external/fsharpbinding/MonoDevelop.FSharpi.Service/MonoDevelop.FSharpInteractive.Service.fsproj
index 29cdd58661..27f7046131 100644
--- a/main/external/fsharpbinding/MonoDevelop.FSharpi.Service/MonoDevelop.FSharpInteractive.Service.fsproj
+++ b/main/external/fsharpbinding/MonoDevelop.FSharpi.Service/MonoDevelop.FSharpInteractive.Service.fsproj
@@ -70,16 +70,7 @@
<Import Project="$(FSharpTargetsPath)" />
<Import Project="..\.paket\paket.targets" />
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="ExtCore">
- <HintPath>..\packages\ExtCore\lib\net40\ExtCore.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="ExtCore">
<HintPath>..\packages\ExtCore\lib\net45\ExtCore.dll</HintPath>
@@ -90,7 +81,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Compiler.Service.MSBuild.v12">
<HintPath>..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.MSBuild.v12.dll</HintPath>
@@ -106,16 +97,7 @@
</When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0' Or $(TargetFrameworkVersion) == 'v3.5')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\net20\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.0' Or $(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="FSharp.Core">
<HintPath>..\packages\FSharp.Core\lib\net40\FSharp.Core.dll</HintPath>
@@ -124,81 +106,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == 'Silverlight' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile47')">
- <ItemGroup>
- <Reference Include="FSharp.Core">
- <HintPath>..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v2.0' Or $(TargetFrameworkVersion) == 'v3.0')">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\net20\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v3.5'">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\net35\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.0'">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\net40\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -207,58 +117,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'Silverlight' And $(TargetFrameworkVersion) == 'v5.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile5') Or ($(TargetFrameworkProfile) == 'Profile6') Or ($(TargetFrameworkProfile) == 'Profile14') Or ($(TargetFrameworkProfile) == 'Profile19') Or ($(TargetFrameworkProfile) == 'Profile24') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile37') Or ($(TargetFrameworkProfile) == 'Profile42') Or ($(TargetFrameworkProfile) == 'Profile47') Or ($(TargetFrameworkProfile) == 'Profile84') Or ($(TargetFrameworkProfile) == 'Profile92') Or ($(TargetFrameworkProfile) == 'Profile102') Or ($(TargetFrameworkProfile) == 'Profile136') Or ($(TargetFrameworkProfile) == 'Profile147') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile158') Or ($(TargetFrameworkProfile) == 'Profile225') Or ($(TargetFrameworkProfile) == 'Profile240') Or ($(TargetFrameworkProfile) == 'Profile255') Or ($(TargetFrameworkProfile) == 'Profile328') Or ($(TargetFrameworkProfile) == 'Profile336') Or ($(TargetFrameworkProfile) == 'Profile344')">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\packages\Newtonsoft.Json\lib\portable-net45+wp80+win8+wpa81+dnxcore50\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Buffers">
- <HintPath>..\packages\System.Buffers\lib\netstandard1.1\System.Buffers.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.0\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Collections">
- <HintPath>..\packages\System.Collections\ref\netstandard1.3\System.Collections.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3')) Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And ($(TargetFrameworkVersion) == 'v8.0' Or $(TargetFrameworkVersion) == 'v8.1')) Or ($(TargetFrameworkProfile) == 'Profile49') Or ($(TargetFrameworkProfile) == 'Profile84')">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Collections.Immutable">
<HintPath>..\packages\System.Collections.Immutable\lib\netstandard1.0\System.Collections.Immutable.dll</HintPath>
@@ -267,187 +128,9 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile31') Or ($(TargetFrameworkProfile) == 'Profile32') Or ($(TargetFrameworkProfile) == 'Profile44') Or ($(TargetFrameworkProfile) == 'Profile78') Or ($(TargetFrameworkProfile) == 'Profile111') Or ($(TargetFrameworkProfile) == 'Profile151') Or ($(TargetFrameworkProfile) == 'Profile157') Or ($(TargetFrameworkProfile) == 'Profile259')">
- <ItemGroup>
- <Reference Include="System.Collections.Immutable">
- <HintPath>..\packages\System.Collections.Immutable\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.0\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Debug">
- <HintPath>..\packages\System.Diagnostics.Debug\ref\netstandard1.3\System.Diagnostics.Debug.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
<Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.3\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Diagnostics.Tracing">
- <HintPath>..\packages\System.Diagnostics.Tracing\ref\netstandard1.5\System.Diagnostics.Tracing.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.0\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Globalization">
- <HintPath>..\packages\System.Globalization\ref\netstandard1.3\System.Globalization.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.0\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.3\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO">
- <HintPath>..\packages\System.IO\ref\netstandard1.5\System.IO.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.1\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.IO.Compression">
- <HintPath>..\packages\System.IO.Compression\ref\netstandard1.3\System.IO.Compression.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5')">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.0\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.6'">
- <ItemGroup>
- <Reference Include="System.Linq">
- <HintPath>..\packages\System.Linq\ref\netstandard1.6\System.Linq.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.0\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.3\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection">
- <HintPath>..\packages\System.Reflection\ref\netstandard1.5\System.Reflection.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Extensions">
- <HintPath>..\packages\System.Reflection.Extensions\ref\netstandard1.0\System.Reflection.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == 'WindowsPhoneApp') Or ($(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')) Or ($(TargetFrameworkIdentifier) == '.NETCoreApp' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3'))">
+ <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.5'">
<ItemGroup>
<Reference Include="System.Reflection.Metadata">
<HintPath>..\packages\System.Reflection.Metadata\lib\netstandard1.1\System.Reflection.Metadata.dll</HintPath>
@@ -456,232 +139,5 @@
</Reference>
</ItemGroup>
</When>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETCore') Or ($(TargetFrameworkIdentifier) == 'MonoAndroid') Or ($(TargetFrameworkIdentifier) == 'MonoTouch') Or ($(TargetFrameworkIdentifier) == 'Xamarin.iOS') Or ($(TargetFrameworkIdentifier) == 'Xamarin.Mac') Or ($(TargetFrameworkProfile) == 'Profile7') Or ($(TargetFrameworkProfile) == 'Profile44')">
- <ItemGroup>
- <Reference Include="System.Reflection.Metadata">
- <HintPath>..\packages\System.Reflection.Metadata\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
- <Private>True</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Reflection.Primitives">
- <HintPath>..\packages\System.Reflection.Primitives\ref\netstandard1.0\System.Reflection.Primitives.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2' Or $(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Resources.ResourceManager">
- <HintPath>..\packages\System.Resources.ResourceManager\ref\netstandard1.0\System.Resources.ResourceManager.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.0\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.2'">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.2\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.3\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime">
- <HintPath>..\packages\System.Runtime\ref\netstandard1.5\System.Runtime.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.0\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.3\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.Extensions">
- <HintPath>..\packages\System.Runtime.Extensions\ref\netstandard1.5\System.Runtime.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.Handles">
- <HintPath>..\packages\System.Runtime.Handles\ref\netstandard1.3\System.Runtime.Handles.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.1'">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.1\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.2'">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.2\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4')">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.3\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Runtime.InteropServices">
- <HintPath>..\packages\System.Runtime.InteropServices\ref\netstandard1.5\System.Runtime.InteropServices.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding">
- <HintPath>..\packages\System.Text.Encoding\ref\netstandard1.0\System.Text.Encoding.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding">
- <HintPath>..\packages\System.Text.Encoding\ref\netstandard1.3\System.Text.Encoding.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding.Extensions">
- <HintPath>..\packages\System.Text.Encoding.Extensions\ref\netstandard1.0\System.Text.Encoding.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Text.Encoding.Extensions">
- <HintPath>..\packages\System.Text.Encoding.Extensions\ref\netstandard1.3\System.Text.Encoding.Extensions.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.0' Or $(TargetFrameworkVersion) == 'v1.1' Or $(TargetFrameworkVersion) == 'v1.2')">
- <ItemGroup>
- <Reference Include="System.Threading">
- <HintPath>..\packages\System.Threading\ref\netstandard1.0\System.Threading.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Threading">
- <HintPath>..\packages\System.Threading\ref\netstandard1.3\System.Threading.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- </Choose>
- <Choose>
- <When Condition="($(TargetFrameworkIdentifier) == '.NETStandard' And $(TargetFrameworkVersion) == 'v1.0') Or ($(TargetFrameworkIdentifier) == 'WindowsPhone' And $(TargetFrameworkVersion) == 'v8.1')">
- <ItemGroup>
- <Reference Include="System.Threading.Tasks">
- <HintPath>..\packages\System.Threading.Tasks\ref\netstandard1.0\System.Threading.Tasks.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
- <When Condition="$(TargetFrameworkIdentifier) == '.NETStandard' And ($(TargetFrameworkVersion) == 'v1.3' Or $(TargetFrameworkVersion) == 'v1.4' Or $(TargetFrameworkVersion) == 'v1.5' Or $(TargetFrameworkVersion) == 'v1.6')">
- <ItemGroup>
- <Reference Include="System.Threading.Tasks">
- <HintPath>..\packages\System.Threading.Tasks\ref\netstandard1.3\System.Threading.Tasks.dll</HintPath>
- <Private>False</Private>
- <Paket>True</Paket>
- </Reference>
- </ItemGroup>
- </When>
</Choose>
</Project>
diff --git a/main/external/fsharpbinding/paket.dependencies b/main/external/fsharpbinding/paket.dependencies
index 2a53e31a8b..653a8b612c 100644
--- a/main/external/fsharpbinding/paket.dependencies
+++ b/main/external/fsharpbinding/paket.dependencies
@@ -1,7 +1,8 @@
+framework: 45
source https://nuget.org/api/v2/
nuget ExtCore framework: >= net40
-nuget FSharp.Compiler.Service = 8.0.0
+nuget FSharp.Compiler.Service = 10.0.3
nuget FSharp.Core = 4.0.0.1
nuget Fantomas framework: >= net45
nuget FSharp.Compiler.CodeDom 0.9.2 framework: >= net40
diff --git a/main/external/fsharpbinding/paket.lock b/main/external/fsharpbinding/paket.lock
index 39d7d6e8bf..ba1bf30699 100644
--- a/main/external/fsharpbinding/paket.lock
+++ b/main/external/fsharpbinding/paket.lock
@@ -1,153 +1,17 @@
+FRAMEWORK: NET45
NUGET
remote: https://www.nuget.org/api/v2
- ExtCore (0.8.45) - framework: >= net40
- FAKE (4.22.4)
- Fantomas (2.0.2) - framework: >= net45
- FSharp.Compiler.Service (>= 1.4.0.6)
- FSharp.Compiler.CodeDom (0.9.2) - framework: >= net40
- FSharp.Compiler.Service (8.0)
+ ExtCore (0.8.46)
+ FAKE (4.50.1)
+ Fantomas (2.5)
+ FSharp.Compiler.Service (>= 10.0.1)
+ FSharp.Compiler.CodeDom (0.9.2)
+ FSharp.Compiler.Service (10.0.3)
System.Collections.Immutable (>= 1.2)
System.Reflection.Metadata (>= 1.4.1-beta-24227-04)
FSharp.Core (4.0.0.1)
- Microsoft.NETCore.Platforms (1.1.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Targets (1.1.0-preview1-24530-04) - framework: >= netstandard10
- Mono.Cecil (0.9.6.1) - framework: >= net40
- Newtonsoft.Json (8.0.3)
- runtime.native.System (4.3.0-preview1-24530-04) - framework: >= netstandard13
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04)
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04)
- runtime.native.System.IO.Compression (4.3.0-preview1-24530-04) - framework: >= netstandard13
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04)
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04)
- System.Buffers (4.3.0-preview1-24530-04) - framework: >= netstandard13
- System.Diagnostics.Debug (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Diagnostics.Tracing (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Resources.ResourceManager (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Threading (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Collections (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Collections.Immutable (1.3.0-preview1-24530-04)
- System.Collections (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Diagnostics.Debug (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Globalization (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Linq (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Resources.ResourceManager (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Runtime.Extensions (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Threading (>= 4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Diagnostics.Debug (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Diagnostics.Tracing (4.3.0-preview1-24530-04) - framework: >= netstandard13
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- System.Globalization (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.IO (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Text.Encoding (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Threading.Tasks (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.IO.Compression (4.3.0-preview1-24530-04) - framework: >= netstandard11
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: >= netstandard13
- runtime.native.System (>= 4.3.0-preview1-24530-04) - framework: >= netstandard13
- runtime.native.System.IO.Compression (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Buffers (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Collections (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Diagnostics.Debug (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.IO (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard11, >= netstandard13
- System.Resources.ResourceManager (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard11, >= netstandard13
- System.Runtime.Extensions (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Runtime.Handles (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Runtime.InteropServices (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Text.Encoding (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard11, >= netstandard13
- System.Threading (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Threading.Tasks (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard13
- System.Linq (4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Collections (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard16
- System.Diagnostics.Debug (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard16
- System.Resources.ResourceManager (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard16
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard16
- System.Runtime.Extensions (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard16
- System.Reflection (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.IO (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Reflection.Primitives (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Reflection.Extensions (4.3.0-preview1-24530-04) - framework: >= netstandard11
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Reflection (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Reflection.Metadata (1.4.1-preview1-24530-04)
- System.Collections (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Collections.Immutable (>= 1.1.37) - framework: portable-net45+win8
- System.Collections.Immutable (>= 1.3.0-preview1-24530-04) - framework: >= net45, >= netstandard11, monoandroid, monotouch, xamarinios, xamarinmac, winv4.5, wpav8.1
- System.Diagnostics.Debug (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.IO (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.IO.Compression (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Linq (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Reflection (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Reflection.Extensions (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Reflection.Primitives (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Resources.ResourceManager (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Runtime.Extensions (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Runtime.InteropServices (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Text.Encoding (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Text.Encoding.Extensions (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Threading (>= 4.3.0-preview1-24530-04) - framework: >= netstandard11
- System.Reflection.Primitives (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Resources.ResourceManager (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Globalization (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Reflection (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, >= netstandard10
- System.Runtime (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard12, netstandard13, >= netstandard15
- System.Runtime.Extensions (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, netstandard13, >= netstandard15
- System.Runtime.Handles (4.3.0-preview1-24530-04) - framework: >= netstandard13
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: >= netstandard13
- System.Runtime.InteropServices (4.3.0-preview1-24530-04) - framework: >= netstandard11
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- System.Reflection (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- System.Reflection.Primitives (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: net462, >= net463, dnxcore50, netstandard11, netstandard12, netstandard13, >= netstandard15
- System.Runtime.Handles (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard13, >= netstandard15
- System.Text.Encoding (4.3.0-preview1-24530-04) - framework: >= netstandard10
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Text.Encoding.Extensions (4.3.0-preview1-24530-04) - framework: >= netstandard11
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Text.Encoding (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Threading (4.3.0-preview1-24530-04) - framework: >= netstandard10
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Threading.Tasks (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Threading.Tasks (4.3.0-preview1-24530-04) - framework: netstandard10, >= netstandard13
- Microsoft.NETCore.Platforms (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- Microsoft.NETCore.Targets (>= 1.1.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
- System.Runtime (>= 4.3.0-preview1-24530-04) - framework: dnxcore50, netstandard10, >= netstandard13
+ Mono.Cecil (0.9.6.4)
+ Newtonsoft.Json (9.0.1)
+ System.Collections.Immutable (1.3.1)
+ System.Reflection.Metadata (1.4.2)
+ System.Collections.Immutable (>= 1.3.1)
diff --git a/main/external/guiunit b/main/external/guiunit
-Subproject 54f599934319558e391d4c6b89ad7e85d4f9536
+Subproject 3a445806895aa25a17d887cbfcddea86e8e1480
diff --git a/main/external/mono-addins b/main/external/mono-addins
-Subproject d2f3dfece1c2bb2499275331dfd6a53f790a8a7
+Subproject 3e4cc1d252a17d7b126a622abd3b2d4c383f4fb
diff --git a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
index ba66641c3a..12e2e3c658 100644
--- a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
+++ b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
@@ -304,7 +304,6 @@
<CommandItem id = "MonoDevelop.Refactoring.RefactoryCommands.CurrentRefactoryOperations" insertafter="MonoDevelop.SourceEditor.SourceEditorCommands.MarkerOperations" insertbefore="MonoDevelop.Debugger.DebugCommands.ExpressionEvaluator"/>
<ItemSet id = "Navigate" _label = "Navigate">
- <CommandItem id = "MonoDevelop.Refactoring.RefactoryCommands.FindReferences"/>
<CommandItem id = "MonoDevelop.Refactoring.RefactoryCommands.FindAllReferences"/>
<CommandItem id = "MonoDevelop.Refactoring.Navigation.FindBaseSymbols"/>
<CommandItem id = "MonoDevelop.Refactoring.Navigation.FindDerivedSymbols"/>
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/ParameterHinting/ParameterHintingEngine.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/ParameterHinting/ParameterHintingEngine.cs
index eac4717c9a..eaf91272a6 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/ParameterHinting/ParameterHintingEngine.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/ParameterHinting/ParameterHintingEngine.cs
@@ -283,11 +283,18 @@ namespace ICSharpCode.NRefactory6.CSharp.Completion
{
var info = semanticModel.GetSymbolInfo(node, cancellationToken);
var result = new ParameterHintingResult(node.SpanStart);
-
var resolvedMethod = info.Symbol as IMethodSymbol;
- if (resolvedMethod != null)
- result.AddData(factory.CreateConstructorProvider(resolvedMethod));
- result.AddRange(info.CandidateSymbols.OfType<IMethodSymbol>().Select (factory.CreateConstructorProvider));
+ if (resolvedMethod != null) {
+ var type = resolvedMethod.ContainingType;
+ var within = semanticModel.GetEnclosingNamedTypeOrAssembly (node.SpanStart, cancellationToken);
+
+ result.AddRange (type.GetMembers ()
+ .OfType<IMethodSymbol> ()
+ .Where (m => m.MethodKind == MethodKind.Constructor && m.IsAccessibleWithin (within))
+ .Select (factory.CreateConstructorProvider));
+ } else {
+ result.AddRange (info.CandidateSymbols.OfType<IMethodSymbol> ().Select (factory.CreateConstructorProvider));
+ }
return result;
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextPasteHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextPasteHandler.cs
index 8f74d3ce58..7417da5707 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextPasteHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextPasteHandler.cs
@@ -29,6 +29,8 @@ using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.CodeCompletion;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
+using System.Threading.Tasks;
+using Microsoft.CodeAnalysis.Formatting;
namespace MonoDevelop.CSharp.Formatting
{
@@ -53,22 +55,22 @@ namespace MonoDevelop.CSharp.Formatting
return engine.GetCopyData (indent.Editor, new TextSpan (offset, length));
}
- public override void PostFomatPastedText (int insertionOffset, int insertedChars)
+ public override async Task PostFomatPastedText (int insertionOffset, int insertedChars)
{
if (indent.Editor.Options.IndentStyle == IndentStyle.None ||
indent.Editor.Options.IndentStyle == IndentStyle.Auto)
return;
if (DefaultSourceEditorOptions.Instance.OnTheFlyFormatting) {
+ var tree = await indent.DocumentContext.AnalysisDocument.GetSyntaxTreeAsync ();
int lineStartOffset = indent.Editor.GetLineByOffset (insertionOffset).Offset;
- int formatCharsCount = insertedChars + (lineStartOffset - insertionOffset);
- var newText = CSharpFormatter.FormatText (
- indent.DocumentContext.GetFormattingPolicy (),
- indent.DocumentContext.Project.Policies.Get<Ide.Gui.Content.TextStylePolicy> (),
- indent.Editor.GetTextBetween (lineStartOffset, insertionOffset + insertedChars),
- 0,
- formatCharsCount
- );
- indent.Editor.ReplaceText (lineStartOffset, formatCharsCount, newText);
+ int formatCharsCount = insertedChars + (insertionOffset - lineStartOffset);
+ var policy = indent.DocumentContext.GetFormattingPolicy ();
+ var textPolicy = indent.DocumentContext.Project.Policies.Get<Ide.Gui.Content.TextStylePolicy> ();
+ var optionSet = policy.CreateOptions (textPolicy);
+ var span = new TextSpan (lineStartOffset, formatCharsCount);
+ var doc = await Formatter.FormatAsync (indent.DocumentContext.AnalysisDocument, span, optionSet);
+
+ OnTheFlyFormatter.ApplyNewTree (indent.Editor, lineStartOffset, true, span, tree, await doc.GetSyntaxTreeAsync ());
return;
}
// Just correct the start line of the paste operation - the text is already indented.
@@ -79,7 +81,6 @@ namespace MonoDevelop.CSharp.Formatting
int pos = curLineOffset;
string curIndent = curLine.GetIndentation (indent.Editor);
int nlwsp = curIndent.Length;
-
if (!indent.stateTracker.LineBeganInsideMultiLineComment || (nlwsp < curLine.LengthIncludingDelimiter && indent.Editor.GetCharAt (curLineOffset + nlwsp) == '*')) {
// Possibly replace the indent
indent.SafeUpdateIndentEngine (curLineOffset + curLine.Length);
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs
index ce7ebe7a22..0484a14ac2 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs
@@ -101,44 +101,52 @@ namespace MonoDevelop.CSharp.Formatting
}
var doc = Formatter.FormatAsync (analysisDocument, span, optionSet).Result;
var newTree = doc.GetSyntaxTreeAsync ().Result;
- var caretOffset = editor.CaretOffset;
- var caretEndOffset = caretOffset;
+ ApplyNewTree (editor, startOffset, exact, span, syntaxTree, newTree);
+ } catch (Exception e) {
+ LoggingService.LogError ("Error in on the fly formatter", e);
+ }
+ }
+ }
- int delta = 0;
- foreach (var change in newTree.GetChanges (syntaxTree)) {
- if (!exact && change.Span.Start >= caretOffset)
- continue;
- if (exact && !span.Contains (change.Span.Start))
- continue;
- var newText = change.NewText;
- var length = change.Span.Length;
- var changeEnd = delta + change.Span.End - 1;
- if (changeEnd < editor.Length && changeEnd >= 0 && editor.GetCharAt (changeEnd) == '\r')
- length--;
- var replaceOffset = delta + change.Span.Start;
- editor.ReplaceText (replaceOffset, length, newText);
- delta = delta - length + newText.Length;
- if (change.Span.Start < caretOffset) {
- if (change.Span.End < caretOffset) {
- caretEndOffset += newText.Length - length;
- } else {
- caretEndOffset = replaceOffset;
- }
- }
- }
- if (startOffset < caretOffset) {
- if (0 <= caretEndOffset && caretEndOffset < editor.Length)
- editor.CaretOffset = caretEndOffset;
- if (editor.CaretColumn == 1) {
- if (editor.CaretLine > 1 && editor.GetLine (editor.CaretLine - 1).Length == 0)
- editor.CaretLine--;
- editor.CaretColumn = editor.GetVirtualIndentationColumn (editor.CaretLine);
+ internal static void ApplyNewTree (TextEditor editor, int startOffset, bool exact, TextSpan span, Microsoft.CodeAnalysis.SyntaxTree syntaxTree, Microsoft.CodeAnalysis.SyntaxTree newTree)
+ {
+ var caretOffset = editor.CaretOffset;
+ var caretEndOffset = caretOffset;
+ using (var undo = editor.OpenUndoGroup ()) {
+
+ int delta = 0;
+ foreach (var change in newTree.GetChanges (syntaxTree)) {
+ if (!exact && change.Span.Start >= caretOffset)
+ continue;
+ if (exact && !span.Contains (change.Span.Start))
+ continue;
+ var newText = change.NewText;
+ var length = change.Span.Length;
+ var changeEnd = delta + change.Span.End - 1;
+ if (changeEnd < editor.Length && changeEnd >= 0 && editor.GetCharAt (changeEnd) == '\r')
+ length--;
+ var replaceOffset = delta + change.Span.Start;
+ editor.ReplaceText (replaceOffset, length, newText);
+ delta = delta - length + newText.Length;
+ if (change.Span.Start < caretOffset) {
+ if (change.Span.End < caretOffset) {
+ caretEndOffset += newText.Length - length;
+ } else {
+ caretEndOffset = replaceOffset;
}
}
- } catch (Exception e) {
- LoggingService.LogError ("Error in on the fly formatter", e);
+ }
+ }
+
+ if (startOffset < caretOffset) {
+ if (0 <= caretEndOffset && caretEndOffset < editor.Length)
+ editor.CaretOffset = caretEndOffset;
+ if (editor.CaretColumn == 1) {
+ if (editor.CaretLine > 1 && editor.GetLine (editor.CaretLine - 1).Length == 0)
+ editor.CaretLine--;
+ editor.CaretColumn = editor.GetVirtualIndentationColumn (editor.CaretLine);
}
}
}
- }
+}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs
index 1046132837..d230e2edef 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs
@@ -205,64 +205,55 @@ namespace MonoDevelop.CSharp.Refactoring
return Task.Run (async delegate {
var result = new List<SearchResult> ();
var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ());
- foreach (var workspace in TypeSystemService.AllWorkspaces.OfType<MonoDevelopWorkspace> ()) {
- LookupResult lookup = null;
-
- foreach (var project in workspace.CurrentSolution.Projects) {
- if (token.IsCancellationRequested)
- return result;
-
- lookup = await TryLookupSymbolInProject (project, documentationCommentId, token);
- if (lookup.Success)
- break;
- }
+ var lookup = await TryLookupSymbol (documentationCommentId, hintProject, token);
+ if (lookup == null || !lookup.Success)
+ return Enumerable.Empty<SearchResult> ();
+
+ var workspace = TypeSystemService.AllWorkspaces.FirstOrDefault (w => w.CurrentSolution == lookup.Solution) as MonoDevelopWorkspace;
+ if (workspace == null)
+ return Enumerable.Empty<SearchResult> ();
- if (lookup == null || !lookup.Success) {
+ foreach (var loc in lookup.Symbol.Locations) {
+ if (token.IsCancellationRequested)
+ break;
+
+ if (!loc.IsInSource)
continue;
+ var fileName = loc.SourceTree.FilePath;
+ var offset = loc.SourceSpan.Start;
+ string projectedName;
+ int projectedOffset;
+ if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
+ fileName = projectedName;
+ offset = projectedOffset;
}
+ var sr = new MemberReference (lookup.Symbol, fileName, offset, loc.SourceSpan.Length);
+ sr.ReferenceUsageType = ReferenceUsageType.Declariton;
+ antiDuplicatesSet.Add (sr);
+ result.Add (sr);
+ }
- foreach (var loc in lookup.Symbol.Locations) {
+ foreach (var mref in await SymbolFinder.FindReferencesAsync (lookup.Symbol, lookup.Solution, token).ConfigureAwait (false)) {
+ foreach (var loc in mref.Locations) {
if (token.IsCancellationRequested)
break;
-
- if (!loc.IsInSource)
- continue;
- var fileName = loc.SourceTree.FilePath;
- var offset = loc.SourceSpan.Start;
+ var fileName = loc.Document.FilePath;
+ var offset = loc.Location.SourceSpan.Start;
string projectedName;
int projectedOffset;
if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
fileName = projectedName;
offset = projectedOffset;
}
- var sr = new MemberReference (lookup.Symbol, fileName, offset, loc.SourceSpan.Length);
- sr.ReferenceUsageType = ReferenceUsageType.Declariton;
- antiDuplicatesSet.Add (sr);
- result.Add (sr);
- }
+ var sr = new MemberReference (lookup.Symbol, fileName, offset, loc.Location.SourceSpan.Length);
- foreach (var mref in await SymbolFinder.FindReferencesAsync (lookup.Symbol, lookup.Solution, token).ConfigureAwait (false)) {
- foreach (var loc in mref.Locations) {
- if (token.IsCancellationRequested)
- break;
- var fileName = loc.Document.FilePath;
- var offset = loc.Location.SourceSpan.Start;
- string projectedName;
- int projectedOffset;
- if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
- fileName = projectedName;
- offset = projectedOffset;
- }
- var sr = new MemberReference (lookup.Symbol, fileName, offset, loc.Location.SourceSpan.Length);
-
- if (antiDuplicatesSet.Add (sr)) {
- var root = loc.Location.SourceTree.GetRoot ();
- var node = root.FindNode (loc.Location.SourceSpan);
- var trivia = root.FindTrivia (loc.Location.SourceSpan.Start);
- sr.ReferenceUsageType = HighlightUsagesExtension.GetUsage (node);
- result.Add (sr);
- }
+ if (antiDuplicatesSet.Add (sr)) {
+ var root = loc.Location.SourceTree.GetRoot ();
+ var node = root.FindNode (loc.Location.SourceSpan);
+ var trivia = root.FindTrivia (loc.Location.SourceSpan.Start);
+ sr.ReferenceUsageType = HighlightUsagesExtension.GetUsage (node);
+ result.Add (sr);
}
}
}
@@ -272,40 +263,41 @@ namespace MonoDevelop.CSharp.Refactoring
public override Task<IEnumerable<SearchResult>> FindAllReferences (string documentationCommentId, MonoDevelop.Projects.Project hintProject, CancellationToken token)
{
- var workspace = TypeSystemService.Workspace as MonoDevelopWorkspace;
- if (workspace == null)
- return Task.FromResult (Enumerable.Empty<SearchResult> ());
return Task.Run (async delegate {
var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ());
var result = new List<SearchResult> ();
var lookup = await TryLookupSymbol (documentationCommentId, hintProject, token);
if (!lookup.Success)
return result;
-
- foreach (var simSym in SymbolFinder.FindSimilarSymbols (lookup.Symbol, lookup.Compilation)) {
- foreach (var loc in simSym.Locations) {
- if (!loc.IsInSource)
- continue;
- var sr = new SearchResult (new FileProvider (loc.SourceTree.FilePath), loc.SourceSpan.Start, loc.SourceSpan.Length);
- if (antiDuplicatesSet.Add (sr)) {
- result.Add (sr);
+ var workspace = TypeSystemService.AllWorkspaces.FirstOrDefault (w => w.CurrentSolution == lookup.Solution) as MonoDevelopWorkspace;
+ if (workspace == null)
+ return Enumerable.Empty<SearchResult> ();
+ foreach (var curSymbol in lookup.Symbol.ContainingType.GetMembers ().Where (m => m.Kind == lookup.Symbol.Kind && m.Name == lookup.Symbol.Name)) {
+ foreach (var simSym in SymbolFinder.FindSimilarSymbols (curSymbol, lookup.Compilation)) {
+ foreach (var loc in simSym.Locations) {
+ if (!loc.IsInSource)
+ continue;
+ var sr = new SearchResult (new FileProvider (loc.SourceTree.FilePath), loc.SourceSpan.Start, loc.SourceSpan.Length);
+ if (antiDuplicatesSet.Add (sr)) {
+ result.Add (sr);
+ }
}
- }
- foreach (var mref in await SymbolFinder.FindReferencesAsync (simSym, lookup.Solution).ConfigureAwait (false)) {
- foreach (var loc in mref.Locations) {
- var fileName = loc.Document.FilePath;
- var offset = loc.Location.SourceSpan.Start;
- string projectedName;
- int projectedOffset;
- if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
- fileName = projectedName;
- offset = projectedOffset;
- }
+ foreach (var mref in await SymbolFinder.FindReferencesAsync (simSym, lookup.Solution).ConfigureAwait (false)) {
+ foreach (var loc in mref.Locations) {
+ var fileName = loc.Document.FilePath;
+ var offset = loc.Location.SourceSpan.Start;
+ string projectedName;
+ int projectedOffset;
+ if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) {
+ fileName = projectedName;
+ offset = projectedOffset;
+ }
- var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length);
- if (antiDuplicatesSet.Add (sr)) {
- result.Add (sr);
+ var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length);
+ if (antiDuplicatesSet.Add (sr)) {
+ result.Add (sr);
+ }
}
}
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
index 518f247cad..8ae54fe72d 100644
--- a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
@@ -262,6 +262,12 @@ namespace MonoDevelop.MacIntegration.MainToolbar
Enabled = mutableModel.Enabled,
Hidden = !mutableModel.Visible,
};
+ if (!string.IsNullOrEmpty (runtime.Image)) {
+ menuItem.Image = ImageService.GetIcon (runtime.Image).ToNSImage ();
+ }
+ if (!string.IsNullOrEmpty (runtime.Tooltip)) {
+ menuItem.ToolTip = runtime.Tooltip;
+ }
if (ActiveRuntime == runtime || (ActiveRuntime?.Children.Contains (runtime) ?? false)) {
menuItem.State = NSCellStateValue.On;
}
@@ -297,6 +303,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
NSImage projectImageDisabled = MultiResImage.CreateMultiResImage ("project", "disabled");
NSImage deviceImage = MultiResImage.CreateMultiResImage ("device", "");
NSImage deviceImageDisabled = MultiResImage.CreateMultiResImage ("device", "disabled");
+
+ string lastDeviceIconId;
+ NSImage lastDeviceImage;
+ NSImage lastDeviceImageDisabled;
public PathSelectorView (CGRect frameRect) : base (frameRect)
{
Cells = new [] {
@@ -501,11 +511,43 @@ namespace MonoDevelop.MacIntegration.MainToolbar
UpdateImages ();
}
+ static NSImage FixImageServiceImage (Xwt.Drawing.Image image, double scale, string[] styles)
+ {
+ NSImage result = image.WithStyles (styles).ToBitmap (scale).ToNSImage ();
+ result.Template = true;
+ return result;
+ }
+
+ NSImage GetDeviceImage (bool enabled)
+ {
+ if (ActiveRuntime == null || string.IsNullOrEmpty (ActiveRuntime.Image))
+ return enabled ? deviceImage : deviceImageDisabled;
+ if (ActiveRuntime.Image == lastDeviceIconId)
+ return enabled ? lastDeviceImage : lastDeviceImageDisabled;
+
+ lastDeviceIconId = ActiveRuntime.Image;
+ var scale = GtkWorkarounds.GetScaleFactor (Ide.IdeApp.Workbench.RootWindow);
+ Xwt.Drawing.Image baseIcon = ImageService.GetIcon (ActiveRuntime.Image, Gtk.IconSize.Menu);
+
+ string [] styles, disabledStyles;
+ if (NSUserDefaults.StandardUserDefaults.StringForKey ("AppleInterfaceStyle") == "Dark") {
+ styles = new [] { "dark" };
+ disabledStyles = new [] { "dark", "disabled" };
+ } else {
+ styles = null;
+ disabledStyles = new [] { "disabled" };
+ }
+
+ lastDeviceImage = FixImageServiceImage (baseIcon, scale, styles);
+ lastDeviceImageDisabled = FixImageServiceImage (baseIcon, scale, disabledStyles);
+ return enabled ? lastDeviceImage : lastDeviceImageDisabled;
+ }
+
void UpdateImages ()
{
NSImage runConfigImage = projectImage;
NSImage configImage = projectImage;
- NSImage runtimeImage = deviceImage;
+ NSImage runtimeImage = GetDeviceImage (Cells [RuntimeIdx].Enabled);
if (!Cells [RunConfigurationIdx].Enabled)
runConfigImage = projectImageDisabled;
@@ -513,9 +555,6 @@ namespace MonoDevelop.MacIntegration.MainToolbar
if (!Cells [ConfigurationIdx].Enabled)
configImage = projectImageDisabled;
- if (!Cells [ConfigurationIdx].Enabled)
- runtimeImage = deviceImageDisabled;
-
// HACK
// For some reason NSPathControl does not like the images that ImageService provides. To use them it requires
// ToBitmap() to be called first. But a second problem is that ImageService only seems to provide a single resolution
diff --git a/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/VSCodeDebuggerSession.cs b/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/VSCodeDebuggerSession.cs
index 68c8843843..f554e15e4f 100644
--- a/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/VSCodeDebuggerSession.cs
+++ b/main/src/addins/MonoDevelop.Debugger.VSCodeDebugProtocol/MonoDevelop.Debugger.VsCodeDebugProtocol/VSCodeDebuggerSession.cs
@@ -34,6 +34,9 @@ using System.IO;
using System.Text;
using Microsoft.VisualStudio.Shared.VSCodeDebugProtocol.Messages;
using Microsoft.VisualStudio.Shared.VSCodeDebugProtocol;
+using System.Threading;
+using MonoDevelop.Core;
+using MonoDevelop.Core.Execution;
namespace MonoDevelop.Debugger.VsCodeDebugProtocol
{
@@ -150,7 +153,17 @@ namespace MonoDevelop.Debugger.VsCodeDebugProtocol
protected virtual void OnDebugAdaptorRequestReceived (object sender, RequestReceivedEventArgs e)
{
-
+ if (e.Command == "runInTerminal") {
+ var args = (RunInTerminalArguments)e.Args;
+ var consoleOptions = OperationConsoleFactory.CreateConsoleOptions.Default.WithTitle (args.Title).WithPauseWhenFinished (pauseWhenFinished);
+ Runtime.ProcessService.StartConsoleProcess (
+ args.Args [0],
+ string.Join (" ", args.Args.Skip (1).ToArray ()),
+ args.Cwd,
+ ExternalConsoleFactory.Instance.CreateConsole (consoleOptions),
+ args.Env.ToDictionary ((i) => i.Key, (i) => i.Value.ToString ()));
+ e.Response = new RunInTerminalResponse ();
+ }
}
void StartDebugAgent ()
@@ -196,8 +209,10 @@ namespace MonoDevelop.Debugger.VsCodeDebugProtocol
Launch (startInfo);
}
+ bool pauseWhenFinished;
protected void Launch (DebuggerStartInfo startInfo)
{
+ pauseWhenFinished = !startInfo.CloseExternalConsoleOnExit;
StartDebugAgent ();
LaunchRequest launchRequest = CreateLaunchRequest (startInfo);
protocolClient.SendRequestSync (launchRequest);
@@ -296,19 +311,19 @@ namespace MonoDevelop.Debugger.VsCodeDebugProtocol
return null;
}
- List<Source> existingSourcesWithBreakpoints = new List<Source> ();
+ List<string> pathsWithBreakpoints = new List<string> ();
void UpdateBreakpoints ()
{
- //First clear all old breakpoints
- foreach (var source in existingSourcesWithBreakpoints)
- protocolClient.SendRequest (new SetBreakpointsRequest (source, new List<SourceBreakpoint> ()), null);
- existingSourcesWithBreakpoints.Clear ();
+ var bks = breakpoints.Select (b => b.Key).OfType<Mono.Debugging.Client.Breakpoint> ().Where (b => b.Enabled).GroupBy (b => b.FileName).ToArray ();
+ var filesForRemoval = pathsWithBreakpoints.Where (path => !bks.Any (b => b.Key == path)).ToArray ();
+ pathsWithBreakpoints = bks.Select (b => b.Key).ToList ();
+
+ foreach (var path in filesForRemoval)
+ protocolClient.SendRequest (new SetBreakpointsRequest (new Source (Path.GetFileName (path), path), new List<SourceBreakpoint> ()), null);
- var bks = breakpoints.Select (b => b.Key).OfType<Mono.Debugging.Client.Breakpoint> ().GroupBy (b => b.FileName).ToArray ();
foreach (var sourceFile in bks) {
var source = new Source (Path.GetFileName (sourceFile.Key), sourceFile.Key);
- existingSourcesWithBreakpoints.Add (source);
protocolClient.SendRequest (new SetBreakpointsRequest (
source,
sourceFile.Select (b => new SourceBreakpoint {
@@ -360,8 +375,11 @@ namespace MonoDevelop.Debugger.VsCodeDebugProtocol
public override void Dispose ()
{
base.Dispose ();
- if (protocolClient != null)
+ if (protocolClient != null) {
protocolClient.RequestReceived += OnDebugAdaptorRequestReceived;
+ protocolClient.SendRequestSync (new DisconnectRequest ());
+ protocolClient.Stop ();
+ }
}
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
index 785349674e..15b7afb3a3 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
@@ -58,6 +58,8 @@ namespace MonoDevelop.Debugger
protected Label ExceptionMessageLabel { get; private set; }
+ protected Label ExceptionHelpLinkLabel { get; private set; }
+
protected Label ExceptionTypeLabel { get; private set; }
readonly ExceptionCaughtMessage message;
@@ -101,15 +103,30 @@ namespace MonoDevelop.Debugger
ExceptionTypeLabel = new Label { Xalign = 0.0f, Selectable = true, CanFocus = false };
ExceptionMessageLabel = new Label { Wrap = true, Xalign = 0.0f, Selectable = true, CanFocus = false };
+ ExceptionHelpLinkLabel = new Label { Wrap = true, Xalign = 0.0f, Selectable = true, CanFocus = false, UseMarkup = true, LineWrapMode = Pango.WrapMode.Char };
+ ExceptionHelpLinkLabel.Name = "exception_help_link_label";
+ Gtk.Rc.ParseString (@"style ""exception-help-link-label""
+{
+ GtkWidget::link-color = ""#ffffff""
+ GtkWidget::visited-link-color = ""#ffffff""
+}
+widget ""*.exception_help_link_label"" style ""exception-help-link-label""
+");
+ ExceptionHelpLinkLabel.ModifyBase (StateType.Prelight, new Gdk.Color (119, 130, 140));
+
+ ExceptionHelpLinkLabel.SetLinkHandler ((str) => DesktopService.ShowUrl (str));
ExceptionTypeLabel.ModifyFg (StateType.Normal, new Gdk.Color (255, 255, 255));
ExceptionMessageLabel.ModifyFg (StateType.Normal, new Gdk.Color (255, 255, 255));
+ ExceptionHelpLinkLabel.ModifyFg (StateType.Normal, new Gdk.Color (255, 255, 255));
if (Platform.IsWindows) {
ExceptionTypeLabel.ModifyFont (Pango.FontDescription.FromString ("bold 19"));
ExceptionMessageLabel.ModifyFont (Pango.FontDescription.FromString ("10"));
+ ExceptionHelpLinkLabel.ModifyFont (Pango.FontDescription.FromString ("10"));
} else {
ExceptionTypeLabel.ModifyFont (Pango.FontDescription.FromString ("21"));
ExceptionMessageLabel.ModifyFont (Pango.FontDescription.FromString ("12"));
+ ExceptionHelpLinkLabel.ModifyFont (Pango.FontDescription.FromString ("12"));
}
//Force rendering of background with EventBox
@@ -121,6 +138,7 @@ namespace MonoDevelop.Debugger
rightVBox.PackStart (ExceptionTypeLabel, false, false, (uint)(Platform.IsWindows ? 0 : 2));
rightVBox.PackStart (ExceptionMessageLabel, true, true, (uint)(Platform.IsWindows ? 6 : 5));
+ rightVBox.PackStart (ExceptionHelpLinkLabel, false, false, 2);
hBox.PackStart (leftVBox, false, false, (uint)(Platform.IsWindows ? 5 : 0)); // as we change frame.BorderWidth below, we need to compensate
hBox.PackStart (rightVBox, true, true, (uint)(Platform.IsWindows ? 5 : 10));
@@ -142,8 +160,11 @@ namespace MonoDevelop.Debugger
{
base.OnSizeAllocated (allocation);
ExceptionMessageLabel.WidthRequest = rightVBox.Allocation.Width;
- if (vboxAroundInnerExceptionMessage != null)
+ ExceptionHelpLinkLabel.WidthRequest = rightVBox.Allocation.Width;
+ if (vboxAroundInnerExceptionMessage != null) {
InnerExceptionMessageLabel.WidthRequest = vboxAroundInnerExceptionMessage.Allocation.Width;
+ InnerExceptionHelpLinkLabel.WidthRequest = vboxAroundInnerExceptionMessage.Allocation.Width;
+ }
}
Widget CreateExceptionValueTreeView ()
@@ -374,6 +395,7 @@ widget ""*.exception_dialog_expander"" style ""exception-dialog-expander""
Label InnerExceptionTypeLabel;
Label InnerExceptionMessageLabel;
+ Label InnerExceptionHelpLinkLabel;
Widget CreateInnerExceptionMessage ()
{
@@ -398,8 +420,20 @@ widget ""*.exception_dialog_expander"" style ""exception-dialog-expander""
InnerExceptionMessageLabel.CanFocus = false;
InnerExceptionMessageLabel.Xalign = 0;
InnerExceptionMessageLabel.ModifyFont (Pango.FontDescription.FromString (Platform.IsWindows ? "9" : "11"));
+
+ InnerExceptionHelpLinkLabel = new Label ();
+ InnerExceptionHelpLinkLabel.UseMarkup = true;
+ InnerExceptionHelpLinkLabel.Wrap = true;
+ InnerExceptionHelpLinkLabel.LineWrapMode = Pango.WrapMode.Char;
+ InnerExceptionHelpLinkLabel.Selectable = true;
+ InnerExceptionHelpLinkLabel.CanFocus = false;
+ InnerExceptionHelpLinkLabel.Xalign = 0;
+ InnerExceptionHelpLinkLabel.ModifyFont (Pango.FontDescription.FromString (Platform.IsWindows ? "9" : "11"));
+ InnerExceptionHelpLinkLabel.SetLinkHandler ((str) => DesktopService.ShowUrl (str));
+
vboxAroundInnerExceptionMessage.PackStart (hbox, false, true, 0);
vboxAroundInnerExceptionMessage.PackStart (InnerExceptionMessageLabel, true, true, 10);
+ vboxAroundInnerExceptionMessage.PackStart (InnerExceptionHelpLinkLabel, true, true, 2);
hboxMain.PackStart (vboxAroundInnerExceptionMessage, true, true, 10);
hboxMain.ShowAll ();
return hboxMain;
@@ -564,6 +598,12 @@ widget ""*.exception_dialog_expander"" style ""exception-dialog-expander""
if (InnerExceptionTypeLabel != null) {
InnerExceptionTypeLabel.Markup = "<b>" + GLib.Markup.EscapeText (ex.Type) + "</b>";
InnerExceptionMessageLabel.Text = ex.Message;
+ if (!string.IsNullOrEmpty (ex.HelpLink)) {
+ InnerExceptionHelpLinkLabel.Markup = GetHelpLinkMarkup (ex);
+ InnerExceptionHelpLinkLabel.Show ();
+ } else {
+ InnerExceptionHelpLinkLabel.Hide ();
+ }
}
}
@@ -574,10 +614,21 @@ widget ""*.exception_dialog_expander"" style ""exception-dialog-expander""
ExceptionTypeLabel.Text = exception.Type;
ExceptionMessageLabel.Text = exception.Message ?? string.Empty;
+ if (!string.IsNullOrEmpty (exception.HelpLink)) {
+ ExceptionHelpLinkLabel.Show ();
+ ExceptionHelpLinkLabel.Markup = GetHelpLinkMarkup(exception);
+ } else {
+ ExceptionHelpLinkLabel.Hide ();
+ }
UpdateSelectedException (exception);
}
+ internal static string GetHelpLinkMarkup (ExceptionInfo exception)
+ {
+ return $"<a href=\"{System.Security.SecurityElement.Escape (exception.HelpLink)}\">{GettextCatalog.GetString ("More information")}</a>";
+ }
+
void ExceptionChanged (object sender, EventArgs e)
{
Application.Invoke (delegate {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageDependenciesNodeCommandHandler.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/PackageDependenciesNodeCommandHandler.cs
index 6cfdb494e6..78ee767357 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageDependenciesNodeCommandHandler.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/PackageDependenciesNodeCommandHandler.cs
@@ -25,8 +25,9 @@
// THE SOFTWARE.
using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.PackageManagement;
-namespace MonoDevelop.PackageManagement.Commands
+namespace MonoDevelop.DotNetCore.Commands
{
class PackageDependenciesNodeCommandHandler : NodeCommandHandler
{
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageDependencyNodeCommandHandler.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/PackageDependencyNodeCommandHandler.cs
index 81d19be668..bc64566779 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageDependencyNodeCommandHandler.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/PackageDependencyNodeCommandHandler.cs
@@ -25,13 +25,16 @@
// THE SOFTWARE.
using System;
+using System.Linq;
using MonoDevelop.Components.Commands;
using MonoDevelop.Core;
+using MonoDevelop.DotNetCore.NodeBuilders;
using MonoDevelop.Ide.Commands;
using MonoDevelop.Ide.Gui.Components;
-using MonoDevelop.PackageManagement.NodeBuilders;
+using MonoDevelop.PackageManagement;
+using MonoDevelop.PackageManagement.Commands;
-namespace MonoDevelop.PackageManagement.Commands
+namespace MonoDevelop.DotNetCore.Commands
{
class PackageDependencyNodeCommandHandler : NodeCommandHandler
{
@@ -49,36 +52,57 @@ namespace MonoDevelop.PackageManagement.Commands
void RemovePackage (PackageDependencyNode node, ProgressMonitorStatusMessage progressMessage)
{
- IPackageAction action = CreateUninstallPackageAction (node);
+ IPackageAction action = PackageReferenceNodeCommandHandler.CreateUninstallPackageAction (node.Project, node.Name);
PackageManagementServices.BackgroundPackageActionRunner.Run (progressMessage, action);
}
- IPackageAction CreateUninstallPackageAction (PackageDependencyNode node)
- {
- var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (node.Project.ParentSolution);
- return new UninstallNuGetPackageAction (solutionManager, new DotNetProjectProxy (node.Project)) {
- PackageId = node.Name
- };
- }
-
[CommandUpdateHandler (EditCommands.Delete)]
public void UpdateRemoveItem (CommandInfo info)
{
var node = (PackageDependencyNode)CurrentNode.DataItem;
- info.Enabled = CanDeleteMultipleItems () && node.CanBeRemoved;
- info.Text = GettextCatalog.GetString ("Remove");
+ if (!node.CanBeRemoved) {
+ info.Visible = false;
+ } else {
+ info.Enabled = CanDeleteMultipleItems ();
+ info.Text = GettextCatalog.GetString ("Remove");
+ }
+ }
+
+ public override void DeleteMultipleItems ()
+ {
+ int nodeCount = CurrentNodes.Count ();
+ if (nodeCount == 1) {
+ DeleteItem ();
+ } else if (nodeCount > 0) {
+ var nodes = CurrentNodes.Select (node => (PackageDependencyNode)node.DataItem).ToArray ();
+ RemoveMultiplePackages (nodes);
+ }
+ }
+
+ void RemoveMultiplePackages (PackageDependencyNode[] nodes)
+ {
+ ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateRemovingPackagesFromProjectMessage (nodes.Length);
+
+ try {
+ RemoveMultiplePackage (nodes, progressMessage);
+ } catch (Exception ex) {
+ PackageManagementServices.BackgroundPackageActionRunner.ShowError (progressMessage, ex);
+ }
}
- public override bool CanDeleteMultipleItems ()
+ void RemoveMultiplePackage (PackageDependencyNode[] nodes, ProgressMonitorStatusMessage progressMessage)
{
- return !MultipleSelectedNodes;
+ var project = nodes[0].Project;
+ string[] packageIds = nodes.Select (node => node.Name).ToArray ();
+ IPackageAction action = PackageReferenceNodeCommandHandler.CreateUninstallPackagesAction (project, packageIds);
+ PackageManagementServices.BackgroundPackageActionRunner.Run (progressMessage, action);
}
[CommandUpdateHandler (PackageReferenceNodeCommands.UpdatePackage)]
void CheckCanUpdatePackage (CommandInfo info)
{
var node = (PackageDependencyNode)CurrentNode.DataItem;
- info.Enabled = node.CanBeRemoved;
+ info.Visible = node.CanBeRemoved;
}
[CommandHandler (PackageReferenceNodeCommands.UpdatePackage)]
@@ -86,19 +110,11 @@ namespace MonoDevelop.PackageManagement.Commands
{
var node = (PackageDependencyNode)CurrentNode.DataItem;
var project = new DotNetProjectProxy (node.Project);
- ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateUpdatingSinglePackageMessage (node.Name, project);
- try {
- var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (node.Project.ParentSolution);
- var action = new UpdateNuGetPackageAction (solutionManager, project) {
- PackageId = node.Name,
- IncludePrerelease = !node.IsReleaseVersion ()
- };
-
- PackageManagementServices.BackgroundPackageActionRunner.Run (progressMessage, action);
- } catch (Exception ex) {
- PackageManagementServices.BackgroundPackageActionRunner.ShowError (progressMessage, ex);
- }
+ PackageReferenceNodeCommandHandler.UpdatePackage (
+ project,
+ node.Name,
+ !node.IsReleaseVersion ());
}
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/ProjectOrAssemblyDependenciesCommandHandler.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/ProjectOrAssemblyDependenciesCommandHandler.cs
new file mode 100644
index 0000000000..18e2dced0e
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Commands/ProjectOrAssemblyDependenciesCommandHandler.cs
@@ -0,0 +1,40 @@
+//
+// ProjectOrAssemblyDependenciesCommandHandler.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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 MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Commands;
+
+namespace MonoDevelop.DotNetCore.Commands
+{
+ class ProjectOrAssemblyDependenciesCommandHandler : NodeCommandHandler
+ {
+ public override void ActivateItem ()
+ {
+ IdeApp.CommandService.DispatchCommand (ProjectCommands.AddReference);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNode.cs
new file mode 100644
index 0000000000..8673e3ca0e
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNode.cs
@@ -0,0 +1,74 @@
+//
+// AssemblyDependenciesNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Core;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class AssemblyDependenciesNode
+ {
+ public static readonly string NodeName = "AssemblyDependencies";
+
+ public AssemblyDependenciesNode (DotNetProject project)
+ {
+ Project = project;
+ }
+
+ internal DotNetProject Project { get; private set; }
+
+ public bool HasChildNodes ()
+ {
+ return Project.References.Any (ProjectReferenceExtensions.IsAssemblyReference);
+ }
+
+ public string GetLabel ()
+ {
+ return GettextCatalog.GetString ("Assemblies");
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Empty;
+ }
+
+ public IconId Icon {
+ get { return Stock.OpenReferenceFolder; }
+ }
+
+ public IconId ClosedIcon {
+ get { return Stock.ClosedReferenceFolder; }
+ }
+
+ public IEnumerable<ProjectReference> GetChildNodes ()
+ {
+ return Project.References.Where (ProjectReferenceExtensions.IsAssemblyReference);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNodeBuilder.cs
new file mode 100644
index 0000000000..2821fa9048
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/AssemblyDependenciesNodeBuilder.cs
@@ -0,0 +1,68 @@
+//
+// AssemblyDependenciesNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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 MonoDevelop.DotNetCore.Commands;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class AssemblyDependenciesNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(AssemblyDependenciesNode); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(ProjectOrAssemblyDependenciesCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return AssemblyDependenciesNode.NodeName;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (AssemblyDependenciesNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.Icon);
+ nodeInfo.ClosedIcon = Context.GetIcon (node.ClosedIcon);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ var node = (AssemblyDependenciesNode)dataObject;
+ treeBuilder.AddChildren (node.GetChildNodes ());
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNode.cs
index 802d428101..6b5e75d324 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNode.cs
@@ -24,11 +24,12 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+using System.Collections.Generic;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Projects;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class DependenciesNode
{
@@ -37,9 +38,11 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public DependenciesNode (DotNetProject project)
{
Project = project;
+ PackageDependencyCache = new PackageDependencyNodeCache (Project);
}
internal DotNetProject Project { get; private set; }
+ internal PackageDependencyNodeCache PackageDependencyCache { get; private set; }
public string GetLabel ()
{
@@ -58,5 +61,15 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public IconId ClosedIcon {
get { return Stock.ClosedReferenceFolder; }
}
+
+ public IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes (bool sdkDependencies)
+ {
+ return PackageDependencyCache.GetTargetFrameworkNodes (this, sdkDependencies);
+ }
+
+ public IEnumerable<PackageDependencyNode> GetProjectPackageReferencesAsDependencyNodes ()
+ {
+ return PackageDependencyCache.GetProjectPackageReferencesAsDependencyNodes (this);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNodeBuilder.cs
index a73baa5a09..8c00cd2380 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNodeBuilder.cs
@@ -26,10 +26,8 @@
using System;
using MonoDevelop.Ide.Gui.Components;
-using MonoDevelop.Ide.Gui.Pads.ProjectPad;
-using MonoDevelop.Projects;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
public class DependenciesNodeBuilder : TypeNodeBuilder
{
@@ -64,9 +62,22 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
{
var node = (DependenciesNode)dataObject;
- var folderNode = new PackageDependenciesNode (node);
- folderNode.Refresh ();
- treeBuilder.AddChild (folderNode);
+ node.PackageDependencyCache.Refresh ();
+
+ var packagesNode = new PackageDependenciesNode (node);
+ if (packagesNode.HasChildNodes ())
+ treeBuilder.AddChild (packagesNode);
+
+ var sdkNode = new SdkDependenciesNode (node);
+ treeBuilder.AddChild (sdkNode);
+
+ var assembliesNode = new AssemblyDependenciesNode (node.Project);
+ if (assembliesNode.HasChildNodes ())
+ treeBuilder.AddChild (assembliesNode);
+
+ var projectsNode = new ProjectDependenciesNode (node.Project);
+ if (projectsNode.HasChildNodes ())
+ treeBuilder.AddChild (projectsNode);
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNodeBuilderExtension.cs
index 6dbd4e0e1d..3d0d807c76 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DependenciesNodeBuilderExtension.cs
@@ -25,27 +25,33 @@
// THE SOFTWARE.
using System;
+using System.Linq;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.PackageManagement;
using MonoDevelop.Projects;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class DependenciesNodeBuilderExtension : NodeBuilderExtension
{
IPackageManagementEvents packageManagementEvents;
- public DependenciesNodeBuilderExtension ()
+ protected override void Initialize ()
{
packageManagementEvents = PackageManagementServices.PackageManagementEvents;
-
packageManagementEvents.PackageOperationsFinished += PackageOperationsFinished;
+
+ IdeApp.Workspace.ReferenceAddedToProject += OnReferencesChanged;
+ IdeApp.Workspace.ReferenceRemovedFromProject += OnReferencesChanged;
}
public override void Dispose ()
{
packageManagementEvents.PackageOperationsFinished -= PackageOperationsFinished;
+ IdeApp.Workspace.ReferenceAddedToProject -= OnReferencesChanged;
+ IdeApp.Workspace.ReferenceRemovedFromProject -= OnReferencesChanged;
}
public override bool CanBuildNode (Type dataType)
@@ -61,7 +67,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
void PackageOperationsFinished (object sender, EventArgs e)
{
- RefreshAllChildNodes ();
+ RefreshAllChildNodes (packagesOnly: true);
}
public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
@@ -74,27 +80,55 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
treeBuilder.AddChild (folderNode);
}
- void RefreshAllChildNodes ()
+ void RefreshAllChildNodes (bool packagesOnly = false)
{
Runtime.RunInMainThread (() => {
foreach (DotNetProject project in IdeApp.Workspace.GetAllItems<DotNetProject> ()) {
if (project.IsDotNetCoreProject ())
- RefreshChildNodes (project);
+ RefreshChildNodes (project, packagesOnly);
}
});
}
- void RefreshChildNodes (DotNetProject project)
+ void RefreshChildNodes (DotNetProject project, bool packagesOnly)
{
ITreeBuilder builder = Context.GetTreeBuilder (project);
if (builder != null) {
if (builder.MoveToChild (DependenciesNode.NodeName, typeof (DependenciesNode))) {
- if (builder.MoveToChild (PackageDependenciesNode.NodeName, typeof (PackageDependenciesNode))) {
- var packagesFolder = (PackageDependenciesNode)builder.DataItem;
- packagesFolder.Refresh ();
+ if (packagesOnly) {
+ var dependenciesNode = (DependenciesNode)builder.DataItem;
+ dependenciesNode.PackageDependencyCache.Refresh ();
+ UpdateNuGetFolderNode (builder, dependenciesNode);
+ } else {
+ builder.UpdateAll ();
}
}
}
}
+
+ void UpdateNuGetFolderNode (ITreeBuilder builder, DependenciesNode dependenciesNode)
+ {
+ bool hasPackages = dependenciesNode.Project.Items.OfType<ProjectPackageReference> ().Any ();
+ if (hasPackages && !builder.MoveToChild (PackageDependenciesNode.NodeName, typeof (PackageDependenciesNode))) {
+ var packagesNode = new PackageDependenciesNode (dependenciesNode);
+ builder.AddChild (packagesNode);
+ }
+ }
+
+ void OnReferencesChanged (object sender, ProjectReferenceEventArgs e)
+ {
+ RefreshAllChildNodes (e.Project as DotNetProject);
+ }
+
+ void RefreshAllChildNodes (DotNetProject project)
+ {
+ if (project == null)
+ return;
+
+ Runtime.RunInMainThread (() => {
+ if (project.IsDotNetCoreProject ())
+ RefreshChildNodes (project, packagesOnly: false);
+ });
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreFolderNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreFolderNodeBuilderExtension.cs
index b4c8426b54..f6600d1ece 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreFolderNodeBuilderExtension.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreFolderNodeBuilderExtension.cs
@@ -29,7 +29,7 @@ using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide.Gui.Pads.ProjectPad;
using MonoDevelop.Projects;
-namespace MonoDevelop.DotNetCore
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class DotNetCoreFolderNodeBuilderExtension : NodeBuilderExtension
{
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectNodeBuilderExtension.cs
index 2dcb4802f9..ff1e4f2c76 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectNodeBuilderExtension.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectNodeBuilderExtension.cs
@@ -30,7 +30,7 @@ using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide.Tasks;
using MonoDevelop.Projects;
-namespace MonoDevelop.DotNetCore
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class DotNetCoreProjectNodeBuilderExtension : NodeBuilderExtension
{
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectReferencesNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectReferencesNodeBuilderExtension.cs
new file mode 100644
index 0000000000..62db831eb0
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/DotNetCoreProjectReferencesNodeBuilderExtension.cs
@@ -0,0 +1,57 @@
+//
+// EmptyDirectoryRemover.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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 MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class DotNetCoreProjectReferencesNodeBuilderExtension : NodeBuilderExtension
+ {
+ public override bool CanBuildNode (Type dataType)
+ {
+ return typeof (ProjectReferenceCollection).IsAssignableFrom (dataType);
+ }
+
+ public override void GetNodeAttributes (ITreeNavigator parentNode, object dataObject, ref NodeAttributes attributes)
+ {
+ if (IsDotNetCoreProject (parentNode)) {
+ attributes |= NodeAttributes.Hidden;
+ }
+ }
+
+ bool IsDotNetCoreProject (ITreeNavigator parentNode)
+ {
+ var project = parentNode.DataItem as DotNetProject;
+ if (project != null)
+ return project.HasFlavor<DotNetCoreProjectExtension> ();
+
+ return false;
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNode.cs
new file mode 100644
index 0000000000..e22d152dca
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNode.cs
@@ -0,0 +1,94 @@
+//
+// PackageDependenciesNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 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.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Core;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.PackageManagement;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class PackageDependenciesNode
+ {
+ public static readonly string NodeName = "PackageDependencies";
+
+ public PackageDependenciesNode (DependenciesNode parentNode)
+ {
+ ParentNode = parentNode;
+ }
+
+ internal DotNetProject Project {
+ get { return ParentNode.Project; }
+ }
+
+ internal DependenciesNode ParentNode { get; private set; }
+
+ public string GetLabel ()
+ {
+ return "NuGet";
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Empty;
+ }
+
+ public IconId Icon {
+ get { return Stock.OpenReferenceFolder; }
+ }
+
+ public IconId ClosedIcon {
+ get { return Stock.ClosedReferenceFolder; }
+ }
+
+ public bool LoadedDependencies {
+ get { return ParentNode.PackageDependencyCache.LoadedDependencies; }
+ }
+
+ public IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes ()
+ {
+ return ParentNode.GetTargetFrameworkNodes (sdkDependencies: false);
+ }
+
+ public PackageDependency GetDependency (string dependency)
+ {
+ return ParentNode.PackageDependencyCache.GetDependency (dependency);
+ }
+
+ public IEnumerable<PackageDependencyNode> GetProjectPackageReferencesAsDependencyNodes ()
+ {
+ return ParentNode.GetProjectPackageReferencesAsDependencyNodes ();
+ }
+
+ public bool HasChildNodes ()
+ {
+ return Project.Items.OfType<ProjectPackageReference> ().Any ();
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNodeBuilder.cs
index 9af68bda6b..7b093d91cf 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependenciesNodeBuilder.cs
@@ -27,11 +27,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using MonoDevelop.Core;
+using MonoDevelop.DotNetCore.Commands;
using MonoDevelop.Ide.Gui.Components;
-using MonoDevelop.PackageManagement.Commands;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class PackageDependenciesNodeBuilder : TypeNodeBuilder
{
@@ -59,7 +58,8 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
{
- return true;
+ var node = (PackageDependenciesNode)dataObject;
+ return node.HasChildNodes ();
}
public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
@@ -99,21 +99,32 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public override void OnNodeAdded (object dataObject)
{
var dependenciesNode = (PackageDependenciesNode)dataObject;
- dependenciesNode.PackageDependenciesChanged += OnPackageDependenciesChanged;
+ dependenciesNode.ParentNode.PackageDependencyCache.PackageDependenciesChanged += OnPackageDependenciesChanged;
}
public override void OnNodeRemoved (object dataObject)
{
var dependenciesNode = (PackageDependenciesNode)dataObject;
- dependenciesNode.PackageDependenciesChanged -= OnPackageDependenciesChanged;
+ dependenciesNode.ParentNode.PackageDependencyCache.PackageDependenciesChanged -= OnPackageDependenciesChanged;
}
void OnPackageDependenciesChanged (object sender, EventArgs e)
{
- var dependenciesNode = (PackageDependenciesNode)sender;
- ITreeBuilder builder = Context.GetTreeBuilder (dependenciesNode);
- if (builder != null) {
- builder.UpdateAll ();
+ var cache = (PackageDependencyNodeCache)sender;
+ var project = cache.Project;
+ ITreeBuilder builder = Context.GetTreeBuilder (project);
+ if (builder == null)
+ return;
+
+ if (builder.MoveToChild (DependenciesNode.NodeName, typeof(DependenciesNode))) {
+ if (builder.MoveToChild (PackageDependenciesNode.NodeName, typeof (PackageDependenciesNode))) {
+ var node = builder.DataItem as PackageDependenciesNode;
+ if (node != null && !node.HasChildNodes ()) {
+ builder.Remove ();
+ return;
+ }
+ builder.UpdateAll ();
+ }
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNode.cs
index 6f6cbc5d82..8067bbfed0 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNode.cs
@@ -28,20 +28,21 @@ using System;
using System.Collections.Generic;
using System.Linq;
using MonoDevelop.Core;
+using MonoDevelop.PackageManagement;
using MonoDevelop.Projects;
using NuGet.Versioning;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class PackageDependencyNode
{
- PackageDependenciesNode dependenciesNode;
+ DependenciesNode dependenciesNode;
PackageDependency dependency;
string name;
string version;
PackageDependencyNode (
- PackageDependenciesNode dependenciesNode,
+ DependenciesNode dependenciesNode,
PackageDependency dependency,
bool topLevel)
{
@@ -56,7 +57,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
IsReadOnly = !PackageReferenceExistsInProject ();
}
- PackageDependencyNode (PackageDependenciesNode dependenciesNode, ProjectPackageReference packageReference)
+ PackageDependencyNode (DependenciesNode dependenciesNode, ProjectPackageReference packageReference)
{
this.dependenciesNode = dependenciesNode;
IsTopLevel = true;
@@ -66,19 +67,34 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
}
public static PackageDependencyNode Create (
- PackageDependenciesNode dependenciesNode,
+ DependenciesNode dependenciesNode,
string dependencyName,
+ bool sdkDependencies,
bool topLevel)
{
- PackageDependency dependency = dependenciesNode.GetDependency (dependencyName);
- if (dependency != null)
- return new PackageDependencyNode (dependenciesNode, dependency, topLevel);
+ PackageDependency dependency = dependenciesNode.PackageDependencyCache.GetDependency (dependencyName);
+ if (dependency != null) {
+ var node = new PackageDependencyNode (dependenciesNode, dependency, topLevel);
+ if (node.IsSupported (sdkDependencies)) {
+ return node;
+ }
+ }
return null;
}
+ /// <summary>
+ /// Sdk dependencies have IsReadOnly set to true.
+ /// </summary>
+ bool IsSupported (bool sdkDependencies)
+ {
+ if (IsReadOnly)
+ return sdkDependencies;
+ return !sdkDependencies;
+ }
+
public static PackageDependencyNode Create (
- PackageDependenciesNode dependenciesNode,
+ DependenciesNode dependenciesNode,
ProjectPackageReference packageReference)
{
return new PackageDependencyNode (dependenciesNode, packageReference);
@@ -142,12 +158,13 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
}
public static IEnumerable<PackageDependencyNode> GetDependencyNodes (
- PackageDependenciesNode dependenciesNode,
+ DependenciesNode dependenciesNode,
PackageDependency dependency,
+ bool sdkDependencies = false,
bool topLevel = false)
{
return dependency.Dependencies
- .Select (item => PackageDependencyNode.Create (dependenciesNode, item, topLevel))
+ .Select (item => Create (dependenciesNode, item, sdkDependencies, topLevel))
.Where (item => item != null);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNodeBuilder.cs
index b90fa4ca55..60cb7a5215 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNodeBuilder.cs
@@ -27,9 +27,9 @@
using System;
using System.Collections.Generic;
using MonoDevelop.Ide.Gui.Components;
-using MonoDevelop.PackageManagement.Commands;
+using MonoDevelop.DotNetCore.Commands;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class PackageDependencyNodeBuilder : TypeNodeBuilder
{
@@ -44,7 +44,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
}
public override string ContextMenuAddinPath {
- get { return "/MonoDevelop/PackageManagement/ContextMenu/ProjectPad/PackageDependency"; }
+ get { return "/MonoDevelop/DotNetCore/ContextMenu/ProjectPad/PackageDependency"; }
}
public override Type CommandHandlerType {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNodeCache.cs
index b766e5ac82..08e289e9ff 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/PackageDependencyNodeCache.cs
@@ -1,10 +1,10 @@
//
-// PackageDependenciesNode.cs
+// PackageDependencyNodeCache.cs
//
// Author:
// Matt Ward <matt.ward@xamarin.com>
//
-// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+// Copyright (c) 2017 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
@@ -23,7 +23,6 @@
// 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.Collections.Generic;
using System.Linq;
@@ -31,46 +30,23 @@ using System.Threading;
using System.Threading.Tasks;
using MonoDevelop.Core;
using MonoDevelop.Ide;
-using MonoDevelop.Ide.Gui;
+using MonoDevelop.PackageManagement;
using MonoDevelop.Projects;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
- class PackageDependenciesNode
+ class PackageDependencyNodeCache
{
- public static readonly string NodeName = "PackageDependencies";
-
- DotNetProject project;
List<PackageDependency> frameworks = new List<PackageDependency> ();
Dictionary<string, PackageDependency> packageDependencies = new Dictionary<string, PackageDependency> ();
CancellationTokenSource cancellationTokenSource;
- public PackageDependenciesNode (DependenciesNode dependenciesNode)
- {
- project = dependenciesNode.Project;
- }
-
- internal DotNetProject Project {
- get { return project; }
- }
-
- public string GetLabel ()
+ public PackageDependencyNodeCache (DotNetProject project)
{
- return "NuGet";
+ Project = project;
}
- public string GetSecondaryLabel ()
- {
- return string.Empty;
- }
-
- public IconId Icon {
- get { return Stock.OpenReferenceFolder; }
- }
-
- public IconId ClosedIcon {
- get { return Stock.ClosedReferenceFolder; }
- }
+ internal DotNetProject Project { get; private set; }
public bool LoadedDependencies { get; private set; }
@@ -114,7 +90,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
Task<IEnumerable<PackageDependency>> GetPackageDependenciesAsync (CancellationTokenSource tokenSource)
{
var configurationSelector = IdeApp.Workspace?.ActiveConfiguration ?? ConfigurationSelector.Default;
- return Task.Run (() => project.GetPackageDependencies (configurationSelector, tokenSource.Token));
+ return Task.Run (() => Project.GetPackageDependencies (configurationSelector, tokenSource.Token));
}
void OnPackageDependenciesRead (Task<IEnumerable<PackageDependency>> task, CancellationTokenSource tokenSource)
@@ -152,9 +128,11 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
}
}
- public IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes ()
+ public IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes (
+ DependenciesNode dependenciesNode,
+ bool sdkDependencies)
{
- return frameworks.Select (dependency => new TargetFrameworkNode (this, dependency));
+ return frameworks.Select (dependency => new TargetFrameworkNode (dependenciesNode, dependency, sdkDependencies));
}
public PackageDependency GetDependency (string dependency)
@@ -166,10 +144,10 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
return null;
}
- public IEnumerable<PackageDependencyNode> GetProjectPackageReferencesAsDependencyNodes ()
+ public IEnumerable<PackageDependencyNode> GetProjectPackageReferencesAsDependencyNodes (DependenciesNode dependenciesNode)
{
- return project.Items.OfType<ProjectPackageReference> ()
- .Select (reference => PackageDependencyNode.Create (this, reference));
+ return Project.Items.OfType<ProjectPackageReference> ()
+ .Select (reference => PackageDependencyNode.Create (dependenciesNode, reference));
}
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNode.cs
new file mode 100644
index 0000000000..2a8f52ea07
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNode.cs
@@ -0,0 +1,74 @@
+//
+// ProjectDependenciesNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Core;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class ProjectDependenciesNode
+ {
+ public static readonly string NodeName = "ProjectDependencies";
+
+ public ProjectDependenciesNode (DotNetProject project)
+ {
+ Project = project;
+ }
+
+ internal DotNetProject Project { get; private set; }
+
+ public bool HasChildNodes ()
+ {
+ return Project.References.Any (ProjectReferenceExtensions.IsProjectReference);
+ }
+
+ public string GetLabel ()
+ {
+ return GettextCatalog.GetString ("Projects");
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Empty;
+ }
+
+ public IconId Icon {
+ get { return Stock.OpenReferenceFolder; }
+ }
+
+ public IconId ClosedIcon {
+ get { return Stock.ClosedReferenceFolder; }
+ }
+
+ public IEnumerable<ProjectReference> GetChildNodes ()
+ {
+ return Project.References.Where (ProjectReferenceExtensions.IsProjectReference);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNodeBuilder.cs
new file mode 100644
index 0000000000..56841efc10
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/ProjectDependenciesNodeBuilder.cs
@@ -0,0 +1,68 @@
+//
+// ProjectDependenciesNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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 MonoDevelop.DotNetCore.Commands;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class ProjectDependenciesNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(ProjectDependenciesNode); }
+ }
+
+ public override Type CommandHandlerType {
+ get { return typeof(ProjectOrAssemblyDependenciesCommandHandler); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return ProjectDependenciesNode.NodeName;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (ProjectDependenciesNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.Icon);
+ nodeInfo.ClosedIcon = Context.GetIcon (node.ClosedIcon);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ var node = (ProjectDependenciesNode)dataObject;
+ treeBuilder.AddChildren (node.GetChildNodes ());
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNode.cs
new file mode 100644
index 0000000000..57bd391991
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNode.cs
@@ -0,0 +1,82 @@
+//
+// SdkDependenciesNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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 MonoDevelop.Projects;
+using MonoDevelop.Core;
+using MonoDevelop.Ide.Gui;
+using System.Collections.Generic;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class SdkDependenciesNode
+ {
+ public static readonly string NodeName = "SdkDependencies";
+
+ public SdkDependenciesNode (DependenciesNode parentNode)
+ {
+ ParentNode = parentNode;
+ }
+
+ internal DotNetProject Project {
+ get { return ParentNode.Project; }
+ }
+
+ internal DependenciesNode ParentNode { get; private set; }
+
+ public string GetLabel ()
+ {
+ return GettextCatalog.GetString ("SDK");
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Empty;
+ }
+
+ public IconId Icon {
+ get { return Stock.OpenReferenceFolder; }
+ }
+
+ public IconId ClosedIcon {
+ get { return Stock.ClosedReferenceFolder; }
+ }
+
+ public bool LoadedDependencies {
+ get { return ParentNode.PackageDependencyCache.LoadedDependencies; }
+ }
+
+ public IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes ()
+ {
+ return ParentNode.GetTargetFrameworkNodes (sdkDependencies: true);
+ }
+
+ public PackageDependency GetDependency (string dependency)
+ {
+ return ParentNode.PackageDependencyCache.GetDependency (dependency);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNodeBuilder.cs
new file mode 100644
index 0000000000..2f6878cb38
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/SdkDependenciesNodeBuilder.cs
@@ -0,0 +1,112 @@
+//
+// SdkDependenciesNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.DotNetCore.NodeBuilders
+{
+ class SdkDependenciesNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(SdkDependenciesNode); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return SdkDependenciesNode.NodeName;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (SdkDependenciesNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.Icon);
+ nodeInfo.ClosedIcon = Context.GetIcon (node.ClosedIcon);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ var dependenciesNode = (SdkDependenciesNode)dataObject;
+ if (dependenciesNode.LoadedDependencies) {
+ AddLoadedDependencyNodes (treeBuilder, dependenciesNode);
+ }
+ }
+
+ void AddLoadedDependencyNodes (ITreeBuilder treeBuilder, SdkDependenciesNode dependenciesNode)
+ {
+ var frameworkNodes = GetTargetFrameworkNodes (dependenciesNode).ToList ();
+ if (frameworkNodes.Count > 1) {
+ treeBuilder.AddChildren (frameworkNodes);
+ } else if (frameworkNodes.Any ()) {
+ var frameworkNode = frameworkNodes.First ();
+ treeBuilder.AddChildren (frameworkNode.GetDependencyNodes ());
+ }
+ }
+
+ IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes (object dataObject)
+ {
+ var dependenciesNode = (SdkDependenciesNode)dataObject;
+ return dependenciesNode.GetTargetFrameworkNodes ();
+ }
+
+ public override void OnNodeAdded (object dataObject)
+ {
+ var dependenciesNode = (SdkDependenciesNode)dataObject;
+ dependenciesNode.ParentNode.PackageDependencyCache.PackageDependenciesChanged += OnPackageDependenciesChanged;
+ }
+
+ public override void OnNodeRemoved (object dataObject)
+ {
+ var dependenciesNode = (SdkDependenciesNode)dataObject;
+ dependenciesNode.ParentNode.PackageDependencyCache.PackageDependenciesChanged -= OnPackageDependenciesChanged;
+ }
+
+ void OnPackageDependenciesChanged (object sender, EventArgs e)
+ {
+ var cache = (PackageDependencyNodeCache)sender;
+ var project = cache.Project;
+ ITreeBuilder builder = Context.GetTreeBuilder (project);
+ if (builder == null)
+ return;
+
+ if (builder.MoveToChild (DependenciesNode.NodeName, typeof(DependenciesNode))) {
+ if (builder.MoveToChild (SdkDependenciesNode.NodeName, typeof(SdkDependenciesNode))) {
+ builder.UpdateAll ();
+ }
+ }
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/TargetFrameworkNode.cs
index 5b49550c00..8f52f283ad 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/TargetFrameworkNode.cs
@@ -29,33 +29,26 @@ using System.Linq;
using MonoDevelop.Core;
using MonoDevelop.Projects;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class TargetFrameworkNode
{
- PackageDependenciesNode dependenciesNode;
+ DependenciesNode dependenciesNode;
PackageDependency dependency;
- string name = string.Empty;
+ bool sdkDependencies;
- public TargetFrameworkNode (PackageDependenciesNode dependenciesNode, PackageDependency dependency)
+ public TargetFrameworkNode (
+ DependenciesNode dependenciesNode,
+ PackageDependency dependency,
+ bool sdkDependencies)
{
this.dependenciesNode = dependenciesNode;
this.dependency = dependency;
- }
-
- public TargetFrameworkNode (PackageDependenciesNode dependenciesNode, string name)
- {
- this.dependenciesNode = dependenciesNode;
- this.name = name;
+ this.sdkDependencies = sdkDependencies;
}
public string Name {
- get {
- if (dependency != null)
- return dependency.Name;
-
- return name;
- }
+ get { return dependency.Name; }
}
public string GetLabel ()
@@ -65,10 +58,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public string GetSecondaryLabel ()
{
- if (dependency != null)
- return string.Format ("({0})", dependency.Version);
-
- return string.Empty;
+ return string.Format ("({0})", dependency.Version);
}
public IconId GetIconId ()
@@ -78,21 +68,16 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public bool HasDependencies ()
{
- if (dependency != null)
- return dependency.Dependencies.Any ();
-
- return false;
+ return dependency.Dependencies.Any ();
}
public IEnumerable<PackageDependencyNode> GetDependencyNodes ()
{
- if (dependency != null) {
- return PackageDependencyNode.GetDependencyNodes (
- dependenciesNode,
- dependency,
- topLevel: true);
- }
- return new PackageDependencyNode[0];
+ return PackageDependencyNode.GetDependencyNodes (
+ dependenciesNode,
+ dependency,
+ sdkDependencies,
+ topLevel: true);
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/TargetFrameworkNodeBuilder.cs
index 7d2c8e994c..6c85ec97c3 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.NodeBuilders/TargetFrameworkNodeBuilder.cs
@@ -26,10 +26,9 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using MonoDevelop.Ide.Gui.Components;
-namespace MonoDevelop.PackageManagement.NodeBuilders
+namespace MonoDevelop.DotNetCore.NodeBuilders
{
class TargetFrameworkNodeBuilder : TypeNodeBuilder
{
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreMSBuildProjectTests.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreMSBuildProjectTests.cs
index 1ff47267da..42a17e4977 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreMSBuildProjectTests.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.Tests/MonoDevelop.DotNetCore.Tests/DotNetCoreMSBuildProjectTests.cs
@@ -468,6 +468,48 @@ namespace MonoDevelop.DotNetCore.Tests
}
[Test]
+ public void WriteProject_NetStandardTargetFrameworkVersionChanged_TargetFrameworkUpdated ()
+ {
+ CreateMSBuildProject (
+ "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n" +
+ " <PropertyGroup>\r\n" +
+ " <OutputType>Exe</OutputType>\r\n" +
+ " <TargetFramework>netstandard1.0</TargetFramework>\r\n" +
+ " </PropertyGroup>\r\n" +
+ "</Project>");
+ msbuildProject.Evaluate ();
+ ReadProject ();
+ project.Sdk = "Microsoft.NET.Sdk";
+
+ WriteProject (".NETStandard", "1.6");
+
+ string savedFramework = msbuildProject.GetGlobalPropertyGroup ()
+ .GetValue ("TargetFramework");
+ Assert.AreEqual ("netstandard1.6", savedFramework);
+ }
+
+ [Test]
+ public void WriteProject_NetFrameworkVersionChanged_TargetFrameworkUpdated ()
+ {
+ CreateMSBuildProject (
+ "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n" +
+ " <PropertyGroup>\r\n" +
+ " <OutputType>Exe</OutputType>\r\n" +
+ " <TargetFramework>net45</TargetFramework>\r\n" +
+ " </PropertyGroup>\r\n" +
+ "</Project>");
+ msbuildProject.Evaluate ();
+ ReadProject ();
+ project.Sdk = "Microsoft.NET.Sdk";
+
+ WriteProject (".NETFramework", "4.6");
+
+ string savedFramework = msbuildProject.GetGlobalPropertyGroup ()
+ .GetValue ("TargetFramework");
+ Assert.AreEqual ("net46", savedFramework);
+ }
+
+ [Test]
public void WriteProject_ProjectDefinesMultipleTargetFrameworksAndTargetFrameworkVersionChanged_TargetFrameworksUpdated ()
{
CreateMSBuildProject (
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/DotNetCoreTestProvider.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/DotNetCoreTestProvider.cs
index 5de1d91960..a025cd5c10 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/DotNetCoreTestProvider.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/DotNetCoreTestProvider.cs
@@ -24,7 +24,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-using System;
+using MonoDevelop.PackageManagement;
using MonoDevelop.Projects;
using MonoDevelop.UnitTesting;
@@ -40,7 +40,8 @@ namespace MonoDevelop.DotNetCore.UnitTesting
var dotNetCoreProject = project.GetFlavor<DotNetCoreProjectExtension> ();
if (dotNetCoreProject != null) {
- return new DotNetCoreProjectTestSuite (dotNetCoreProject);
+ if (project.HasPackageReference ("Microsoft.NET.Test.Sdk"))
+ return new DotNetCoreProjectTestSuite (dotNetCoreProject);
}
return null;
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/IDotNetCoreTestProvider.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/IDotNetCoreTestProvider.cs
index 2ae0505f0a..46e7092bb4 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/IDotNetCoreTestProvider.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.UnitTesting/IDotNetCoreTestProvider.cs
@@ -29,7 +29,7 @@ using Microsoft.VisualStudio.TestPlatform.ObjectModel;
namespace MonoDevelop.DotNetCore.UnitTesting
{
- public interface IDotNetCoreTestProvider
+ interface IDotNetCoreTestProvider
{
IEnumerable<TestCase> GetTests ();
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj
index 96f0f07b94..a8a157d84d 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore.csproj
@@ -11,6 +11,9 @@
<RootNamespace>MonoDevelop.DotNetCore</RootNamespace>
<AssemblyName>MonoDevelop.DotNetCore</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <MonoLauncher Condition=" '$(VisualStudioVersion)' == '' ">mono </MonoLauncher>
+ <NuGetUrl>https://dotnet.myget.org/F/templating/api/v2/package/</NuGetUrl>
+ <TemplatesVersion>1.0.0-beta1-20170216-123</TemplatesVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -40,27 +43,31 @@
<HintPath>..\..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>False</Private>
</Reference>
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <Reference Include="NuGet.Versioning">
+ <HintPath>..\..\..\external\nuget-binary\NuGet.Versioning.dll</HintPath>
+ <Private>False</Private>
+ </Reference>
<Reference Include="Microsoft.TestPlatform.CommunicationUtilities">
- <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0-preview-20170201-02\lib\net46\Microsoft.TestPlatform.CommunicationUtilities.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0\lib\net46\Microsoft.TestPlatform.CommunicationUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.CoreUtilities">
- <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0-preview-20170201-02\lib\net46\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0\lib\net46\Microsoft.TestPlatform.CoreUtilities.dll</HintPath>
</Reference>
<Reference Include="Microsoft.TestPlatform.VsTestConsole.TranslationLayer">
- <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0-preview-20170201-02\lib\net46\Microsoft.TestPlatform.VsTestConsole.TranslationLayer.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0\lib\net46\Microsoft.TestPlatform.VsTestConsole.TranslationLayer.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.Common">
- <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0-preview-20170201-02\lib\net46\Microsoft.VisualStudio.TestPlatform.Common.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0\lib\net46\Microsoft.VisualStudio.TestPlatform.Common.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.ObjectModel">
- <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0-preview-20170201-02\lib\net46\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
+ <HintPath>..\..\..\packages\Microsoft.TestPlatform.TranslationLayer.15.0.0\lib\net46\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll</HintPath>
</Reference>
- <Reference Include="Microsoft.CSharp" />
- <Reference Include="System.Runtime.Serialization" />
- <Reference Include="atk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <Reference Include="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
- <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
@@ -74,7 +81,6 @@
<Compile Include="MonoDevelop.DotNetCore.Templating\EmptyDirectoryRemover.cs" />
<Compile Include="MonoDevelop.DotNetCore.Templating\FileTemplateProcessor.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCoreNotInstalledDialog.cs" />
- <Compile Include="MonoDevelop.DotNetCore\DotNetCoreFolderNodeBuilderExtension.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCoreProjectFileRenamedHandler.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCoreProjectReloadMonitor.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCoreProjectReader.cs" />
@@ -93,7 +99,6 @@
<Compile Include="MonoDevelop.DotNetCore.UnitTesting\IDotNetCoreTestProvider.cs" />
<Compile Include="MonoDevelop.DotNetCore.UnitTesting\IDotNetCoreTestRunner.cs" />
<Compile Include="MonoDevelop.DotNetCore.UnitTesting\TestResultBuilder.cs" />
- <Compile Include="MonoDevelop.DotNetCore\DotNetCoreProjectNodeBuilderExtension.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCoreSdkVersion.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCliToolReference.cs" />
<Compile Include="MonoDevelop.DotNetCore\DotNetCoreRuntimeOptionsPanel.cs" />
@@ -107,15 +112,36 @@
<Compile Include="MonoDevelop.DotNetCore\TargetFrameworkMonikerExtensions.cs" />
<Compile Include="MonoDevelop.DotNetCore\FilePathExtensions.cs" />
<Compile Include="MonoDevelop.DotNetCore\MSBuildPropertyGroupExtensions.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\ProjectDependenciesNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore\ProjectReferenceExtensions.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\ProjectDependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\AssemblyDependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\AssemblyDependenciesNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\DotNetCoreProjectReferencesNodeBuilderExtension.cs" />
+ <Compile Include="MonoDevelop.DotNetCore\DotNetMigrate.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\DependenciesNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\DependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\DependenciesNodeBuilderExtension.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\PackageDependenciesNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\PackageDependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\PackageDependencyNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\PackageDependencyNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\TargetFrameworkNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\TargetFrameworkNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.Commands\ProjectOrAssemblyDependenciesCommandHandler.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.Commands\PackageDependenciesNodeCommandHandler.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.Commands\PackageDependencyNodeCommandHandler.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\DotNetCoreFolderNodeBuilderExtension.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\DotNetCoreProjectNodeBuilderExtension.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\PackageDependencyNodeCache.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\SdkDependenciesNode.cs" />
+ <Compile Include="MonoDevelop.DotNetCore.NodeBuilders\SdkDependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.DotNetCore\DotNetCoreRunConfigurationEditor.cs" />
+ <Compile Include="MonoDevelop.DotNetCore\DotNetCoreRunConfiguration.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="MonoDevelop.DotNetCore\" />
- <Folder Include="Templates\" />
- <Folder Include="Templates\Projects\" />
- <Folder Include="Templates\Projects\Console\" />
<Folder Include="MonoDevelop.DotNetCore.Templating\" />
- <Folder Include="Templates\Projects\Library\" />
- <Folder Include="Templates\Projects\EmptyWeb\" />
<Folder Include="MonoDevelop.DotNetCore.UnitTesting\" />
</ItemGroup>
<ItemGroup>
@@ -159,6 +185,11 @@
<Name>MonoDevelop.UnitTesting</Name>
<Private>False</Private>
</ProjectReference>
+ <ProjectReference Include="..\..\..\external\xwt\Xwt\Xwt.csproj">
+ <Project>{92494904-35FA-4DC9-BDE9-3A3E87AC49D3}</Project>
+ <Name>Xwt</Name>
+ <Private>False</Private>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Properties\MonoDevelop.DotNetCore.addin.xml">
@@ -170,61 +201,40 @@
<InternalsVisibleTo Include="MonoDevelop.DotNetCore.Tests" />
</ItemGroup>
<ItemGroup>
- <None Include="Templates\Projects\Console\ConsoleProject.csproj">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Console\ConsoleProject.xpt.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Console\ConsoleProject.Program.cs.xft.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Console\ConsoleProject.Program.cs">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Library\LibraryProject.csproj">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Library\LibraryProject.MyClass.cs">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Library\LibraryProject.MyClass.cs.xft.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\Library\LibraryProject.xpt.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\EmptyWeb\EmptyWebProject.csproj">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\EmptyWeb\EmptyWebProject.Program.cs">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\EmptyWeb\EmptyWebProject.Program.cs.xft.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\EmptyWeb\EmptyWebProject.xpt.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\EmptyWeb\EmptyWebProject.Startup.cs.xft.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\EmptyWeb\EmptyWebProject.Startup.cs">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
<None Include="packages.config" />
- <None Include="Templates\Projects\XUnitTest\XUnitTestProject.Test.cs.xft.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\XUnitTest\XUnitTestProject.csproj">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\XUnitTest\XUnitTestProject.xpt.xml">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
- <None Include="Templates\Projects\XUnitTest\XUnitTestProject.Test.cs">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
+ <None Include="pull-package.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <Target Name="CompilePullPackage" Inputs="pull-package.cs" Outputs="pull-package.exe">
+ <Csc Sources="pull-package.cs" OutputAssembly="pull-package.exe" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" />
+ </Target>
+ <Target Name="DownloadTemplates" BeforeTargets="Build" DependsOnTargets="CompilePullPackage">
+ <ItemGroup>
+ <NuGetPackage Include="Microsoft.DotNet.Common.ProjectTemplates.1.x">
+ <Url>$(NuGetUrl)Microsoft.DotNet.Common.ProjectTemplates.1.x/$(TemplatesVersion)</Url>
+ <OutputPackage>$(OutputPath)Templates\Microsoft.DotNet.Common.ProjectTemplates.1.x.$(TemplatesVersion).nupkg</OutputPackage>
+ </NuGetPackage>
+ <NuGetPackage Include="Microsoft.DotNet.Common.ProjectTemplates.2.0">
+ <Url>$(NuGetUrl)Microsoft.DotNet.Common.ProjectTemplates.2.0/$(TemplatesVersion)</Url>
+ <OutputPackage>$(OutputPath)Templates\Microsoft.DotNet.Common.ProjectTemplates.2.0.$(TemplatesVersion).nupkg</OutputPackage>
+ </NuGetPackage>
+ <NuGetPackage Include="Microsoft.DotNet.Test.ProjectTemplates.1.x">
+ <Url>$(NuGetUrl)Microsoft.DotNet.Test.ProjectTemplates.1.x/$(TemplatesVersion)</Url>
+ <OutputPackage>$(OutputPath)Templates\Microsoft.DotNet.Test.ProjectTemplates.1.x.$(TemplatesVersion).nupkg</OutputPackage>
+ </NuGetPackage>
+ <NuGetPackage Include="Microsoft.DotNet.Test.ProjectTemplates.2.0">
+ <Url>$(NuGetUrl)Microsoft.DotNet.Test.ProjectTemplates.2.0/$(TemplatesVersion)</Url>
+ <OutputPackage>$(OutputPath)Templates\Microsoft.DotNet.Test.ProjectTemplates.2.0.$(TemplatesVersion).nupkg</OutputPackage>
+ </NuGetPackage>
+ <NuGetPackage Include="Microsoft.DotNet.Web.ProjectTemplates.1.x">
+ <Url>$(NuGetUrl)Microsoft.DotNet.Web.ProjectTemplates.1.x/$(TemplatesVersion)</Url>
+ <OutputPackage>$(OutputPath)Templates\Microsoft.DotNet.Web.ProjectTemplates.1.x.$(TemplatesVersion).nupkg</OutputPackage>
+ </NuGetPackage>
+ <NuGetPackage Include="Microsoft.DotNet.Web.ProjectTemplates.2.0">
+ <Url>$(NuGetUrl)Microsoft.DotNet.Web.ProjectTemplates.2.0/$(TemplatesVersion)</Url>
+ <OutputPackage>$(OutputPath)Templates\Microsoft.DotNet.Web.ProjectTemplates.2.0.$(TemplatesVersion).nupkg</OutputPackage>
+ </NuGetPackage>
+ </ItemGroup>
+ <Exec Command="$(MonoLauncher)$(MSBuildProjectDirectory)\pull-package.exe %(NuGetPackage.Url) %(NuGetPackage.OutputPackage)" Condition="!Exists('%(NuGetPackage.OutputPackage)')" WorkingDirectory="$(MSBuildProjectDirectory)" />
+ </Target>
</Project>
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionCommand.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionCommand.cs
index 19360afff5..f9ab6ffa6f 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionCommand.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionCommand.cs
@@ -45,5 +45,9 @@ namespace MonoDevelop.DotNetCore
public bool PauseConsoleOutput { get; set; }
public bool ExternalConsole { get; set; }
+ public bool LaunchBrowser { get; set; }
+ public string LaunchURL { get; set; }
+ public string ApplicationURL { get; set; }
+ public PipeTransportSettings PipeTransport { get; set; }
}
-}
+} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionHandler.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionHandler.cs
index 0d3b2f54da..b58de1b8b3 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionHandler.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreExecutionHandler.cs
@@ -26,6 +26,12 @@
using MonoDevelop.Core;
using MonoDevelop.Core.Execution;
+using MonoDevelop.Ide;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Net.Sockets;
namespace MonoDevelop.DotNetCore
{
@@ -40,12 +46,60 @@ namespace MonoDevelop.DotNetCore
{
var dotNetCoreCommand = (DotNetCoreExecutionCommand)command;
- return Runtime.ProcessService.StartConsoleProcess (
+ // ApplicationURL is passed to ASP.NET Core server via ASPNETCORE_URLS enviorment variable
+ var envVariables = dotNetCoreCommand.EnvironmentVariables.ToDictionary ((arg) => arg.Key, (arg) => arg.Value);
+ envVariables ["ASPNETCORE_URLS"] = dotNetCoreCommand.ApplicationURL;
+
+ var process = Runtime.ProcessService.StartConsoleProcess (
dotNetCoreCommand.Command,
dotNetCoreCommand.Arguments,
dotNetCoreCommand.WorkingDirectory,
console,
- dotNetCoreCommand.EnvironmentVariables);
+ envVariables);
+ if (dotNetCoreCommand.LaunchBrowser) {
+ LaunchBrowser (dotNetCoreCommand.ApplicationURL, dotNetCoreCommand.LaunchURL, process.Task).Ignore ();
+ }
+ return process;
+ }
+
+ public static async Task LaunchBrowser (string appUrl, string launchUrl, Task processTask)
+ {
+ launchUrl = launchUrl ?? "";
+ Uri launchUri;
+ //Check if lanuchUrl is valid absolute url and use it if it is...
+ if (!Uri.TryCreate (launchUrl, UriKind.Absolute, out launchUri)) {
+ //Otherwise check if appUrl is valid absolute and lanuchUrl is relative then concat them...
+ Uri appUri;
+ if (!Uri.TryCreate (appUrl, UriKind.Absolute, out appUri)) {
+ LoggingService.LogWarning ("Failed to launch browser because invalid launch and app urls.");
+ return;
+ }
+ if (!Uri.TryCreate (launchUrl, UriKind.Relative, out launchUri)) {
+ LoggingService.LogWarning ("Failed to launch browser because invalid launch url.");
+ return;
+ }
+ launchUri = new Uri (appUri, launchUri);
+ }
+
+ //Try to connect every 50ms while process is running
+ while (!processTask.IsCompleted) {
+ await Task.Delay (50);
+ using (var tcpClient = new TcpClient ()) {
+ try {
+ tcpClient.Connect (launchUri.Host, launchUri.Port);
+ break;
+ } catch {
+ }
+ }
+ }
+
+ if (processTask.IsCompleted) {
+ LoggingService.LogDebug ("Failed to launch browser because process exited before server started listening.");
+ return;
+ }
+
+ // Process is still alive hence we succesfully connected inside loop to web server, launch browser
+ DesktopService.ShowUrl (launchUri.AbsoluteUri);
}
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectBuilderMaintainer.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectBuilderMaintainer.cs
index 16b70001ae..6d2e63c70d 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectBuilderMaintainer.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectBuilderMaintainer.cs
@@ -58,7 +58,7 @@ namespace MonoDevelop.DotNetCore
{
foreach (DotNetProject project in GetAllNonDotNetCoreProjects (dotNetCoreProject.ParentSolution)) {
foreach (ProjectReference projectReference in project.References) {
- if (projectReference.ReferenceType == ReferenceType.Project) {
+ if (projectReference.IsProjectReference ()) {
Project resolvedProject = projectReference.ResolveProject (project.ParentSolution);
if (resolvedProject == dotNetCoreProject) {
yield return project;
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs
index f84af7db30..1e5cf06cbc 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectExtension.cs
@@ -132,16 +132,20 @@ namespace MonoDevelop.DotNetCore
DotNetCoreExecutionCommand CreateDotNetCoreExecutionCommand (ConfigurationSelector configSel, DotNetProjectConfiguration configuration, ProjectRunConfiguration runConfiguration)
{
FilePath outputFileName = GetOutputFileName (configuration);
- var assemblyRunConfiguration = runConfiguration as AssemblyRunConfiguration;
+ var dotnetCoreRunConfiguration = runConfiguration as DotNetCoreRunConfiguration;
return new DotNetCoreExecutionCommand (
- assemblyRunConfiguration?.StartWorkingDirectory ?? Project.BaseDirectory,
+ string.IsNullOrEmpty (dotnetCoreRunConfiguration?.StartWorkingDirectory) ? Project.BaseDirectory : dotnetCoreRunConfiguration.StartWorkingDirectory,
outputFileName,
- assemblyRunConfiguration?.StartArguments
+ dotnetCoreRunConfiguration?.StartArguments
) {
- EnvironmentVariables = assemblyRunConfiguration?.EnvironmentVariables,
- PauseConsoleOutput = assemblyRunConfiguration?.PauseConsoleOutput ?? false,
- ExternalConsole = assemblyRunConfiguration?.ExternalConsole ?? false
+ EnvironmentVariables = dotnetCoreRunConfiguration?.EnvironmentVariables,
+ PauseConsoleOutput = dotnetCoreRunConfiguration?.PauseConsoleOutput ?? false,
+ ExternalConsole = dotnetCoreRunConfiguration?.ExternalConsole ?? false,
+ LaunchBrowser = dotnetCoreRunConfiguration?.LaunchBrowser ?? false,
+ LaunchURL = dotnetCoreRunConfiguration?.LaunchUrl,
+ ApplicationURL = dotnetCoreRunConfiguration?.ApplicationURL,
+ PipeTransport = dotnetCoreRunConfiguration?.PipeTransport
};
}
@@ -351,6 +355,10 @@ namespace MonoDevelop.DotNetCore
get { return dotNetCoreMSBuildProject.HasSdk; }
}
+ public bool IsWeb {
+ get { return (dotNetCoreMSBuildProject.Sdk?.IndexOf ("Microsoft.NET.Sdk.Web", System.StringComparison.OrdinalIgnoreCase) ?? -1) != -1; }
+ }
+
protected override void OnPrepareForEvaluation (MSBuildProject project)
{
base.OnPrepareForEvaluation (project);
@@ -474,10 +482,30 @@ namespace MonoDevelop.DotNetCore
internal IEnumerable<TargetFramework> GetSupportedTargetFrameworks ()
{
- var supportedTargetFrameworks = new DotNetCoreProjectSupportedTargetFrameworks (Project.TargetFramework);
+ var supportedTargetFrameworks = new DotNetCoreProjectSupportedTargetFrameworks (Project);
return supportedTargetFrameworks.GetFrameworks ();
}
+ /// <summary>
+ /// Handle a new project being created and added to a new solution. In this case
+ /// the NuGet packages should be restored. Need to avoid running a restore when
+ /// a solution is being opened so check that project's parent solution is open in
+ /// the IDE.
+ /// </summary>
+ protected override void OnBoundToSolution ()
+ {
+ base.OnBoundToSolution ();
+
+ if (Project.Loading)
+ return;
+
+ if (IdeApp.ProjectOperations.CurrentSelectedSolution != Project.ParentSolution)
+ return;
+
+ if (ProjectNeedsRestore ())
+ RestorePackagesInProjectHandler.Run (Project);
+ }
+
internal bool RestoreAfterSave { get; set; }
protected override Task OnSave (ProgressMonitor monitor)
@@ -513,5 +541,10 @@ namespace MonoDevelop.DotNetCore
});
});
}
+
+ protected override ProjectRunConfiguration OnCreateRunConfiguration (string name)
+ {
+ return new DotNetCoreRunConfiguration (name);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs
index edf4ce4cef..e4b14dc9ee 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreProjectSupportedTargetFrameworks.cs
@@ -27,6 +27,7 @@
using System.Collections.Generic;
using MonoDevelop.Core;
using MonoDevelop.Core.Assemblies;
+using MonoDevelop.Projects;
namespace MonoDevelop.DotNetCore
{
@@ -35,11 +36,13 @@ namespace MonoDevelop.DotNetCore
const int HighestNetStandard1xMinorVersionSupported = 6;
const int HighestNetCoreApp1xMinorVersionSupported = 1;
+ DotNetProject project;
TargetFramework framework;
- public DotNetCoreProjectSupportedTargetFrameworks (TargetFramework framework)
+ public DotNetCoreProjectSupportedTargetFrameworks (DotNetProject project)
{
- this.framework = framework;
+ this.project = project;
+ framework = project.TargetFramework;
}
public IEnumerable<TargetFramework> GetFrameworks ()
@@ -48,6 +51,8 @@ namespace MonoDevelop.DotNetCore
return GetNetStandardTargetFrameworks ();
} else if (framework.IsNetCoreApp ()) {
return GetNetCoreAppTargetFrameworks ();
+ } else if (framework.IsNetFramework ()) {
+ return GetNetFrameworkTargetFrameworks ();
}
return new TargetFramework [0];
@@ -71,5 +76,15 @@ namespace MonoDevelop.DotNetCore
{
return GetTargetFrameworksVersion1x (".NETCoreApp", HighestNetCoreApp1xMinorVersionSupported);
}
+
+ IEnumerable<TargetFramework> GetNetFrameworkTargetFrameworks ()
+ {
+ foreach (var targetFramework in Runtime.SystemAssemblyService.GetTargetFrameworks ()) {
+ if (!targetFramework.Hidden &&
+ targetFramework.IsNetFramework () &&
+ project.TargetRuntime.IsInstalled (targetFramework))
+ yield return targetFramework;
+ }
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfiguration.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfiguration.cs
new file mode 100644
index 0000000000..ff3118f41d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfiguration.cs
@@ -0,0 +1,107 @@
+//
+// DotNetCoreRunConfiguration.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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.Net;
+using MonoDevelop.Core.Serialization;
+using MonoDevelop.Projects;
+using System.Net.Sockets;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace MonoDevelop.DotNetCore
+{
+ public class DotNetCoreRunConfiguration : AssemblyRunConfiguration
+ {
+ public DotNetCoreRunConfiguration (string name)
+ : base (name)
+ {
+ }
+
+ protected override void Initialize (Project project)
+ {
+ base.Initialize (project);
+ if (project.GetFlavor<DotNetCoreProjectExtension> ()?.IsWeb ?? false && string.IsNullOrEmpty (ApplicationURL)) {
+ var tcpListner = new TcpListener (IPAddress.Loopback, 0);
+ tcpListner.Start ();
+ ApplicationURL = $"http://localhost:{((IPEndPoint)tcpListner.LocalEndpoint).Port}";
+ tcpListner.Stop ();
+ }
+ }
+
+ [ItemProperty (DefaultValue = true)]
+ public bool LaunchBrowser { get; set; } = true;
+
+ [ItemProperty (DefaultValue = null)]
+ public string LaunchUrl { get; set; }
+
+ [ItemProperty (DefaultValue = null)]
+ public string ApplicationURL { get; set; }
+
+ [ItemProperty (DefaultValue = null)]
+ public PipeTransportSettings PipeTransport { get; set; }
+
+ protected override void OnCopyFrom (ProjectRunConfiguration config, bool isRename)
+ {
+ base.OnCopyFrom (config, isRename);
+
+ var other = (DotNetCoreRunConfiguration)config;
+
+ LaunchBrowser = other.LaunchBrowser;
+ LaunchUrl = other.LaunchUrl;
+ ApplicationURL = other.ApplicationURL;
+ if (other.PipeTransport == null)
+ PipeTransport = null;
+ else
+ PipeTransport = new PipeTransportSettings (other.PipeTransport);
+ }
+ }
+
+ public class PipeTransportSettings
+ {
+ public PipeTransportSettings ()
+ { }
+
+ public PipeTransportSettings (PipeTransportSettings copy)
+ {
+ WorkingDirectory = copy.WorkingDirectory;
+ Program = copy.Program;
+ Arguments = copy.Arguments.ToArray ();//make copy of array
+ DebuggerPath = copy.DebuggerPath;
+ EnvironmentVariables = new EnvironmentVariableCollection (copy.EnvironmentVariables);
+ }
+
+ [ItemProperty (DefaultValue = null)]
+ public string WorkingDirectory { get; set; }
+ [ItemProperty (DefaultValue = null)]
+ public string Program { get; set; }
+ [ItemProperty (SkipEmpty = true)]
+ public string [] Arguments { get; set; } = new string [0];
+ [ItemProperty (DefaultValue = null)]
+ public string DebuggerPath { get; set; }
+ [ItemProperty (SkipEmpty = true, WrapObject = false)]
+ public EnvironmentVariableCollection EnvironmentVariables { get; private set; } = new EnvironmentVariableCollection ();
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfigurationEditor.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfigurationEditor.cs
new file mode 100644
index 0000000000..63bee530eb
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreRunConfigurationEditor.cs
@@ -0,0 +1,166 @@
+//
+// DotNetCoreRunConfigurationEditor.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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 MonoDevelop.Components;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Execution;
+using MonoDevelop.Ide.Projects.OptionPanels;
+using MonoDevelop.Projects;
+using Xwt;
+using Xwt.Drawing;
+
+namespace MonoDevelop.DotNetCore
+{
+ class DotNetCoreRunConfigurationEditor : RunConfigurationEditor
+ {
+ DotNetCoreRunConfigurationEditorWidget widget;
+
+ public DotNetCoreRunConfigurationEditor ()
+ {
+ widget = new DotNetCoreRunConfigurationEditorWidget ();
+ }
+
+ public override Control CreateControl ()
+ {
+ return new XwtControl (widget);
+ }
+
+ public override void Load (Project project, SolutionItemRunConfiguration config)
+ {
+ widget.LoadCore (project, (DotNetCoreRunConfiguration)config);
+ widget.Changed += (sender, e) => NotifyChanged ();
+ }
+
+ public override void Save ()
+ {
+ widget.SaveCore ();
+ }
+
+ public override bool Validate ()
+ {
+ return widget.ValidateCore ();
+ }
+ }
+
+ class DotNetCoreRunConfigurationEditorWidget : DotNetRunConfigurationEditorWidget
+ {
+ DotNetCoreRunConfiguration config;
+ CheckBox launchBrowser;
+ TextEntry launchUrl;
+ TextEntry applicationUrl;
+ XwtBoxTooltip applicationUrlWarningTooltip;
+
+ public DotNetCoreRunConfigurationEditorWidget ()
+ : base (false)
+ {
+
+ }
+
+ public void LoadCore (Project project, DotNetCoreRunConfiguration config)
+ {
+ this.config = config;
+ base.Load (project, config);
+ var coreProject = project.GetFlavor<DotNetCoreProjectExtension> ();
+ if (coreProject == null || !coreProject.IsWeb)
+ return;
+ var mainBox = new VBox ();
+ mainBox.Margin = 24;
+
+ var appUrlTable = new Table ();
+ appUrlTable.Add (new Label (GettextCatalog.GetString ("App URL:")), 0, 0);
+ var applicationUrlBox = new HBox ();
+ applicationUrlWarningTooltip = new XwtBoxTooltip (new Xwt.ImageView (ImageService.GetIcon (Ide.Gui.Stock.Warning, Gtk.IconSize.Menu))) {
+ ToolTip = GettextCatalog.GetString ("Invalid URL"),
+ Severity = Ide.Tasks.TaskSeverity.Warning
+ };
+ applicationUrlBox.PackStart (applicationUrl = new TextEntry (), true, true);
+ applicationUrlBox.PackStart (applicationUrlWarningTooltip);
+ appUrlTable.Add (applicationUrlBox, 1, 0, hexpand: true);
+ appUrlTable.Add (new Label (GettextCatalog.GetString ("Where your app should listen for connections")) { Sensitive = false }, 1, 1, hexpand: true);
+ mainBox.PackStart (appUrlTable);
+
+ mainBox.PackStart (launchBrowser = new CheckBox (GettextCatalog.GetString ("Open URL in web browser when app starts:")), marginTop: 16);
+
+ var browserTable = new Table ();
+ browserTable.MarginLeft = 16;
+ var offset = 0;
+ //offset = 1; // just so uncommenting Browser Combobox works as expected
+ //browserTable.Add (new Label (GettextCatalog.GetString ("Web Browser:")), 0, 0, hpos: WidgetPlacement.End);
+ //var browsersCombobox = new ComboBox ();
+ //browsersCombobox.Items.Add ("Chrome");
+ //browsersCombobox.Items.Add ("Firefox");
+ //browsersCombobox.Items.Add ("Opera");
+ //browsersCombobox.Items.Add ("Safari");
+ //browserTable.Add (browsersCombobox, 1, 0, hpos: WidgetPlacement.Start);
+ browserTable.Add (launchUrl = new TextEntry (), 1, offset, hexpand: true);
+ browserTable.Add (new Label (GettextCatalog.GetString ("URL:")), 0, offset, hpos: WidgetPlacement.End);
+ browserTable.Add (new Label (GettextCatalog.GetString ("Absolute or relative to App URL")) { Sensitive = false }, 1, offset + 1);
+ mainBox.PackStart (browserTable);
+
+ Add (mainBox, GettextCatalog.GetString ("ASP.NET Core"));
+
+ launchBrowser.Active = config.LaunchBrowser;
+ launchUrl.Text = config.LaunchUrl;
+ applicationUrl.Text = config.ApplicationURL;
+
+ UpdateUI ();
+
+ launchBrowser.Toggled += delegate { NotifyChanged (); UpdateUI (); };
+ launchUrl.Changed += delegate { NotifyChanged (); };
+ applicationUrl.Changed += delegate { NotifyChanged (); UpdateUI (); };
+ }
+
+ void UpdateUI ()
+ {
+ launchUrl.Sensitive = launchBrowser.Active;
+ applicationUrlWarningTooltip.Visible = !IsValidUrl (applicationUrl.Text);
+ }
+
+ bool IsValidUrl (string url)
+ {
+ Uri dummy;
+ return Uri.TryCreate (url, UriKind.Absolute, out dummy);
+ }
+
+ public void SaveCore ()
+ {
+ base.Save ();
+ if (applicationUrl != null) {//applicationUrl != null means it's web project, hence set values
+ config.LaunchBrowser = launchBrowser.Active;
+ config.LaunchUrl = launchUrl.Text;
+ config.ApplicationURL = applicationUrl.Text;
+ }
+ }
+
+ public bool ValidateCore ()
+ {
+ if (!base.Validate ())
+ return false;
+ return applicationUrl == null || IsValidUrl (applicationUrl.Text);//applicationUrl == null means it's not web project, hence it's valid config
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetMigrate.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetMigrate.cs
new file mode 100644
index 0000000000..b12e4d22d9
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetMigrate.cs
@@ -0,0 +1,196 @@
+//
+// DotNetMigrate.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using MonoDevelop.Components.Commands;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Ide.Projects;
+using MonoDevelop.PackageManagement.Commands;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.DotNetCore
+{
+ // Put better message on .xproj projects to explain user what can be done
+ class ProjXNodeBuilderExtension : NodeBuilderExtension
+ {
+ public override bool CanBuildNode (Type dataType)
+ {
+ return typeof (UnknownProject).IsAssignableFrom (dataType);
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ if (!DotNetMigrateCommandHandler.IsMigratableProject (dataObject as UnknownProject))
+ return;
+
+ nodeInfo.StatusMessage = GettextCatalog.GetString ("Project format is not supported by {0}.\nUse 'Migrate to New Format' command on solution or single project to migrate to format supported by {0}.", BrandingService.ApplicationName);
+ }
+ }
+
+ class DotNetMigrateCommandHandler : CommandHandler
+ {
+ public static bool IsMigratableProject (UnknownProject project)
+ {
+ if (project == null)
+ return false;
+ if (!project.FileName.HasExtension (".xproj"))
+ return false;
+ return File.Exists (Path.Combine (Path.GetDirectoryName (project.FileName), "project.json"));
+ }
+
+ async Task<bool> Migrate (UnknownProject project, Solution solution, ProgressMonitor monitor)
+ {
+ FilePath projectFile;
+ string migrationFile;
+ if (project == null) {
+ migrationFile = solution.FileName;
+ } else {
+ projectFile = project.FileName;
+ migrationFile = Path.Combine (Path.GetDirectoryName (projectFile), "project.json");
+ }
+ var dotnetPath = new DotNetCorePath ();
+ if (dotnetPath.IsMissing) {
+ monitor.ReportError (GettextCatalog.GetString (".NET Core is not installed"));
+ return false;
+ }
+
+ var process = Runtime.ProcessService.StartProcess (
+ dotnetPath.FileName,
+ $"migrate \"{migrationFile}\"",
+ Path.GetDirectoryName (migrationFile),
+ monitor.Log,
+ monitor.Log,
+ null);
+
+ await process.Task;
+
+ if (process.ExitCode > 0) {
+ monitor.ReportError (GettextCatalog.GetString ("An unspecified error occurred while running '{0}'", $"dotnet migrate({process.ExitCode})"));
+ return false;
+ }
+
+ if (project != null) {
+ string newProjectFile;
+ if (File.Exists (Path.ChangeExtension (projectFile, ".csproj")))
+ newProjectFile = Path.ChangeExtension (projectFile, ".csproj");
+ else if (File.Exists (Path.ChangeExtension (projectFile, ".fsproj")))
+ newProjectFile = Path.ChangeExtension (projectFile, ".fsproj");
+ else if (File.Exists (Path.ChangeExtension (projectFile, ".vbproj")))
+ newProjectFile = Path.ChangeExtension (projectFile, ".vbproj");
+ else {
+ monitor.ReportError (GettextCatalog.GetString ("Migrated project file not found."));
+ return false;
+ }
+ var newProject = await project.ParentFolder.AddItem (monitor, newProjectFile);
+ project.ParentFolder.Items.Remove (project);
+ await newProject.ParentSolution.SaveAsync (monitor);
+
+ RestorePackagesInProjectHandler.Run ((DotNetProject)newProject);
+ } else {
+ solution.NeedsReload = true;
+ FileService.NotifyFileChanged (solution.FileName);
+ }
+ return true;
+ }
+
+ protected override async void Run (object dataItem)
+ {
+ var project = IdeApp.ProjectOperations.CurrentSelectedProject as UnknownProject;
+ var solution = IdeApp.ProjectOperations.CurrentSelectedSolution;
+ UnknownProject [] selectedProjects = null;
+ bool wholeSolution = false;
+ if (project == null) {
+ // ContextMenu on Solution
+ var dlg = new ProjectSelectorDialog ();
+ try {
+ dlg.Title = GettextCatalog.GetString ("Select projects to migrate");
+ dlg.RootItem = solution;
+ dlg.AllowEmptySelection = false;
+ dlg.SelectableFilter = (arg) => IsMigratableProject (arg as UnknownProject);
+ dlg.SelectedItem = IdeApp.ProjectOperations.CurrentSelectedObject;
+ dlg.SelectableItemTypes = new Type [] { typeof (UnknownProject) };
+ dlg.ActiveItems = solution.GetAllProjects ().OfType<UnknownProject> ().Where (p => p.FileName.HasExtension (".xproj"));
+ dlg.ShowCheckboxes = true;
+ if (MessageService.RunCustomDialog (dlg, IdeApp.Workbench.RootWindow) == (int)Gtk.ResponseType.Ok) {
+ if (dlg.ActiveItems.SequenceEqual (solution.GetAllProjects ().OfType<UnknownProject> ().Where (p => p.FileName.HasExtension (".xproj"))))
+ wholeSolution = true;
+ else
+ selectedProjects = dlg.ActiveItems.OfType<UnknownProject> ().ToArray ();
+ } else {
+ return;
+ }
+ } finally {
+ dlg.Destroy ();
+ dlg.Dispose ();
+ }
+ } else {
+ selectedProjects = new UnknownProject [] { project };
+ }
+ using (var monitor = CreateOutputProgressMonitor ()) {
+ try {
+ monitor.BeginTask (GettextCatalog.GetString ("Migrating…"), 1);
+ if (wholeSolution) {
+ if (!await Migrate (null, solution, monitor))
+ return;
+ } else {
+ foreach (var proj in selectedProjects)
+ if (!await Migrate (proj, solution, monitor))
+ return;
+ }
+ monitor.ReportSuccess (GettextCatalog.GetString ("Successfully migrated"));
+ } catch (Exception e) {
+ monitor.ReportError (GettextCatalog.GetString ("Failed to migrate") + Environment.NewLine + e);
+ }
+ }
+ }
+
+ ProgressMonitor CreateOutputProgressMonitor ()
+ {
+ return IdeApp.Workbench.ProgressMonitors.GetOutputProgressMonitor (
+ "DotNetCoreMigration",
+ GettextCatalog.GetString (".NET Core Migration"),
+ Stock.PadExecute,
+ true,
+ true);
+ }
+
+ protected override void Update (CommandInfo info)
+ {
+ if (IsMigratableProject (IdeApp.ProjectOperations.CurrentSelectedProject as UnknownProject))
+ info.Visible = true;
+ else if (IdeApp.ProjectOperations.CurrentSelectedSolution?.GetAllProjects ().OfType<UnknownProject> ().Any (p => IsMigratableProject (p)) ?? false)
+ info.Visible = true;
+ else
+ info.Visible = false;
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreServices.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/ProjectReferenceExtensions.cs
index cc4058c658..ba27b8ff7f 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/DotNetCoreServices.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/ProjectReferenceExtensions.cs
@@ -1,10 +1,10 @@
//
-// DotNetCoreServices.cs
+// ProjectReferenceExtensions.cs
//
// Author:
// Matt Ward <matt.ward@xamarin.com>
//
-// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+// Copyright (c) 2017 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
@@ -23,18 +23,21 @@
// 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 MonoDevelop.Core;
+
+using MonoDevelop.Projects;
namespace MonoDevelop.DotNetCore
{
- class DotNetCoreServices
+ static class ProjectReferenceExtensions
{
- static readonly DotNetCoreProjectFileRenamedHandler projectFileRenamedHandler =
- new DotNetCoreProjectFileRenamedHandler ();
+ public static bool IsProjectReference (this ProjectReference reference)
+ {
+ return reference.ReferenceType == ReferenceType.Project;
+ }
- public static void Initialize ()
+ public static bool IsAssemblyReference (this ProjectReference reference)
{
- // Do nothing.
+ return reference.ReferenceType == ReferenceType.Assembly;
}
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkExtensions.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkExtensions.cs
index b2d3199969..2415245fc2 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkExtensions.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkExtensions.cs
@@ -38,5 +38,10 @@ namespace MonoDevelop.DotNetCore
{
return framework.Id.Identifier == ".NETCoreApp";
}
+
+ public static bool IsNetFramework (this TargetFramework framework)
+ {
+ return framework.Id.IsNetFramework ();
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkMonikerExtensions.cs b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkMonikerExtensions.cs
index ced06a7ec5..3cd0bdd459 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkMonikerExtensions.cs
+++ b/main/src/addins/MonoDevelop.DotNetCore/MonoDevelop.DotNetCore/TargetFrameworkMonikerExtensions.cs
@@ -32,6 +32,9 @@ namespace MonoDevelop.DotNetCore
{
public static string GetShortFrameworkName (this TargetFrameworkMoniker framework)
{
+ if (framework.IsNetFramework ())
+ return GetShortNetFrameworkName (framework);
+
string identifier = GetShortFrameworkIdentifier (framework);
return identifier + framework.Version;
}
@@ -48,5 +51,15 @@ namespace MonoDevelop.DotNetCore
return shortFrameworkIdentifier.ToLower ();
}
+
+ static string GetShortNetFrameworkName (TargetFrameworkMoniker framework)
+ {
+ return "net" + framework.Version.Replace (".", string.Empty);
+ }
+
+ public static bool IsNetFramework (this TargetFrameworkMoniker framework)
+ {
+ return framework.Identifier == ".NETFramework";
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Properties/MonoDevelop.DotNetCore.addin.xml b/main/src/addins/MonoDevelop.DotNetCore/Properties/MonoDevelop.DotNetCore.addin.xml
index 6be9fdd51f..8be018a75e 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/Properties/MonoDevelop.DotNetCore.addin.xml
+++ b/main/src/addins/MonoDevelop.DotNetCore/Properties/MonoDevelop.DotNetCore.addin.xml
@@ -18,19 +18,79 @@
</Category>
</Extension>
- <Extension path="/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate
- id="DotNetCoreConsoleProject"
- file="Templates/Projects/Console/ConsoleProject.xpt.xml" />
- <ProjectTemplate
- id="DotNetCoreLibraryProject"
- file="Templates/Projects/Library/LibraryProject.xpt.xml" />
- <ProjectTemplate
- id="DotNetCoreEmptyWebProject"
- file="Templates/Projects/EmptyWeb/EmptyWebProject.xpt.xml" />
- <ProjectTemplate
- id="DotNetCoreEmptyWebProject"
- file="Templates/Projects/XUnitTest/XUnitTestProject.xpt.xml" />
+ <Extension path="/MonoDevelop/Ide/Templates">
+ <Template
+ id="Microsoft.Common.Console.CSharp"
+ _overrideDescription="Creates a new .NET Core console project."
+ path="Templates/Microsoft.DotNet.Common.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-console-project"
+ imageId="md-console-project"
+ category="netcore/app/general"/>
+ <Template
+ id="Microsoft.Common.Console.FSharp"
+ _overrideDescription="Creates a new .NET Core console project."
+ path="Templates/Microsoft.DotNet.Common.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-console-project"
+ imageId="md-console-project"
+ category="netcore/app/general"/>
+ <Template
+ _overrideName=".NET Standard Library"
+ _overrideDescription="Creates a new .NET Standard class library project."
+ id="Microsoft.Common.Library.CSharp"
+ path="Templates/Microsoft.DotNet.Common.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-library-project"
+ imageId="md-library-project"
+ category="multiplat/library/general" />
+ <Template
+ _overrideName=".NET Standard Library"
+ _overrideDescription="Creates a new .NET Standard class library project."
+ id="Microsoft.Common.Library.FSharp"
+ path="Templates/Microsoft.DotNet.Common.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-library-project"
+ imageId="md-library-project"
+ category="multiplat/library/general" />
+ <Template
+ id="Microsoft.Test.xUnit.CSharp"
+ _overrideDescription="Creates a new xUnit test project."
+ path="Templates/Microsoft.DotNet.Test.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-test-project"
+ imageId="md-test-project"
+ category="netcore/test/general" />
+ <Template
+ id="Microsoft.Test.xUnit.FSharp"
+ _overrideDescription="Creates a new xUnit test project."
+ path="Templates/Microsoft.DotNet.Test.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-test-project"
+ imageId="md-test-project"
+ category="netcore/test/general" />
+ <Template
+ id="Microsoft.Web.Empty.CSharp"
+ _overrideDescription="Creates a new ASP.NET Core web project."
+ path="Templates/Microsoft.DotNet.Web.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-aspnet-empty-project"
+ imageId="md-aspnet-empty-project"
+ category="netcore/app/aspnet" />
+ <Template
+ id="Microsoft.Web.Mvc.CSharp"
+ _overrideDescription="Creates a new ASP.NET MVC Core web project."
+ path="Templates/Microsoft.DotNet.Web.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-aspnet-empty-project"
+ imageId="md-aspnet-empty-project"
+ category="netcore/app/aspnet" />
+ <Template
+ id="Microsoft.Web.Mvc.FSharp"
+ _overrideDescription="Creates a new ASP.NET MVC Core web project."
+ path="Templates/Microsoft.DotNet.Web.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-aspnet-empty-project"
+ imageId="md-aspnet-empty-project"
+ category="netcore/app/aspnet" />
+ <Template
+ id="Microsoft.Web.WebApi.CSharp"
+ _overrideDescription="Creates a new ASP.NET Web API Core web project."
+ path="Templates/Microsoft.DotNet.Web.ProjectTemplates.1.x.1.0.0-beta1-20170216-123.nupkg"
+ icon="md-aspnet-empty-project"
+ imageId="md-aspnet-empty-project"
+ category="netcore/app/aspnet" />
</Extension>
<Extension path="/MonoDevelop/Ide/ProjectTemplateWizards">
@@ -38,7 +98,9 @@
</Extension>
<Extension path="/MonoDevelop/Ide/Pads/ProjectPad">
- <NodeBuilder class="MonoDevelop.DotNetCore.DotNetCoreFolderNodeBuilderExtension" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.DotNetCoreFolderNodeBuilderExtension" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.DotNetCoreProjectNodeBuilderExtension" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.ProjXNodeBuilderExtension" />
</Extension>
<Extension path="/MonoDevelop/ProjectModel/WorkspaceObjectReaders">
@@ -49,8 +111,13 @@
<Class id="DnxTestProvider" class="MonoDevelop.DotNetCore.UnitTesting.DotNetCoreTestProvider" />
</Extension>
- <Extension path="/MonoDevelop/Ide/Pads/ProjectPad">
- <NodeBuilder class="MonoDevelop.DotNetCore.DotNetCoreProjectNodeBuilderExtension" />
+ <ExtensionPoint path="/MonoDevelop/DotNetCore/ContextMenu/ProjectPad/PackageDependency">
+ <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/>
+ </ExtensionPoint>
+
+ <Extension path="/MonoDevelop/DotNetCore/ContextMenu/ProjectPad/PackageDependency">
+ <CommandItem id="MonoDevelop.PackageManagement.Commands.PackageReferenceNodeCommands.UpdatePackage" />
+ <CommandItem id="MonoDevelop.Ide.Commands.EditCommands.Delete" />
</Extension>
<Extension path="/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build/General">
@@ -67,4 +134,68 @@
class="MonoDevelop.DotNetCore.DummyMSBuildOptionsPanel" />
</Condition>
</Extension>
+
+ <Extension path = "/MonoDevelop/Ide/Commands">
+ <Command id = "MonoDevelop.DotNetCore.Commands.DotNetMigrate"
+ defaultHandler = "MonoDevelop.DotNetCore.DotNetMigrateCommandHandler"
+ _label = "Migrate to New Format"
+ description="Migrates old .NET Core project to new format"/>
+ </Extension>
+
+ <Extension path="/MonoDevelop/Ide/ContextMenu/ProjectPad">
+ <Condition
+ id="ItemType"
+ value="MonoDevelop.DotNetCore.NodeBuilders.DependenciesNode">
+ <CommandItem
+ id="MonoDevelop.Ide.Commands.ProjectCommands.AddReference" />
+ <SeparatorItem
+ id="DependenciesEditReferenceSeparator" />
+ <CommandItem
+ id="MonoDevelop.PackageManagement.Commands.AddPackages" _label = "Add _Packages..." />
+ <CommandItem
+ id="MonoDevelop.PackageManagement.Commands.UpdateAllPackagesInProject" />
+ <CommandItem
+ id="MonoDevelop.PackageManagement.Commands.Restore" />
+ </Condition>
+ <Condition id="ItemType" value="MonoDevelop.DotNetCore.NodeBuilders.PackageDependenciesNode">
+ <CommandItem
+ id="MonoDevelop.PackageManagement.Commands.AddPackages" _label = "Add _Packages..." />
+ <CommandItem
+ id="MonoDevelop.PackageManagement.Commands.UpdateAllPackagesInProject" />
+ <CommandItem
+ id="MonoDevelop.PackageManagement.Commands.Restore" />
+ </Condition>
+ <Condition
+ id="ItemType"
+ value="MonoDevelop.DotNetCore.NodeBuilders.AssemblyDependenciesNode|MonoDevelop.DotNetCore.NodeBuilders.ProjectDependenciesNode">
+ <CommandItem
+ id="MonoDevelop.Ide.Commands.ProjectCommands.AddReference"
+ insertbefore="MonoDevelop.PackageManagement.Commands.AddPackages" />
+ </Condition>
+ <Condition id="ItemType" value="UnknownProject|Solution">
+ <CommandItem
+ id="MonoDevelop.DotNetCore.Commands.DotNetMigrate"
+ insertbefore="MonoDevelop.Ide.Commands.ProjectCommands.Build" />
+ <SeparatorItem
+ id="DotNetMigrateSeparator"
+ insertafter="MonoDevelop.DotNetCore.Commands.DotNetMigrate"
+ insertbefore="MonoDevelop.Ide.Commands.ProjectCommands.Build" />
+ </Condition>
+ </Extension>
+
+ <Extension path="/MonoDevelop/Ide/Pads/ProjectPad">
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.DependenciesNodeBuilderExtension" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.DependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.PackageDependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.TargetFrameworkNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.PackageDependencyNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.ProjectDependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.AssemblyDependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.SdkDependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.DotNetCore.NodeBuilders.DotNetCoreProjectReferencesNodeBuilderExtension" />
+ </Extension>
+
+ <Extension path = "/MonoDevelop/Ide/RunConfigurationEditors">
+ <Class class="MonoDevelop.DotNetCore.DotNetCoreRunConfigurationEditor" runConfigurationType="MonoDevelop.DotNetCore.DotNetCoreRunConfiguration" />
+ </Extension>
</ExtensionModel> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs
deleted file mode 100755
index c81448f540..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System;
-
-class Program
-{
- static void Main(string[] args)
- {
- Console.WriteLine("Hello World!");
- }
-}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs.xft.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs.xft.xml
deleted file mode 100644
index f48622775d..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.Program.cs.xft.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="2015/09/22"
- lastModified="2015/09/22">
-
- <TemplateConfiguration>
- <_Name>Console Program.cs</_Name>
- </TemplateConfiguration>
-
- <TemplateFiles>
- <File
- name="Program.cs"
- DefaultName="Program.cs"
- src="ConsoleProject.Program.cs"
- BuildAction="Compile"
- AddStandardHeader="True" />
- </TemplateFiles>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.csproj b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.csproj
deleted file mode 100644
index 5e1611f89d..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.csproj
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
- <PropertyGroup>
- <OutputType>Exe</OutputType>
- <TargetFramework>netcoreapp1.0</TargetFramework>
- </PropertyGroup>
-
-</Project>
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.xpt.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.xpt.xml
deleted file mode 100644
index 6b34e03785..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Console/ConsoleProject.xpt.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="06/09/2015"
- lastModified="31/10/2016">
-
- <TemplateConfiguration>
- <_Name>Console Application (.NET Core)</_Name>
- <Category>netcore/app/general</Category>
- <Icon>md-console-project</Icon>
- <Image id="md-console-project" />
- <LanguageName>C#</LanguageName>
- <_Description>Creates a new .NET Core console project.</_Description>
- <DefaultFilename>ConsoleProject</DefaultFilename>
- <Wizard>MonoDevelop.DotNetCore.ProjectTemplateWizard</Wizard>
- <DefaultParameters>Template=ConsoleProject;OpenFile=Program.cs;Files=Program.cs;ExternalConsole=true</DefaultParameters>
- </TemplateConfiguration>
-
- <Combine name="${ProjectName}" directory=".">
- <Project name="${ProjectName}" type="C#" directory="./" if="CreateDotNetCoreProject">
- </Project>
- </Combine>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs
deleted file mode 100755
index 9046074545..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Hosting;
-
-namespace ${Namespace}
-{
- public class Program
- {
- public static void Main(string[] args)
- {
- var host = new WebHostBuilder()
- .UseKestrel()
- .UseContentRoot(Directory.GetCurrentDirectory())
- .UseIISIntegration()
- .UseStartup<Startup>()
- .Build();
-
- host.Run();
- }
- }
-} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs.xft.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs.xft.xml
deleted file mode 100644
index 4bb9067fc2..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Program.cs.xft.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="2015/09/22"
- lastModified="2015/09/22">
-
- <TemplateConfiguration>
- <_Name>Empty web Program.cs</_Name>
- </TemplateConfiguration>
-
- <TemplateFiles>
- <File
- name="Program.cs"
- DefaultName="Program.cs"
- src="EmptyWebProject.Program.cs"
- BuildAction="Compile"
- AddStandardHeader="True" />
- </TemplateFiles>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs
deleted file mode 100755
index 857cd56db1..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.AspNetCore.Http;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Logging;
-
-namespace ${Namespace}
-{
- public class Startup
- {
- // This method gets called by the runtime. Use this method to add services to the container.
- // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
- public void ConfigureServices(IServiceCollection services)
- {
- }
-
- // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
- {
- loggerFactory.AddConsole();
-
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.Run(async (context) =>
- {
- await context.Response.WriteAsync("Hello World!");
- });
- }
- }
-} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs.xft.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs.xft.xml
deleted file mode 100644
index 4bfb057a29..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.Startup.cs.xft.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="2015/09/22"
- lastModified="2015/09/22">
-
- <TemplateConfiguration>
- <_Name>Empty web Startup.cs</_Name>
- </TemplateConfiguration>
-
- <TemplateFiles>
- <File
- name="Startup.cs"
- DefaultName="Startup.cs"
- src="EmptyWebProject.Startup.cs"
- BuildAction="Compile"
- AddStandardHeader="True" />
- </TemplateFiles>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.csproj b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.csproj
deleted file mode 100644
index f71ef36b61..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.csproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk.Web">
-
- <PropertyGroup>
- <TargetFramework>netcoreapp1.0</TargetFramework>
- </PropertyGroup>
-
- <ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore" Version="1.0.3" />
- </ItemGroup>
-
-</Project>
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.xpt.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.xpt.xml
deleted file mode 100644
index 35b5311939..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/EmptyWeb/EmptyWebProject.xpt.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="06/09/2015"
- lastModified="31/10/2016">
-
- <TemplateConfiguration>
- <_Name>ASP.NET Core Empty Web Application</_Name>
- <Category>netcore/app/aspnet</Category>
- <Icon>md-aspnet-empty-project</Icon>
- <Image id="md-aspnet-empty-project" />
- <LanguageName>C#</LanguageName>
- <_Description>Creates a new ASP.NET Core web project.</_Description>
- <DefaultFilename>WebApp</DefaultFilename>
- <Wizard>MonoDevelop.DotNetCore.ProjectTemplateWizard</Wizard>
- <DefaultParameters>Template=EmptyWebProject;CreateWebRoot=true;OpenFile=Startup.cs;Files=Startup.cs|Program.cs</DefaultParameters>
- </TemplateConfiguration>
-
- <Combine name="${ProjectName}" directory=".">
- <Project name="${ProjectName}" type="C#" directory="./src" if="CreateDotNetCoreProject">
- </Project>
- </Combine>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs
deleted file mode 100755
index fc20e2f546..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System;
-
-namespace ${Namespace}
-{
- public class MyClass
- {
- public MyClass()
- {
- }
- }
-}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs.xft.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs.xft.xml
deleted file mode 100644
index 3f7e462005..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.MyClass.cs.xft.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="2015/09/13"
- lastModified="2015/09/13">
-
- <TemplateConfiguration>
- <_Name>Library MyClass.cs</_Name>
- </TemplateConfiguration>
-
- <TemplateFiles>
- <File
- name="MyClass.cs"
- DefaultName="MyClass.cs"
- src="LibraryProject.MyClass.cs"
- BuildAction="Compile"
- AddStandardHeader="True" />
- </TemplateFiles>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.csproj b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.csproj
deleted file mode 100644
index 20861435dc..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.csproj
+++ /dev/null
@@ -1,7 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
- <PropertyGroup>
- <TargetFramework>netstandard1.4</TargetFramework>
- </PropertyGroup>
-
-</Project>
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.xpt.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.xpt.xml
deleted file mode 100644
index 529ca1fd7c..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/Library/LibraryProject.xpt.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="12/09/2015"
- lastModified="31/10/2016">
-
- <TemplateConfiguration>
- <_Name>Class Library (.NET Core)</_Name>
- <Category>netcore/library/general</Category>
- <Icon>md-library-project</Icon>
- <Image id="md-library-project" />
- <LanguageName>C#</LanguageName>
- <_Description>Creates a new .NET Core class library project.</_Description>
- <DefaultFilename>ClassLibrary</DefaultFilename>
- <Wizard>MonoDevelop.DotNetCore.ProjectTemplateWizard</Wizard>
- <DefaultParameters>Template=LibraryProject;OpenFile=MyClass.cs;Files=MyClass.cs</DefaultParameters>
- </TemplateConfiguration>
-
- <Combine name="${ProjectName}" directory=".">
- <Project name="${ProjectName}" type="C#" directory="./" if="CreateDotNetCoreProject">
- </Project>
- </Combine>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs
deleted file mode 100755
index 02156e0bbb..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using System;
-using Xunit;
-
-namespace ${Namespace}
-{
- public class Test
- {
- [Fact]
- public void TestCase()
- {
- }
- }
-}
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs.xft.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs.xft.xml
deleted file mode 100644
index 2f41bb949e..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.Test.cs.xft.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="2017/02/07"
- lastModified="2017/02/07">
-
- <TemplateConfiguration>
- <_Name>Xunit Test.cs</_Name>
- </TemplateConfiguration>
-
- <TemplateFiles>
- <File
- name="Test.cs"
- DefaultName="Test.cs"
- src="XUnitTestProject.Test.cs"
- BuildAction="Compile"
- AddStandardHeader="True" />
- </TemplateFiles>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.csproj b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.csproj
deleted file mode 100644
index 6c4af8a52a..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.csproj
+++ /dev/null
@@ -1,13 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
- <PropertyGroup>
- <TargetFramework>netcoreapp1.0</TargetFramework>
- </PropertyGroup>
-
- <ItemGroup>
- <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170123-02" />
- <PackageReference Include="xunit" Version="2.2.0-beta5-build3474" />
- <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0-beta5-build1225" />
- </ItemGroup>
-
-</Project>
diff --git a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.xpt.xml b/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.xpt.xml
deleted file mode 100644
index f0f55cd3d6..0000000000
--- a/main/src/addins/MonoDevelop.DotNetCore/Templates/Projects/XUnitTest/XUnitTestProject.xpt.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<Template
- originator="Matt Ward"
- created="12/09/2015"
- lastModified="31/10/2016">
-
- <TemplateConfiguration>
- <_Name>xUnit Library (.NET Core)</_Name>
- <Category>netcore/test/general</Category>
- <Icon>md-test-project</Icon>
- <Image id="md-test-project" />
- <LanguageName>C#</LanguageName>
- <_Description>Creates a new xUnit test project.</_Description>
- <DefaultFilename>ClassLibrary</DefaultFilename>
- <Wizard>MonoDevelop.DotNetCore.ProjectTemplateWizard</Wizard>
- <DefaultParameters>Template=XUnitTestProject;OpenFile=Test.cs;Files=Test.cs</DefaultParameters>
- </TemplateConfiguration>
-
- <Combine name="${ProjectName}" directory=".">
- <Project name="${ProjectName}" type="C#" directory="./" if="CreateDotNetCoreProject">
- </Project>
- </Combine>
-</Template> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/packages.config b/main/src/addins/MonoDevelop.DotNetCore/packages.config
index 7d187e2074..10ab51cf54 100644
--- a/main/src/addins/MonoDevelop.DotNetCore/packages.config
+++ b/main/src/addins/MonoDevelop.DotNetCore/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="Microsoft.TestPlatform.TranslationLayer" version="15.0.0-preview-20170201-02" targetFramework="net46" />
+ <package id="Microsoft.TestPlatform.TranslationLayer" version="15.0.0" targetFramework="net46" />
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
</packages> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.DotNetCore/pull-package.cs b/main/src/addins/MonoDevelop.DotNetCore/pull-package.cs
new file mode 100644
index 0000000000..15eaedd2a2
--- /dev/null
+++ b/main/src/addins/MonoDevelop.DotNetCore/pull-package.cs
@@ -0,0 +1,53 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Net;
+
+public class App
+{
+ static string CacheDirectory {
+ get {
+ return Path.Combine (
+ Environment.GetFolderPath (Environment.SpecialFolder.Personal),
+ "Cache",
+ "xs-compilation"
+ );
+ }
+ }
+
+ public static int Main (string [] args)
+ {
+ //Reason for this cache is not to save time on downloading file on fresh build
+ //but in case downloading fails/you don't have internet connection it uses old cache
+ //so this cache should probably be called backup :)
+
+ var sourceUrl = new Uri (args [0]);
+ var destFile = args [1];
+ var cachePath = Path.Combine (CacheDirectory, Path.GetFileName (destFile));
+ var cacheTmpPath = cachePath + ".tmp";
+
+ Console.WriteLine ("Creating directories: {0} and {1}", CacheDirectory, Path.GetDirectoryName (destFile));
+ Directory.CreateDirectory (CacheDirectory);
+ Directory.CreateDirectory (Path.GetDirectoryName (destFile));
+
+ Console.WriteLine ("Downloading file: '{0}' to cache at '{1}'", sourceUrl, cachePath);
+ try {
+ WebClient wc = new WebClient ();
+ wc.DownloadFile (sourceUrl, cacheTmpPath);
+ File.Delete (cachePath);
+ File.Move (cacheTmpPath, cachePath);
+ } catch (Exception ex) {
+ Console.WriteLine ("Could not download the package from {0}. {1}", sourceUrl, ex);
+ }
+
+ if (File.Exists (cachePath)) {
+ Console.WriteLine ("Using the file from the cache directory. Copying {0} to {1}", cachePath, destFile);
+ File.Delete (destFile);
+ File.Copy (cachePath, destFile);
+ return 0;
+ } else {
+ Console.WriteLine ("The file was not found in the cache directory... failing");
+ return 1;
+ }
+ }
+} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs
index b2f6cc5881..570bb2f338 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs
@@ -163,9 +163,6 @@ namespace MonoDevelop.PackageManagement.Commands
return;
}
- //check that the projects have the correct backing system for project.json
- RefreshProjectsIfNecessary (projects);
-
//queue up in a timeout in case this was kicked off from a command
GLib.Timeout.Add (0, () => {
if (projects.Count == 1) {
@@ -185,19 +182,5 @@ namespace MonoDevelop.PackageManagement.Commands
return false;
});
}
-
- static void RefreshProjectsIfNecessary (List<DotNetProject> projects)
- {
- foreach (var solution in projects.GroupBy (p => p.ParentSolution)) {
- var solutionManager = (MonoDevelopSolutionManager)PackageManagementServices.Workspace.GetSolutionManager (solution.Key);
- foreach (var nugetProject in solutionManager.GetNuGetProjects ()) {
- var msbuildProject = nugetProject as NuGet.ProjectManagement.MSBuildNuGetProject;
- if (msbuildProject != null && solution.Any (p => p.FileName == msbuildProject.MSBuildNuGetProjectSystem.ProjectFullPath)) {
- solutionManager.ClearProjectCache ();
- break;
- }
- }
- }
- }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageReferenceNodeCommandHandler.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageReferenceNodeCommandHandler.cs
index aaa7c92eb5..2d69ec0c26 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageReferenceNodeCommandHandler.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageReferenceNodeCommandHandler.cs
@@ -69,6 +69,22 @@ namespace MonoDevelop.PackageManagement.Commands
PackageId = packageReferenceNode.Id
};
}
+
+ static internal IPackageAction CreateUninstallPackageAction (DotNetProject project, string packageId)
+ {
+ var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (project.ParentSolution);
+ return new UninstallNuGetPackageAction (solutionManager, new DotNetProjectProxy (project)) {
+ PackageId = packageId
+ };
+ }
+
+ internal static IPackageAction CreateUninstallPackagesAction (DotNetProject project, string[] packageIds)
+ {
+ var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (project.ParentSolution);
+ var action = new UninstallNuGetPackagesAction (solutionManager, new DotNetProjectProxy (project));
+ action.AddPackageIds (packageIds);
+ return action;
+ }
[CommandUpdateHandler (EditCommands.Delete)]
public void UpdateRemoveItem (CommandInfo info)
@@ -87,22 +103,30 @@ namespace MonoDevelop.PackageManagement.Commands
{
var packageReferenceNode = (PackageReferenceNode)CurrentNode.DataItem;
+ UpdatePackage (
+ packageReferenceNode.Project,
+ packageReferenceNode.Id,
+ !packageReferenceNode.IsReleaseVersion ());
+ }
+
+ internal static void UpdatePackage (IDotNetProject project, string packageId, bool includePrerelease)
+ {
try {
- var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (packageReferenceNode.Project.ParentSolution);
- var action = new UpdateNuGetPackageAction (solutionManager, packageReferenceNode.Project) {
- PackageId = packageReferenceNode.Id,
- IncludePrerelease = !packageReferenceNode.IsReleaseVersion ()
+ var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (project.ParentSolution);
+ var action = new UpdateNuGetPackageAction (solutionManager, project) {
+ PackageId = packageId,
+ IncludePrerelease = includePrerelease
};
- ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateUpdatingSinglePackageMessage (packageReferenceNode.Id, packageReferenceNode.Project);
+ ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateUpdatingSinglePackageMessage (packageId, project);
UpdatePackage (progressMessage, action);
} catch (Exception ex) {
- ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateUpdatingSinglePackageMessage (packageReferenceNode.Id);
+ ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateUpdatingSinglePackageMessage (packageId);
PackageManagementServices.BackgroundPackageActionRunner.ShowError (progressMessage, ex);
}
}
- void UpdatePackage (ProgressMonitorStatusMessage progressMessage, IPackageAction action)
+ static void UpdatePackage (ProgressMonitorStatusMessage progressMessage, IPackageAction action)
{
try {
PackageManagementServices.BackgroundPackageActionRunner.Run (progressMessage, action);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs
index a2d44bcb48..e5a7b107ba 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs
@@ -114,12 +114,21 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
{
- return true;
+ return ShowPackagesFolderForProject ((DotNetProject)dataObject);
+ }
+
+ bool ShowPackagesFolderForProject (DotNetProject project)
+ {
+ return !project.IsDotNetCoreProject ();
}
public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
{
var project = (DotNetProject)dataObject;
+
+ if (!ShowPackagesFolderForProject (project))
+ return;
+
var folderNode = new ProjectPackagesFolderNode (project);
folderNode.RefreshPackages ();
treeBuilder.AddChild (folderNode);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetPackageManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetPackageManager.cs
index 05f8b43288..c861b57c03 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetPackageManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetPackageManager.cs
@@ -247,6 +247,28 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
return Task.FromResult (0);
}
+
+ public IBuildIntegratedNuGetProject PreviewBuildIntegratedProject;
+ public List<NuGetProjectAction> PreviewBuildIntegratedProjectActions;
+ public INuGetProjectContext PreviewBuildIntegratedContext;
+ public CancellationToken PreviewBuildIntegratedCancellationToken;
+ public BuildIntegratedProjectAction BuildIntegratedProjectAction;
+
+ public Task<BuildIntegratedProjectAction> PreviewBuildIntegratedProjectActionsAsync (
+ IBuildIntegratedNuGetProject buildIntegratedProject,
+ IEnumerable<NuGetProjectAction> nuGetProjectActions,
+ INuGetProjectContext nuGetProjectContext,
+ CancellationToken token)
+ {
+ PreviewBuildIntegratedProject = buildIntegratedProject;
+ PreviewBuildIntegratedProjectActions = nuGetProjectActions.ToList ();
+ PreviewBuildIntegratedContext = nuGetProjectContext;
+ PreviewBuildIntegratedCancellationToken = token;
+
+ BeforePreviewUninstallPackagesAsync ();
+
+ return Task.FromResult (BuildIntegratedProjectAction);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableUninstallNuGetPackagesAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableUninstallNuGetPackagesAction.cs
new file mode 100644
index 0000000000..4e68f3936f
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableUninstallNuGetPackagesAction.cs
@@ -0,0 +1,66 @@
+//
+// TestableUninstallNuGetPackagesAction.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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.
+
+namespace MonoDevelop.PackageManagement.Tests.Helpers
+{
+ class TestableUninstallNuGetPackagesAction : UninstallNuGetPackagesAction
+ {
+ public FakeNuGetProjectContext ProjectContext;
+ public FakeNuGetPackageManager PackageManager;
+ public PackageManagementEvents PackageManagementEvents;
+
+ public TestableUninstallNuGetPackagesAction (
+ FakeSolutionManager solutionManager,
+ FakeDotNetProject project)
+ : this (
+ solutionManager,
+ project,
+ new FakeNuGetProjectContext (),
+ new FakeNuGetPackageManager (),
+ new PackageManagementEvents ())
+ {
+ }
+
+ public TestableUninstallNuGetPackagesAction (
+ FakeSolutionManager solutionManager,
+ FakeDotNetProject dotNetProject,
+ FakeNuGetProjectContext projectContext,
+ FakeNuGetPackageManager packageManager,
+ PackageManagementEvents packageManagementEvents)
+ : base (
+ solutionManager,
+ dotNetProject,
+ projectContext,
+ packageManager,
+ packageManagementEvents)
+ {
+ ProjectContext = projectContext;
+ PackageManager = packageManager;
+
+ PackageManagementEvents = packageManagementEvents;
+ }
+ }
+}
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 10052bfc57..3639c01116 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
@@ -200,6 +200,8 @@
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\FakeMSBuildEvaluatedPropertyCollection.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableProjectPackageReference.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\ProjectPackageReferenceTests.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests\UninstallNuGetPackagesActionTests.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableUninstallNuGetPackagesAction.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/DotNetCoreNuGetProjectTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreNuGetProjectTests.cs
index f866c33dec..e9148330f5 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreNuGetProjectTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreNuGetProjectTests.cs
@@ -123,7 +123,20 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.IsFalse (result);
Assert.IsFalse (project.IsSaved);
Assert.AreEqual (MessageLevel.Warning, context.LastLogLevel);
- Assert.AreEqual ("Package 'NUnit.2.6.1' does not exist in project 'MyProject'", context.LastMessageLogged);
+ Assert.AreEqual ("Package 'NUnit' does not exist in project 'MyProject'", context.LastMessageLogged);
+ }
+
+ [Test]
+ public async Task UninstallPackageAsync_DifferentPackageVersionInstalled_PackageReferenceRemoved ()
+ {
+ CreateNuGetProject ();
+ AddDotNetProjectPackageReference ("NUnit", "2.6.1");
+
+ bool result = await UninstallPackageAsync ("NUnit", "3.5");
+
+ Assert.IsFalse (dotNetProject.Items.OfType<ProjectPackageReference> ().Any ());
+ Assert.IsTrue (result);
+ Assert.IsTrue (project.IsSaved);
}
[Test]
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UninstallNuGetPackagesActionTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UninstallNuGetPackagesActionTests.cs
new file mode 100644
index 0000000000..5e7395ede2
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UninstallNuGetPackagesActionTests.cs
@@ -0,0 +1,136 @@
+//
+// UninstallNuGetPackagesActionTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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.Linq;
+using MonoDevelop.PackageManagement.Tests.Helpers;
+using NuGet.PackageManagement;
+using NUnit.Framework;
+
+namespace MonoDevelop.PackageManagement.Tests
+{
+ [TestFixture]
+ public class UninstallNuGetPackagesActionTests
+ {
+ TestableUninstallNuGetPackagesAction action;
+ FakeSolutionManager solutionManager;
+ FakeDotNetProject project;
+ FakeNuGetProject nugetProject;
+ FakeNuGetPackageManager packageManager;
+
+ void CreateAction (params string[] packageIds)
+ {
+ project = new FakeDotNetProject (@"d:\projects\MyProject\MyProject.csproj");
+ project.Name = "MyProject";
+ solutionManager = new FakeSolutionManager ();
+ nugetProject = new FakeNuGetProject (project);
+ solutionManager.NuGetProjects[project] = nugetProject;
+
+ action = new TestableUninstallNuGetPackagesAction (
+ solutionManager,
+ project);
+
+ packageManager = action.PackageManager;
+
+ action.AddPackageIds (packageIds);
+ }
+
+ [Test]
+ public void Execute_TwoPackageIds_ActionsResolvedFromNuGetPackageManager ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ action.Execute ();
+
+ Assert.AreEqual (nugetProject, packageManager.PreviewBuildIntegratedProject);
+ Assert.AreEqual ("Test1", packageManager.PreviewBuildIntegratedProjectActions[0].PackageIdentity.Id);
+ Assert.AreEqual ("Test2", packageManager.PreviewBuildIntegratedProjectActions[1].PackageIdentity.Id);
+ Assert.AreEqual (NuGetProjectActionType.Uninstall, packageManager.PreviewBuildIntegratedProjectActions[0].NuGetProjectActionType);
+ Assert.AreEqual (NuGetProjectActionType.Uninstall, packageManager.PreviewBuildIntegratedProjectActions[1].NuGetProjectActionType);
+ Assert.AreEqual (action.ProjectContext, packageManager.PreviewBuildIntegratedContext);
+ }
+
+ [Test]
+ public void Execute_TwoPackageIds_ActionsAvailableForInstrumentation ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ action.Execute ();
+
+ Assert.AreEqual (action.GetNuGetProjectActions (), packageManager.PreviewBuildIntegratedProjectActions);
+ }
+
+ [Test]
+ public void NewInstance_NotExecutedAndGetNuGetProjectActions_NullReferenceExceptionNotThrown ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ Assert.AreEqual (0, action.GetNuGetProjectActions ().Count ());
+ }
+
+ [Test]
+ public void Execute_TwoPackageIds_ExecutesBuilldIntegratedActionReturnedFromNuGetPackageManager ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ action.Execute ();
+
+ Assert.AreEqual (packageManager.BuildIntegratedProjectAction, packageManager.ExecutedActions[0]);
+ Assert.AreEqual (1, packageManager.ExecutedActions.Count);
+ Assert.AreEqual (nugetProject, packageManager.ExecutedNuGetProject);
+ Assert.AreEqual (action.ProjectContext, packageManager.ExecutedProjectContext);
+ }
+
+ [Test]
+ public void Execute_TwoPackageIds_OnAfterExecuteActionsIsCalled ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ action.Execute ();
+
+ Assert.AreEqual (packageManager.PreviewBuildIntegratedProjectActions, nugetProject.ActionsPassedToOnAfterExecuteActions);
+ }
+
+ [Test]
+ public void Execute_TwoPackageIds_PostProcessingIsRun ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ action.Execute ();
+
+ Assert.AreEqual (action.ProjectContext, nugetProject.PostProcessProjectContext);
+ }
+
+ [Test]
+ public void Execute_TwoPackageIds_OnBeforeUninstallIsCalled ()
+ {
+ CreateAction ("Test1", "Test2");
+
+ action.Execute ();
+
+ Assert.AreEqual (packageManager.PreviewBuildIntegratedProjectActions, nugetProject.ActionsPassedToOnBeforeUninstall);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
index 79d846a20c..5278d96067 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
@@ -91,14 +91,6 @@
<CommandItem
id="MonoDevelop.PackageManagement.Commands.Restore" />
</Condition>
- <Condition id="ItemType" value="MonoDevelop.PackageManagement.NodeBuilders.DependenciesNode|MonoDevelop.PackageManagement.NodeBuilders.PackageDependenciesNode">
- <CommandItem
- id="MonoDevelop.PackageManagement.Commands.AddPackages" _label = "Add _Packages..." />
- <CommandItem
- id="MonoDevelop.PackageManagement.Commands.UpdateAllPackagesInProject" />
- <CommandItem
- id="MonoDevelop.PackageManagement.Commands.Restore" />
- </Condition>
</Extension>
<Extension path="/MonoDevelop/Ide/ContextMenu/ProjectPad/Add">
@@ -137,11 +129,6 @@
<NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.ProjectReferenceNodeBuilderExtension" />
<NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.ProjectReferencesNodeBuilderExtension" />
<NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.ProjectReferencesFromPackagesFolderNodeBuilder" />
- <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.DependenciesNodeBuilderExtension" />
- <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.DependenciesNodeBuilder" />
- <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.PackageDependenciesNodeBuilder" />
- <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.TargetFrameworkNodeBuilder" />
- <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.PackageDependencyNodeBuilder" />
</Extension>
<ExtensionPoint path = "/MonoDevelop/PackageManagement/ContextMenu/ProjectPad/PackageReference">
@@ -155,15 +142,6 @@
<CommandItem id="MonoDevelop.Ide.Commands.EditCommands.Delete" />
</Extension>
- <ExtensionPoint path="/MonoDevelop/PackageManagement/ContextMenu/ProjectPad/PackageDependency">
- <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/>
- </ExtensionPoint>
-
- <Extension path="/MonoDevelop/PackageManagement/ContextMenu/ProjectPad/PackageDependency">
- <CommandItem id="MonoDevelop.PackageManagement.Commands.PackageReferenceNodeCommands.UpdatePackage" />
- <CommandItem id="MonoDevelop.Ide.Commands.EditCommands.Delete" />
- </Extension>
-
<Extension path="/MonoDevelop/DesignerSupport/PropertyProviders">
<Class class="MonoDevelop.PackageManagement.NodeBuilders.PackageReferenceNodePropertyProvider" />
</Extension>
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index 877f78ba77..5047875419 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -390,16 +390,6 @@
<Compile Include="MonoDevelop.PackageManagement\DotNetCorePath.cs" />
<Compile Include="MonoDevelop.PackageManagement\LoggingProgressMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\DotNetCoreFrameworkCompatibility.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\DependenciesNodeBuilderExtension.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\DependenciesNode.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\DependenciesNodeBuilder.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependenciesNode.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependenciesNodeBuilder.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\TargetFrameworkNode.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\TargetFrameworkNodeBuilder.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependencyNode.cs" />
- <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependencyNodeBuilder.cs" />
- <Compile Include="MonoDevelop.PackageManagement.Commands\PackageDependenciesNodeCommandHandler.cs" />
<Compile Include="MonoDevelop.PackageManagement.Gui\PackageSourcesLoadErrorWidget.cs" />
<Compile Include="MonoDevelop.PackageManagement.Gui\PackageSourcesLoadErrorWidget.UI.cs">
<DependentUpon>PackageSourcesLoadErrorWidget.cs</DependentUpon>
@@ -425,7 +415,7 @@
<Compile Include="NuGet.Commands\MSBuildRestoreResult.cs" />
<Compile Include="MonoDevelop.PackageManagement\HttpClientFactory.cs" />
<Compile Include="NuGet.CommandLine\SettingsCredentialProvider.cs" />
- <Compile Include="MonoDevelop.PackageManagement.Commands\PackageDependencyNodeCommandHandler.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\UninstallNuGetPackagesAction.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.PackageManagement.addin.xml" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
index 584e5e3d85..5d3139f394 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
@@ -25,7 +25,6 @@
// THE SOFTWARE.
using System.Collections.Generic;
-using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -48,6 +47,7 @@ namespace MonoDevelop.PackageManagement
IPackageManagementEvents packageManagementEvents;
string msbuildProjectPath;
string projectName;
+ bool restoreRequired;
public DotNetCoreNuGetProject (
DotNetProject project,
@@ -178,10 +178,10 @@ namespace MonoDevelop.PackageManagement
bool RemovePackageReference (PackageIdentity packageIdentity, INuGetProjectContext context)
{
- ProjectPackageReference packageReference = project.GetPackageReference (packageIdentity);
+ ProjectPackageReference packageReference = project.GetPackageReference (packageIdentity, matchVersion: false);
if (packageReference == null) {
- context.Log (MessageLevel.Warning, GettextCatalog.GetString ("Package '{0}' does not exist in project '{1}'", packageIdentity, project.Name));
+ context.Log (MessageLevel.Warning, GettextCatalog.GetString ("Package '{0}' does not exist in project '{1}'", packageIdentity.Id, project.Name));
return false;
}
@@ -265,8 +265,12 @@ namespace MonoDevelop.PackageManagement
return Task.FromResult (false);
}
- public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, System.Threading.CancellationToken token)
+ public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, CancellationToken token)
{
+ if (restoreRequired) {
+ return RestorePackages (nuGetProjectContext, token);
+ }
+
Runtime.RunInMainThread (() => {
DotNetProject.NotifyModified ("References");
});
@@ -276,12 +280,36 @@ namespace MonoDevelop.PackageManagement
return base.PostProcessAsync (nuGetProjectContext, token);
}
+ async Task RestorePackages (INuGetProjectContext nuGetProjectContext, CancellationToken token)
+ {
+ var packageRestorer = await Runtime.RunInMainThread (() => {
+ var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (project.ParentSolution);
+ return new MonoDevelopBuildIntegratedRestorer (solutionManager);
+ });
+
+ var restoreTask = packageRestorer.RestorePackages (this, token);
+ using (var task = new PackageRestoreTask (restoreTask)) {
+ await restoreTask;
+ }
+
+ if (!packageRestorer.LockFileChanged) {
+ // Need to refresh the references since the restore did not.
+ await Runtime.RunInMainThread (() => {
+ DotNetProject.NotifyModified ("References");
+ packageManagementEvents.OnFileChanged (project.GetNuGetAssetsFilePath ());
+ });
+ }
+
+ await base.PostProcessAsync (nuGetProjectContext, token);
+ }
+
public void OnBeforeUninstall (IEnumerable<NuGetProjectAction> actions)
{
}
public void OnAfterExecuteActions (IEnumerable<NuGetProjectAction> actions)
{
+ restoreRequired = actions.Any (action => action.NuGetProjectActionType == NuGetProjectActionType.Install);
}
public void NotifyProjectReferencesChanged ()
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs
index 7eba9a6cc6..bb337593ad 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs
@@ -189,6 +189,12 @@ namespace MonoDevelop.PackageManagement
.FirstOrDefault (projectItem => projectItem.Equals (packageIdentity, matchVersion));
}
+ public static bool HasPackageReference (this DotNetProject project, string packageId)
+ {
+ return project.Items.OfType<ProjectPackageReference> ()
+ .Any (projectItem => StringComparer.OrdinalIgnoreCase.Equals (projectItem.Include, packageId));
+ }
+
public static FilePath GetNuGetAssetsFilePath (this DotNetProject project)
{
return project.BaseIntermediateOutputPath.Combine (LockFileFormat.AssetsFileName);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/INuGetPackageManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/INuGetPackageManager.cs
index 7bbcddf983..d26fc483af 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/INuGetPackageManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/INuGetPackageManager.cs
@@ -70,6 +70,12 @@ namespace MonoDevelop.PackageManagement
INuGetProjectContext nuGetProjectContext,
CancellationToken token);
+ Task<BuildIntegratedProjectAction> PreviewBuildIntegratedProjectActionsAsync(
+ IBuildIntegratedNuGetProject buildIntegratedProject,
+ IEnumerable<NuGetProjectAction> nuGetProjectActions,
+ INuGetProjectContext nuGetProjectContext,
+ CancellationToken token);
+
Task<ResolvedPackage> GetLatestVersionAsync (
string packageId,
NuGetProject project,
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs
index 5b59342475..f11a4b1082 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopBuildIntegratedRestorer.cs
@@ -74,6 +74,8 @@ namespace MonoDevelop.PackageManagement
context = CreateRestoreContext ();
}
+ public bool LockFileChanged { get; private set; }
+
public async Task RestorePackages (
IEnumerable<BuildIntegratedNuGetProject> projects,
CancellationToken cancellationToken)
@@ -92,7 +94,8 @@ namespace MonoDevelop.PackageManagement
}
}
- if (changedLocks.Count > 0) {
+ if (changedLocks.Count > 0) {
+ LockFileChanged = true;
await Runtime.RunInMainThread (() => {
FileService.NotifyFilesChanged (changedLocks);
foreach (var project in affectedProjects) {
@@ -113,6 +116,7 @@ namespace MonoDevelop.PackageManagement
if (projectToReload != null) {
await ReloadProject (projectToReload, changedLock);
} else if (changedLock != null) {
+ LockFileChanged = true;
await Runtime.RunInMainThread (() => {
FileService.NotifyFileChanged (changedLock);
NotifyProjectReferencesChanged (project);
@@ -219,6 +223,7 @@ namespace MonoDevelop.PackageManagement
{
return Runtime.RunInMainThread (async () => {
if (changedLock != null) {
+ LockFileChanged = true;
FileService.NotifyFileChanged (changedLock);
}
await projectToReload.ReevaluateProject (new ProgressMonitor ());
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetPackageManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetPackageManager.cs
index fd33dc0dd8..6ce4b5637c 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetPackageManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopNuGetPackageManager.cs
@@ -183,6 +183,20 @@ namespace MonoDevelop.PackageManagement
);
}
+ public Task<BuildIntegratedProjectAction> PreviewBuildIntegratedProjectActionsAsync(
+ IBuildIntegratedNuGetProject buildIntegratedProject,
+ IEnumerable<NuGetProjectAction> nuGetProjectActions,
+ INuGetProjectContext nuGetProjectContext,
+ CancellationToken token)
+ {
+ return packageManager.PreviewBuildIntegratedProjectActionsAsync (
+ (BuildIntegratedNuGetProject)buildIntegratedProject,
+ nuGetProjectActions,
+ nuGetProjectContext,
+ token
+ );
+ }
+
public async Task OpenReadmeFiles (
NuGetProject nuGetProject,
IEnumerable<PackageIdentity> packages,
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetPackageLicenseAuditor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetPackageLicenseAuditor.cs
index 2549e3653a..524df2d83e 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetPackageLicenseAuditor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/NuGetPackageLicenseAuditor.cs
@@ -32,6 +32,7 @@ using System.Threading.Tasks;
using MonoDevelop.Core;
using NuGet.Common;
using NuGet.PackageManagement;
+using NuGet.Packaging;
using NuGet.Packaging.Core;
using NuGet.Protocol.Core.Types;
@@ -151,7 +152,12 @@ namespace MonoDevelop.PackageManagement
var packages = new HashSet<PackageIdentity> (PackageIdentity.Comparer);
foreach (NuGetProjectAction action in installActions) {
- packages.Add (action.PackageIdentity);
+ var buildIntegratedAction = action as BuildIntegratedProjectAction;
+ if (buildIntegratedAction != null) {
+ packages.AddRange (GetPackages (buildIntegratedAction.GetProjectActions ()));
+ } else {
+ packages.Add (action.PackageIdentity);
+ }
}
return packages;
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdateChecker.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdateChecker.cs
deleted file mode 100644
index 8850375e3e..0000000000
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdateChecker.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// PackageUpdateChecker.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 ICSharpCode.PackageManagement;
-using MonoDevelop.Core;
-
-namespace MonoDevelop.PackageManagement
-{
- public class PackageUpdateChecker
- {
- IUpdatedPackagesInSolution updatedPackagesInSolution;
- IPackageManagementProgressMonitorFactory progressMonitorFactory;
-
- public PackageUpdateChecker ()
- : this (
- PackageManagementServices.UpdatedPackagesInSolution,
- PackageManagementServices.ProgressMonitorFactory)
- {
- }
-
- public PackageUpdateChecker (
- IUpdatedPackagesInSolution updatedPackagesInSolution,
- IPackageManagementProgressMonitorFactory progressMonitorFactory)
- {
- this.updatedPackagesInSolution = updatedPackagesInSolution;
- this.progressMonitorFactory = progressMonitorFactory;
- }
-
- public void Run ()
- {
- try {
- CheckForPackageUpdatesWithProgressMonitor ();
- } catch (Exception ex) {
- LoggingService.LogInternalError ("PackageUpdateChecker error.", ex);
- }
- }
-
- void CheckForPackageUpdatesWithProgressMonitor ()
- {
- ProgressMonitorStatusMessage progressMessage = ProgressMonitorStatusMessageFactory.CreateCheckingForPackageUpdatesMessage ();
- using (ProgressMonitor progressMonitor = CreateProgressMonitor (progressMessage)) {
- try {
- using (var eventMonitor = new PackageUpdatesEventMonitor (progressMonitor)) {
- CheckForPackageUpdates (progressMonitor, progressMessage, eventMonitor);
- }
- } catch (Exception ex) {
- LoggingService.LogInternalError (ex);
- progressMonitor.Log.WriteLine (ex.Message);
- progressMonitor.ReportError (progressMessage.Error, null);
- progressMonitor.ShowPackageConsole ();
- }
- }
- }
-
- ProgressMonitor CreateProgressMonitor (ProgressMonitorStatusMessage progressMessage)
- {
- return progressMonitorFactory.CreateProgressMonitor (progressMessage.Status);
- }
-
- void CheckForPackageUpdates (
- ProgressMonitor progressMonitor,
- ProgressMonitorStatusMessage progressMessage,
- PackageUpdatesEventMonitor eventMonitor)
- {
- updatedPackagesInSolution.CheckForUpdates ();
- if (updatedPackagesInSolution.AnyUpdates ()) {
- progressMonitor.ReportSuccess (GettextCatalog.GetString ("Package updates are available."));
- } else if (eventMonitor.WarningReported) {
- progressMonitor.ReportWarning (progressMessage.Warning);
- } else {
- progressMonitor.ReportSuccess (progressMessage.Success);
- }
- }
- }
-}
-
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
index 9971a783cd..7b26a48c65 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
@@ -141,6 +141,16 @@ namespace MonoDevelop.PackageManagement
);
}
+ public static ProgressMonitorStatusMessage CreateRemovingPackagesFromProjectMessage (int count)
+ {
+ return new ProgressMonitorStatusMessage (
+ GettextCatalog.GetString ("Removing {0} packages...", count),
+ GettextCatalog.GetString ("{0} packages successfully removed.", count),
+ GettextCatalog.GetString ("Could not remove packages."),
+ GettextCatalog.GetString ("{0} packages removed with warnings.", count)
+ );
+ }
+
public static ProgressMonitorStatusMessage CreateRestoringPackagesInSolutionMessage ()
{
return new ProgressMonitorStatusMessage (
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestoreNuGetPackagesAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestoreNuGetPackagesAction.cs
index 66061fc176..9953f640ef 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestoreNuGetPackagesAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestoreNuGetPackagesAction.cs
@@ -54,6 +54,7 @@ namespace MonoDevelop.PackageManagement
RestorePackagesConfigProjects = true;
solutionManager = PackageManagementServices.Workspace.GetSolutionManager (solution);
+ solutionManager.ClearProjectCache ();
nugetProjects = solutionManager.GetNuGetProjects ().ToList ();
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallNuGetPackagesAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallNuGetPackagesAction.cs
new file mode 100644
index 0000000000..c90e254c89
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallNuGetPackagesAction.cs
@@ -0,0 +1,137 @@
+//
+// UninstallNuGetPackagesAction.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2017 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.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using NuGet.PackageManagement;
+using NuGet.Packaging.Core;
+using NuGet.ProjectManagement;
+
+namespace MonoDevelop.PackageManagement
+{
+ class UninstallNuGetPackagesAction : IPackageAction, INuGetProjectActionsProvider
+ {
+ INuGetPackageManager packageManager;
+ IDotNetProject dotNetProject;
+ NuGetProject project;
+ INuGetProjectContext context;
+ IPackageManagementEvents packageManagementEvents;
+ IEnumerable<NuGetProjectAction> actions;
+ List<string> packageIds = new List<string> ();
+
+ public UninstallNuGetPackagesAction (
+ IMonoDevelopSolutionManager solutionManager,
+ IDotNetProject dotNetProject)
+ : this (
+ solutionManager,
+ dotNetProject,
+ new NuGetProjectContext (),
+ new MonoDevelopNuGetPackageManager (solutionManager),
+ PackageManagementServices.PackageManagementEvents)
+ {
+ }
+
+ public UninstallNuGetPackagesAction (
+ IMonoDevelopSolutionManager solutionManager,
+ IDotNetProject dotNetProject,
+ INuGetProjectContext projectContext,
+ INuGetPackageManager packageManager,
+ IPackageManagementEvents packageManagementEvents)
+ {
+ this.dotNetProject = dotNetProject;
+ this.context = projectContext;
+ this.packageManager = packageManager;
+ this.packageManagementEvents = packageManagementEvents;
+
+ project = solutionManager.GetNuGetProject (dotNetProject);
+ }
+
+ public void AddPackageIds (IEnumerable<string> packageIds)
+ {
+ this.packageIds.AddRange (packageIds);
+ }
+
+ public void Execute ()
+ {
+ Execute (CancellationToken.None);
+ }
+
+ public void Execute (CancellationToken cancellationToken)
+ {
+ using (var monitor = new NuGetPackageEventsMonitor (dotNetProject, packageManagementEvents)) {
+ ExecuteAsync (cancellationToken).Wait ();
+ }
+ }
+
+ async Task ExecuteAsync (CancellationToken cancellationToken)
+ {
+ var buildIntegratedProject = project as IBuildIntegratedNuGetProject;
+
+ actions = CreateUninstallActions ();
+
+ var buildAction = await packageManager.PreviewBuildIntegratedProjectActionsAsync (
+ buildIntegratedProject,
+ actions,
+ context,
+ cancellationToken);
+
+ project.OnBeforeUninstall (actions);
+
+ await packageManager.ExecuteNuGetProjectActionsAsync (
+ project,
+ new [] { buildAction },
+ context,
+ cancellationToken);
+
+ project.OnAfterExecuteActions (actions);
+
+ await project.RunPostProcessAsync (context, cancellationToken);
+ }
+
+ IEnumerable<NuGetProjectAction> CreateUninstallActions ()
+ {
+ return packageIds.Select (CreateUninstallProjectAction).ToArray ();
+ }
+
+ NuGetProjectAction CreateUninstallProjectAction (string packageId)
+ {
+ var package = new PackageIdentity (packageId, null);
+ return NuGetProjectAction.CreateUninstallProjectAction (package, project);
+ }
+
+ public IEnumerable<NuGetProjectAction> GetNuGetProjectActions ()
+ {
+ return actions ?? Enumerable.Empty<NuGetProjectAction> ();
+ }
+
+ public bool HasPackageScriptsToRun ()
+ {
+ return false;
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs
index 933e9b068e..d313fc4ccb 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs
@@ -151,7 +151,7 @@ namespace MonoDevelop.Refactoring.Rename
editor.ReplaceText (v.Offset, v.RemovalLength, v.InsertedText);
}
}
- }));
+ }) { TextLinkPurpose = TextLinkPurpose.Rename });
}
public class RenameProperties
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor.Theatrics/SmartScrolledWindow.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor.Theatrics/SmartScrolledWindow.cs
index 70c84a6805..13d6d059cb 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor.Theatrics/SmartScrolledWindow.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor.Theatrics/SmartScrolledWindow.cs
@@ -46,7 +46,7 @@ namespace Mono.TextEditor.Theatrics
}
}
- public class SmartScrolledWindowContainerChild : Container.ContainerChild
+ internal class SmartScrolledWindowContainerChild : Container.ContainerChild
{
public ChildPosition ChildPosition {
get;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/GtkGestures.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/GtkGestures.cs
deleted file mode 100644
index b0dccb73bb..0000000000
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/GtkGestures.cs
+++ /dev/null
@@ -1,254 +0,0 @@
-//
-// GtkGestures.cs
-//
-// Author:
-// Michael Hutchinson <mhutch@xamarin.com>
-//
-// Copyright (c) 2012 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.Runtime.InteropServices;
-using Gdk;
-using MonoDevelop.Components;
-using MonoDevelop.Core;
-
-namespace Mono.TextEditor
-{
- static class GtkGestures
- {
- const int GDK_GESTURE_MAGNIFY = 37;
- const int GDK_GESTURE_ROTATE = 38;
- const int GDK_GESTURE_SWIPE = 39;
-
- [DllImport (PangoUtil.LIBGDK, CallingConvention = CallingConvention.Cdecl)]
- static extern bool gdk_quartz_supports_gesture_events ();
-
- static bool isSupported;
-
- static GtkGestures ()
- {
- if (Platform.IsMac) {
- try {
- isSupported = gdk_quartz_supports_gesture_events () && Environment.GetEnvironmentVariable ("DISABLE_ZOOM_GESTURE") == null;
- } catch (EntryPointNotFoundException) {
- }
- }
- }
-
- public static bool IsSupported { get { return isSupported; } }
-
- public static void AddGestureMagnifyHandler (this Gtk.Widget widget, EventHandler<GestureMagnifyEventArgs> handler)
- {
- if (!isSupported)
- throw new NotSupportedException ();
- var signal = GLib.Signal.Lookup (widget, "gesture-magnify-event", typeof(GestureMagnifyEventArgs));
- signal.AddDelegate (new EventHandler<GestureMagnifyEventArgs> (handler));
- }
-
- public static void AddGestureRotateHandler (this Gtk.Widget widget, EventHandler<GestureRotateEventArgs> handler)
- {
- if (!isSupported)
- throw new NotSupportedException ();
- var signal = GLib.Signal.Lookup (widget, "gesture-rotate-event", typeof(GestureRotateEventArgs));
- signal.AddDelegate (new EventHandler<GestureRotateEventArgs> (handler));
- }
-
- public static void AddGestureSwipeHandler (this Gtk.Widget widget, EventHandler<GestureSwipeEventArgs> handler)
- {
- if (!isSupported)
- throw new NotSupportedException ();
- var signal = GLib.Signal.Lookup (widget, "gesture-swipe-event", typeof(GestureSwipeEventArgs));
- signal.AddDelegate (new EventHandler<GestureSwipeEventArgs> (handler));
- }
- }
-
- public unsafe class GestureMagnifyEventArgs : GLib.SignalArgs
- {
- //have to force pack=4, or Mono aligns doubles to 8 bytes
- [StructLayout (LayoutKind.Sequential, Pack=4)]
- struct GdkEventGestureMagnify
- {
- public Gdk.EventType type;
- public IntPtr window;
- public sbyte send_event;
- public uint time;
- public double x, y;
- public uint state;
- public double magnification;
- public IntPtr device;
- public double x_root, y_root;
- }
-
- // I tried to mimic the GTK# pattern of having a subclassed Event object on the EventArgs, but I gave up on
- // figuring out how to get GTK# to marshal the event to a custom GestureMagnifyEvent class. Instead we just
- // lift all the accessors up to the args class and dereference the handle directly.
- GdkEventGestureMagnify *evt {
- get {
- var handle = ((Event)Args[0]).Handle;
- return (GdkEventGestureMagnify *) handle;
- }
- }
-
- public Gdk.Window Window {
- get {
- return (Gdk.Window) GLib.Object.GetObject (evt->window);
- }
- }
-
- public Device Device {
- get {
- return (Device) GLib.Object.GetObject (evt->device);
- }
- }
-
- public uint Time { get { return evt->time; } }
- public double X { get { return evt->x; } }
- public double Y { get { return evt->y; } }
- public ModifierType State { get { return (ModifierType) evt->state; } }
- public double Magnification { get { return evt->magnification; } }
- public double XRoot { get { return evt->x_root; } }
- public double YRoot { get { return evt->y_root; } }
- }
-
- public unsafe class GestureRotateEventArgs : GLib.SignalArgs
- {
- [StructLayout (LayoutKind.Sequential, Pack=4)]
- struct GdkEventGestureRotate
- {
- public Gdk.EventType type;
- public IntPtr window;
- public sbyte send_event;
- public uint time;
- public double x, y;
- public uint state;
- public double rotation;
- public IntPtr device;
- public double x_root, y_root;
- }
-
- GdkEventGestureRotate *evt {
- get {
- var handle = ((Event)Args[0]).Handle;
- return (GdkEventGestureRotate *) handle;
- }
- }
-
- public Gdk.Window Window {
- get {
- return (Gdk.Window) GLib.Object.GetObject (evt->window);
- }
- }
-
- public Device Device {
- get {
- return (Device) GLib.Object.GetObject (evt->device);
- }
- }
-
- public uint Time { get { return evt->time; } }
- public double X { get { return evt->x; } }
- public double Y { get { return evt->y; } }
- public ModifierType State { get { return (ModifierType) evt->state; } }
- public double Rotation { get { return evt->rotation; } }
- public double XRoot { get { return evt->x_root; } }
- public double YRoot { get { return evt->y_root; } }
- }
-
- public unsafe class GestureSwipeEventArgs : GLib.SignalArgs
- {
- [StructLayout (LayoutKind.Sequential, Pack=4)]
- struct GdkEventGestureSwipe
- {
- public Gdk.EventType type;
- public IntPtr window;
- public sbyte send_event;
- public uint time;
- public double x, y;
- public uint state;
- public double delta_x, delta_y;
- public IntPtr device;
- public double x_root, y_root;
- }
-
- GdkEventGestureSwipe *evt {
- get {
- var handle = ((Event)Args[0]).Handle;
- return (GdkEventGestureSwipe *) handle;
- }
- }
-
- public Gdk.Window Window {
- get {
- return (Gdk.Window) GLib.Object.GetObject (evt->window);
- }
- }
-
- public Device Device {
- get {
- return (Device) GLib.Object.GetObject (evt->device);
- }
- }
-
- public uint Time { get { return evt->time; } }
- public double X { get { return evt->x; } }
- public double Y { get { return evt->y; } }
- public ModifierType State { get { return (ModifierType) evt->state; } }
- public double DeltaX { get { return evt->delta_x; } }
- public double DeltaY { get { return evt->delta_y; } }
- public double XRoot { get { return evt->x_root; } }
- public double YRoot { get { return evt->y_root; } }
- }
-
- /*
- void PrintOffsets ()
- {
- GdkEventGestureMagnify *v = (GdkEventGestureMagnify *)0;
- Console.WriteLine ("type {0}", (int)&(v->type));
- Console.WriteLine ("window {0}", (int)&(v->window));
- Console.WriteLine ("send_event {0}", (int)&(v->send_event));
- Console.WriteLine ("time {0}", (int)&(v->time));
- Console.WriteLine ("x {0}", (int)&(v->x));
- Console.WriteLine ("y {0}", (int)&(v->y));
- Console.WriteLine ("state {0}", (int)&(v->state));
- Console.WriteLine ("magnification {0}", (int)&(v->magnification));
- Console.WriteLine ("x_root {0}", (int)&(v->x_root));
- Console.WriteLine ("y_root {0}", (int)&(v->y_root));
- }
-
- // gcc -m32 test.c `pkg-config --cflags gtk+-2.0`
- #include <gtk/gtk.h>
-
- int main (int argc, char* argv)
- {
- GdkEventGestureMagnify *v = (GdkEventGestureMagnify *)0;
- printf ("type %d\n", (int)&(v->type));
- printf ("window %d\n", (int)&(v->window));
- printf ("send_event %d\n", (int)&(v->send_event));
- printf ("time %d\n", (int)&(v->time));
- printf ("x %d\n", (int)&(v->x));
- printf ("y %d\n", (int)&(v->y));
- printf ("state %d\n", (int)&(v->state));
- printf ("magnification %d\n", (int)&(v->magnification));
- printf ("x_root %d\n", (int)&(v->x_root));
- printf ("y_root %d\n", (int)&(v->y_root));
- }
- */
-}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/LayoutCache.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/LayoutCache.cs
index 4fad068cdd..9a31affd87 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/LayoutCache.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/LayoutCache.cs
@@ -64,7 +64,7 @@ namespace Mono.TextEditor
}
#endregion
- public class LayoutProxy : IDisposable
+ internal class LayoutProxy : IDisposable
{
readonly LayoutCache layoutCache;
readonly Pango.Layout layout;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/MonoTextEditor.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/MonoTextEditor.cs
index a4b3eaa897..977e7df5fd 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/MonoTextEditor.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/MonoTextEditor.cs
@@ -196,7 +196,7 @@ namespace Mono.TextEditor
}
}
- public class EditorContainerChild : Container.ContainerChild
+ internal class EditorContainerChild : Container.ContainerChild
{
public int X { get; set; }
public int Y { get; set; }
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextArea.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextArea.cs
index 8817365133..e63906fc91 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextArea.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextArea.cs
@@ -2432,7 +2432,7 @@ namespace Mono.TextEditor
In, Out, Bounce
}
- public class RegionPulseAnimation : IAnimationDrawer
+ internal class RegionPulseAnimation : IAnimationDrawer
{
MonoTextEditor editor;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextEditorAccessibility.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextEditorAccessibility.cs
index e51285e27d..69687907c7 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextEditorAccessibility.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextEditorAccessibility.cs
@@ -374,7 +374,7 @@ namespace Mono.TextEditor
}
}
- public class BaseWidgetAccessible : Gtk.Accessible, Atk.ComponentImplementor
+ internal class BaseWidgetAccessible : Gtk.Accessible, Atk.ComponentImplementor
{
private Gtk.Widget widget;
private uint focus_id = 0;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs
index e3c3d7f3f9..9acd89252a 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/Mono.TextEditor/Gui/TextViewMargin.cs
@@ -203,7 +203,7 @@ namespace Mono.TextEditor
selectedRegions.Clear ();
}
- public class SearchWorkerArguments
+ internal class SearchWorkerArguments
{
public int FirstLine { get; set; }
@@ -802,7 +802,7 @@ namespace Mono.TextEditor
LayoutDescriptor descriptor;
if (!containsPreedit && layoutDict.TryGetValue (line, out descriptor)) {
bool isInvalid;
- if (descriptor.Equals (line, offset, length, selectionStart, selectionEnd, out isInvalid) && descriptor.Layout != null) {
+ if (descriptor.Equals (line, offset, length, selectionStart, selectionEnd, out isInvalid) && descriptor?.Layout?.Layout != null) {
return descriptor.Layout;
}
descriptor.Dispose ();
@@ -1227,7 +1227,7 @@ namespace Mono.TextEditor
return Encoding.UTF8.GetString (bytes, 0, index).Length;
}
- public class LayoutWrapper : IDisposable
+ internal class LayoutWrapper : IDisposable
{
readonly TextViewMargin parent;
@@ -1317,7 +1317,7 @@ namespace Mono.TextEditor
}
}
- public class BackgroundColor
+ internal class BackgroundColor
{
public readonly Cairo.Color Color;
public readonly int FromIdx;
@@ -1355,6 +1355,8 @@ namespace Mono.TextEditor
public Pango.Rectangle IndexToPos (int index)
{
+ if (Layout == null)
+ return Pango.Rectangle.Zero;
return Layout.IndexToPos (index);
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/BehaviorPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/BehaviorPanel.cs
index 0b413efb49..bf60e42f33 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/BehaviorPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/BehaviorPanel.cs
@@ -32,7 +32,7 @@ using MonoDevelop.Ide.Editor;
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class BehaviorPanel : Gtk.Bin, IOptionsPanel
+ partial class BehaviorPanel : Gtk.Bin, IOptionsPanel
{
public BehaviorPanel ()
{
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
index 80a3af868a..432c9ab61c 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
@@ -39,7 +39,7 @@ using System.Diagnostics;
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class HighlightingPanel : Gtk.Bin, IOptionsPanel
+ partial class HighlightingPanel : Gtk.Bin, IOptionsPanel
{
string schemeName;
ListStore styleStore = new ListStore (typeof (string), typeof (MonoDevelop.Ide.Editor.Highlighting.EditorTheme), typeof (bool));
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs
index 823fc3add0..ab8d320bbf 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs
@@ -33,7 +33,7 @@ using MonoDevelop.Ide;
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class MarkerPanel : Gtk.Bin, IOptionsPanel
+ partial class MarkerPanel : Gtk.Bin, IOptionsPanel
{
bool showLineNumbers;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/NewColorShemeDialog.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/NewColorShemeDialog.cs
index d65170afa7..ca12d8fa90 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/NewColorShemeDialog.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/NewColorShemeDialog.cs
@@ -30,7 +30,7 @@ using MonoDevelop.Ide.Editor.Highlighting;
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class NewColorShemeDialog : Gtk.Dialog
+ partial class NewColorShemeDialog : Gtk.Dialog
{
Gtk.ListStore store = new Gtk.ListStore (typeof(string));
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
index 5e50e51c76..73c8aab6a2 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.cs
@@ -958,7 +958,7 @@ namespace MonoDevelop.SourceEditor.QuickTasks
switch (drawingStep) {
case 0:
var displayScale = Core.Platform.IsMac ? GtkWorkarounds.GetScaleFactor (mode) : 1.0;
- CachedDraw (cr, ref mode.backgroundSurface, allocation, draw: (c, o) => mode.DrawBackground (c, allocation), forceScale: displayScale);
+ mode.DrawBackground (cr, allocation);
drawingStep++;
return true;
case 1:
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj
index 9e9ef2f05b..4a97e84ba9 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj
@@ -198,7 +198,6 @@
<Compile Include="Mono.TextEditor\Gui\DashedLineMargin.cs" />
<Compile Include="Mono.TextEditor\Gui\FoldingScreenbackgroundRenderer.cs" />
<Compile Include="Mono.TextEditor\Gui\FoldMarkerMargin.cs" />
- <Compile Include="Mono.TextEditor\Gui\GtkGestures.cs" />
<Compile Include="Mono.TextEditor\Gui\GutterMargin.cs" />
<Compile Include="Mono.TextEditor\Gui\IAnimationDrawer.cs" />
<Compile Include="Mono.TextEditor\Gui\IBackgroundRenderer.cs" />
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs
index bdcae8703c..d052176e1d 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs
@@ -2,7 +2,7 @@
// This file has been generated by the GUI designer. Do not modify.
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class BehaviorPanel
+ partial class BehaviorPanel
{
private global::Gtk.VBox vbox1;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs
index 5bce3c3b27..3fbe176705 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs
@@ -2,7 +2,7 @@
// This file has been generated by the GUI designer. Do not modify.
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class CompletionAppearancePanel
+ partial class CompletionAppearancePanel
{
private global::Gtk.VBox vbox1;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs
index ded620fec7..f66ed07605 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs
@@ -2,7 +2,7 @@
// This file has been generated by the GUI designer. Do not modify.
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class HighlightingPanel
+ partial class HighlightingPanel
{
private global::Gtk.VBox vbox5;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs
index 740062f8fd..a42521e0d2 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs
@@ -2,7 +2,7 @@
// This file has been generated by the GUI designer. Do not modify.
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class MarkerPanel
+ partial class MarkerPanel
{
private global::Gtk.VBox vbox1;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.NewColorShemeDialog.cs b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.NewColorShemeDialog.cs
index efa3323b30..1dbba5b78b 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.NewColorShemeDialog.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.NewColorShemeDialog.cs
@@ -2,7 +2,7 @@
// This file has been generated by the GUI designer. Do not modify.
namespace MonoDevelop.SourceEditor.OptionPanels
{
- public partial class NewColorShemeDialog
+ partial class NewColorShemeDialog
{
private global::Gtk.Table table1;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic
index 26eb5ddad4..edacf8aab7 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic
@@ -264,6 +264,7 @@
</widget>
<widget class="Gtk.Bin" id="MonoDevelop.SourceEditor.OptionPanels.MarkerPanel" design-size="416 434">
<property name="MemberName" />
+ <property name="GeneratePublic">False</property>
<child>
<widget class="Gtk.VBox" id="vbox1">
<property name="MemberName" />
@@ -572,6 +573,7 @@
</widget>
<widget class="Gtk.Bin" id="MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel" design-size="426 436">
<property name="MemberName" />
+ <property name="GeneratePublic">False</property>
<child>
<widget class="Gtk.VBox" id="vbox1">
<property name="MemberName" />
@@ -925,6 +927,7 @@
</widget>
<widget class="Gtk.Bin" id="MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel" design-size="1074 503">
<property name="MemberName" />
+ <property name="GeneratePublic">False</property>
<child>
<widget class="Gtk.VBox" id="vbox5">
<property name="MemberName" />
@@ -1985,4 +1988,4 @@
</widget>
</child>
</widget>
-</stetic-interface>
+</stetic-interface> \ No newline at end of file
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
index bac0fd4ec0..7720093b36 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
@@ -183,8 +183,11 @@ namespace Mono.TextTemplating
continue;
string resolvedAssem = host.ResolveAssemblyReference (assem);
- if (!string.IsNullOrEmpty (resolvedAssem) && File.Exists (resolvedAssem)) {
- resolved [AssemblyName.GetAssemblyName (resolvedAssem).FullName] = resolvedAssem;
+ if (!string.IsNullOrEmpty (resolvedAssem)) {
+ var assemblyName = resolvedAssem;
+ if (File.Exists (resolvedAssem))
+ assemblyName = AssemblyName.GetAssemblyName (resolvedAssem).FullName;
+ resolved [assemblyName] = resolvedAssem;
} else {
pt.LogError ("Could not resolve assembly reference '" + assem + "'");
return null;
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Highlighting/XmlReadHelper.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Highlighting/XmlReadHelper.cs
index 87634ccea5..bdf9ab1eb7 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Highlighting/XmlReadHelper.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Highlighting/XmlReadHelper.cs
@@ -37,7 +37,7 @@ namespace Mono.TextEditor.Highlighting
public delegate bool ReaderCallback ();
public delegate bool ReaderCallbackWithData (ReadCallbackData data);
- public class ReadCallbackData {
+ internal class ReadCallbackData {
bool skipNextRead = false;
public bool SkipNextRead {
get { return skipNextRead; }
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/FileSettingsStore.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/FileSettingsStore.cs
index 00e9261896..34239773d8 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/FileSettingsStore.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/FileSettingsStore.cs
@@ -31,7 +31,7 @@ namespace Mono.TextEditor.Utils
static class FileSettingsStore
{
- public class Settings
+ internal class Settings
{
public int CaretOffset { get; set; }
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/RedBlackTree.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/RedBlackTree.cs
index e6d793716a..7acfd25f54 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/RedBlackTree.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor.Utils/RedBlackTree.cs
@@ -470,7 +470,7 @@ namespace Mono.TextEditor.Utils
#endregion
- public class RedBlackTreeNodeEventArgs : EventArgs
+ internal class RedBlackTreeNodeEventArgs : EventArgs
{
public T Node { get; private set; }
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Actions/ClipboardActions.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Actions/ClipboardActions.cs
index d3d87c4567..7b22b9ff46 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Actions/ClipboardActions.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Actions/ClipboardActions.cs
@@ -64,7 +64,7 @@ namespace Mono.TextEditor
clipboard.SetWithData (CopyOperation.TargetEntries, operation.ClipboardGetFunc, operation.ClipboardClearFunc);
}
- public class CopyOperation
+ internal class CopyOperation
{
public const int TextType = 1;
public const int HTMLTextType = 2;
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs
index 176d07e6b7..6857982653 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/Document/TextDocument.cs
@@ -622,7 +622,7 @@ namespace Mono.TextEditor
#endregion
#region Undo/Redo operations
- public class UndoOperation
+ internal class UndoOperation
{
TextChangeEventArgs args;
@@ -1887,7 +1887,7 @@ namespace Mono.TextEditor
}
- public class SnapshotDocument : TextDocument
+ internal class SnapshotDocument : TextDocument
{
readonly ITextSourceVersion version;
public override ITextSourceVersion Version {
diff --git a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/HeightTree.cs b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/HeightTree.cs
index 6157abccef..a79a98c8f4 100644
--- a/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/HeightTree.cs
+++ b/main/src/core/Mono.TextEditor.Shared/Mono.TextEditor/HeightTree.cs
@@ -114,7 +114,7 @@ namespace Mono.TextEditor
handler (this, e);
}
- public class HeightChangedEventArgs : EventArgs
+ internal class HeightChangedEventArgs : EventArgs
{
public int Line { get; set; }
@@ -235,7 +235,7 @@ namespace Mono.TextEditor
OnLineUpdateFrom (new HeightChangedEventArgs (lineNumber));
}
- public class FoldMarker
+ internal class FoldMarker
{
public readonly int Line;
public readonly int Count;
@@ -526,7 +526,7 @@ namespace Mono.TextEditor
}
}
- public class HeightNode : IRedBlackTreeNode
+ internal class HeightNode : IRedBlackTreeNode
{
public double totalHeight;
public double height;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetRuntime.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetRuntime.cs
index 60aff87963..e3320c91d4 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetRuntime.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetRuntime.cs
@@ -178,10 +178,7 @@ namespace MonoDevelop.Core.Assemblies
}
}
- /// <summary>
- /// Given an assembly file name, returns the corresponding debug information file name.
- /// (.mdb for Mono, .pdb for MS.NET)
- /// </summary>
+ [Obsolete ("Use DotNetProject.GetAssemblyDebugInfoFile()")]
public abstract string GetAssemblyDebugInfoFile (string assemblyPath);
/// <summary>
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs
index 711849a89b..0cc2485439 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExecutionTarget.cs
@@ -72,6 +72,18 @@ namespace MonoDevelop.Core.Execution
public bool Notable { get; set; }
/// <summary>
+ /// Gets or sets the image name that should be used for this <see cref="MonoDevelop.Core.Execution.ExecutionTarget"/>.
+ /// </summary>
+ /// <value>The name of the image.</value>
+ public string Image { get; set; }
+
+ /// <summary>
+ /// Gets or sets the tooltip that should be used for this <see cref="MonoDevelop.Core.Execution.ExecutionTarget"/>.
+ /// </summary>
+ /// <value>The text to be shown in the tooltip.</value>
+ public string Tooltip { get; set; }
+
+ /// <summary>
/// Target group on which this target is included
/// </summary>
public ExecutionTargetGroup ParentGroup { get; internal set; }
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExternalConsoleFactory.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExternalConsoleFactory.cs
index 50231e64ca..bdffae79fa 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExternalConsoleFactory.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ExternalConsoleFactory.cs
@@ -38,7 +38,7 @@ namespace MonoDevelop.Core.Execution
public ExternalConsole CreateConsole (bool closeOnDispose, CancellationToken cancellationToken = default (CancellationToken))
{
- var c = new ExternalConsole (closeOnDispose);
+ var c = new ExternalConsole (closeOnDispose, null);
if (cancellationToken != default(CancellationToken))
c.BindToCancelToken (cancellationToken);
return c;
@@ -46,19 +46,22 @@ namespace MonoDevelop.Core.Execution
protected override OperationConsole OnCreateConsole (CreateConsoleOptions options)
{
- return new ExternalConsole (true);
+ return new ExternalConsole (!options.PauseWhenFinished, options.Title);
}
}
public sealed class ExternalConsole: OperationConsole
{
- internal ExternalConsole (bool closeOnDispose)
+ internal ExternalConsole (bool closeOnDispose, string title)
{
CloseOnDispose = closeOnDispose;
+ Title = title;
}
public bool CloseOnDispose { get; set; }
+ public string Title { get; set; }
+
public override TextReader In {
get { return Console.In; }
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/OperationConsoleFactory.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/OperationConsoleFactory.cs
index daa81a7e22..52632626f8 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/OperationConsoleFactory.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/OperationConsoleFactory.cs
@@ -35,10 +35,11 @@ namespace MonoDevelop.Core.Execution
{
public class CreateConsoleOptions
{
- public static readonly CreateConsoleOptions Default = new CreateConsoleOptions { BringToFront = true };
+ public static readonly CreateConsoleOptions Default = new CreateConsoleOptions { BringToFront = true, PauseWhenFinished = true };
public bool BringToFront { get; private set; }
public string Title { get; private set; }
+ public bool PauseWhenFinished { get; private set; }
CreateConsoleOptions ()
{
@@ -48,6 +49,7 @@ namespace MonoDevelop.Core.Execution
{
this.BringToFront = options.BringToFront;
this.Title = options.Title;
+ this.PauseWhenFinished = options.PauseWhenFinished;
}
public CreateConsoleOptions (bool bringToFront)
@@ -72,6 +74,15 @@ namespace MonoDevelop.Core.Execution
result.Title = title;
return result;
}
+
+ public CreateConsoleOptions WithPauseWhenFinished (bool pausedWhenFinished)
+ {
+ if (pausedWhenFinished == PauseWhenFinished)
+ return this;
+ var result = new CreateConsoleOptions (this);
+ result.PauseWhenFinished = pausedWhenFinished;
+ return result;
+ }
}
public OperationConsole CreateConsole (CancellationToken cancellationToken = default (CancellationToken))
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs
index 2d12c35878..96fddffb6e 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs
@@ -206,7 +206,7 @@ namespace MonoDevelop.Core.Execution
dict[kvp.Key] = kvp.Value;
var p = externalConsoleHandler (command, arguments, workingDirectory, dict,
- GettextCatalog.GetString ("{0} External Console", BrandingService.ApplicationName),
+ externalConsole?.Title ?? GettextCatalog.GetString ("{0} External Console", BrandingService.ApplicationName),
externalConsole != null ? !externalConsole.CloseOnDispose : false);
if (p != null) {
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/RemoteProcessConnection.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/RemoteProcessConnection.cs
index 7ce7b5f8e4..da72f423a9 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/RemoteProcessConnection.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/RemoteProcessConnection.cs
@@ -508,21 +508,30 @@ namespace MonoDevelop.Core.Execution
return;
}
- lock (pendingMessageTasks) {
- var t = Task.Run (() => {
- msg = LoadMessageData (msg);
- if (type == 0)
- ProcessResponse (msg);
- else
- ProcessRemoteMessage (msg);
- });
- t.ContinueWith (ta => {
- lock (pendingMessageTasks) {
- pendingMessageTasks.Remove (ta);
- }
- }).Ignore ();
+ HandleMessage (msg, type);
+ }
+ }
+
+ async void HandleMessage (BinaryMessage msg, byte type)
+ {
+ var t = Task.Run (() => {
+ msg = LoadMessageData (msg);
+ if (type == 0)
+ ProcessResponse (msg);
+ else
+ ProcessRemoteMessage (msg);
+ });
+
+ try {
+ lock (pendingMessageTasks)
pendingMessageTasks.Add (t);
- }
+
+ await t.ConfigureAwait (false);
+ } catch (Exception e) {
+ LoggingService.LogError ("RemoteProcessConnection.HandleMessage failed", e);
+ } finally {
+ lock (pendingMessageTasks)
+ pendingMessageTasks.Remove (t);
}
}
@@ -530,7 +539,8 @@ namespace MonoDevelop.Core.Execution
public Task ProcessPendingMessages ()
{
- return Task.WhenAll (pendingMessageTasks.ToArray ());
+ lock (pendingMessageTasks)
+ return Task.WhenAll (pendingMessageTasks.ToArray ());
}
BinaryMessage LoadMessageData (BinaryMessage msg)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs
index 42ef306d01..516cf9f505 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs
@@ -181,8 +181,11 @@ namespace MonoDevelop.Projects.MSBuild
internal static string DefaultExtensionsPath {
get {
- if (extensionsPath == null)
- extensionsPath = Environment.GetEnvironmentVariable ("MSBuildExtensionsPath");
+ if (extensionsPath == null) {
+ var path = Environment.GetEnvironmentVariable ("MSBuildExtensionsPath");
+ if (path != null && !IsExternalMSBuildExtensionsPath (path))
+ extensionsPath = path;
+ }
if (extensionsPath == null) {
// NOTE: code from mcs/tools/gacutil/driver.cs
@@ -200,6 +203,40 @@ namespace MonoDevelop.Projects.MSBuild
}
}
+ static string macOSXExternalXBuildDir;
+
+ static string DefaultMacOSXExternalXBuildDir {
+ get {
+ if (macOSXExternalXBuildDir == null) {
+ var path = Environment.GetEnvironmentVariable ("MSBuildExtensionsPath");
+ if (path != null && IsExternalMSBuildExtensionsPath (path))
+ macOSXExternalXBuildDir = path;
+ else
+ macOSXExternalXBuildDir = MacOSXExternalXBuildDir;
+ }
+ return macOSXExternalXBuildDir;
+ }
+ }
+
+ static bool IsExternalMSBuildExtensionsPath (string path)
+ {
+ // Mono has a hack to allow loading msbuild targets from different locations. Besides the default location
+ // inside Mono, targets are also loaded from /Library/Frameworks/Mono.framework/External/xbuild.
+ // When evaluating an msbuild project, MSBuildExtensionsPath is replaced by those locations.
+
+ // This check is a workaround for a special corner case that happens, for example, when building the Xamarin SDKs.
+ // In that case, the MSBuildExtensionsPath env var is specified to point to a local version of the msbuild targets
+ // that are usually installed in /Library/Frameworks/Mono.framework/External/xbuild.
+ // However, by setting this variable, the new value replaces the default build target location, and msbuild
+ // can't finde Microsoft.Common.props.
+
+ // This check is done to avoid overwriting the default msbuild builds target location when what is being
+ // specified in MSBuildExtensionsPath is actually a path that intends to replace the external build
+ // targets path.
+
+ return Platform.IsMac && path.Contains ("Mono.framework/External/xbuild");
+ }
+
static string DotConfigExtensionsPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), Path.Combine ("xbuild", "tasks"));
const string MacOSXExternalXBuildDir = "/Library/Frameworks/Mono.framework/External/xbuild";
@@ -209,7 +246,7 @@ namespace MonoDevelop.Projects.MSBuild
if (Platform.IsWindows)
yield return null;
if (Platform.IsMac)
- yield return MacOSXExternalXBuildDir;
+ yield return DefaultMacOSXExternalXBuildDir;
yield return DotConfigExtensionsPath;
yield return DefaultExtensionsPath;
}
@@ -498,7 +535,13 @@ namespace MonoDevelop.Projects.MSBuild
i += 3;
return EvaluateMember (type, null, prop, i, out val);
}
- int n = prop.IndexOf ('.');
+
+ int n = prop.IndexOf ('[');
+ if (n > 0) {
+ return EvaluateStringAtIndex (prop, n, out val);
+ }
+
+ n = prop.IndexOf ('.');
if (n == -1) {
needsItemEvaluation |= (!ignorePropsWithTransforms && propertiesWithTransforms.Contains (prop));
val = GetPropertyValue (prop) ?? string.Empty;
@@ -790,7 +833,32 @@ namespace MonoDevelop.Projects.MSBuild
} else
flags |= BindingFlags.NonPublic;
- return type.GetMember (memberName, flags | BindingFlags.Public);
+ return type.GetMember (memberName, flags | BindingFlags.Public | BindingFlags.IgnoreCase);
+ }
+
+ bool EvaluateStringAtIndex (string prop, int i, out object val)
+ {
+ val = null;
+
+ int j = prop.IndexOf (']');
+ if (j == -1)
+ return false;
+
+ if (j < prop.Length - 1 || j - i < 2)
+ return false;
+
+ string indexText = prop.Substring (i + 1, j - (i + 1));
+ int index = -1;
+ if (!int.TryParse (indexText, out index))
+ return false;
+
+ prop = prop.Substring (0, i);
+ string propertyValue = GetPropertyValue (prop) ?? string.Empty;
+ if (propertyValue.Length <= index)
+ return false;
+
+ val = propertyValue.Substring (index, 1);
+ return true;
}
static Tuple<Type, string []> [] supportedTypeMembers = {
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
index fe94d5a5c0..8421eb513e 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
@@ -368,6 +368,13 @@ namespace MonoDevelop.Projects.MSBuild
});
}
+ internal Task<bool> SaveAsync (string fileName, string content)
+ {
+ return Task.Run (() => {
+ return TextFile.WriteFile (fileName, content, format.ByteOrderMark, true);
+ });
+ }
+
public string SaveToString ()
{
IsNewProject = false;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
index e4bc64f5f2..57892037cf 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
@@ -1220,6 +1220,12 @@ namespace MonoDevelop.Projects.Policies
defaultPolicies = null;
if (Directory.Exists (PoliciesFolder)) {
+ // Remove duplicate generated by a bug in the policy saving code
+ foreach (var file in Directory.GetFiles (PoliciesFolder, "*.mdpolicy.mdpolicy.xml"))
+ File.Delete (file);
+ foreach (var file in Directory.GetFiles (PoliciesFolder, "*.mdpolicy.mdpolicy.xml.previous"))
+ File.Delete (file);
+
foreach (var file in Directory.GetFiles (PoliciesFolder, "*.mdpolicy.xml")) {
try {
LoadPolicy (file);
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
index d0a7dfe9b2..b0d0205832 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
@@ -613,7 +613,7 @@ namespace MonoDevelop.Projects
// Debug info file
if (conf.DebugSymbols) {
- string mdbFile = TargetRuntime.GetAssemblyDebugInfoFile (conf.CompiledOutputName);
+ string mdbFile = GetAssemblyDebugInfoFile (conf.Selector, conf.CompiledOutputName);
list.Add (mdbFile);
}
@@ -714,9 +714,12 @@ namespace MonoDevelop.Projects
list.Add (file, copyIfNewer);
if (File.Exists (file + ".config"))
list.Add (file + ".config", copyIfNewer);
- string mdbFile = TargetRuntime.GetAssemblyDebugInfoFile (file);
- if (File.Exists (mdbFile))
- list.Add (mdbFile, copyIfNewer);
+ string debugFile = file + ".mdb";
+ if (File.Exists (debugFile))
+ list.Add (debugFile, copyIfNewer);
+ debugFile = Path.ChangeExtension (file, ".pdb");
+ if (File.Exists (debugFile))
+ list.Add (debugFile, copyIfNewer);
}
}
else {
@@ -1131,7 +1134,7 @@ namespace MonoDevelop.Projects
if (GeneratesDebugInfoFile && conf != null && conf.DebugSymbols) {
string file = GetOutputFileName (configuration);
if (file != null) {
- file = TargetRuntime.GetAssemblyDebugInfoFile (file);
+ file = GetAssemblyDebugInfoFile (configuration, file);
var finfo = new FileInfo (file);
if (finfo.Exists) {
var debugFileBuildTime = finfo.LastWriteTime;
@@ -1143,6 +1146,25 @@ namespace MonoDevelop.Projects
return outputBuildTime;
}
+ public FilePath GetAssemblyDebugInfoFile (ConfigurationSelector configuration)
+ {
+ return GetAssemblyDebugInfoFile (configuration, GetOutputFileName (configuration));
+ }
+
+ public FilePath GetAssemblyDebugInfoFile (ConfigurationSelector configuration, FilePath exeFile)
+ {
+ if (CheckUseMSBuildEngine (configuration)) {
+ var mono = TargetRuntime as MonoTargetRuntime;
+ if (mono != null) {
+ var version = mono.MonoRuntimeInfo?.RuntimeVersion;
+ if (version == null || (version < new Version (4, 9, 0)))
+ return exeFile + ".mdb";
+ }
+ return exeFile.ChangeExtension (".pdb");
+ } else
+ return exeFile + ".mdb";
+ }
+
public IList<string> GetUserAssemblyPaths (ConfigurationSelector configuration)
{
if (ParentSolution == null)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
index bbdf03097b..85374ec22d 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
@@ -631,10 +631,10 @@ namespace MonoDevelop.Projects
SetFastBuildCheckDirty ();
modifiedInMemory = false;
- await WriteProjectAsync (monitor);
+ string content = await WriteProjectAsync (monitor);
// Doesn't save the file to disk if the content did not change
- if (await sourceProject.SaveAsync (FileName)) {
+ if (await sourceProject.SaveAsync (FileName, content)) {
if (userProject != null) {
if (!userProject.GetAllObjects ().Any ())
File.Delete (userProject.FileName);
@@ -1157,10 +1157,11 @@ namespace MonoDevelop.Projects
MSBuildResult result = null;
await Task.Run (async delegate {
+ bool operationRequiresExclusiveLock = false;
TimerCounter buildTimer = null;
switch (target) {
- case "Build": buildTimer = Counters.BuildMSBuildProjectTimer; break;
- case "Clean": buildTimer = Counters.CleanMSBuildProjectTimer; break;
+ case "Build": buildTimer = Counters.BuildMSBuildProjectTimer; operationRequiresExclusiveLock = true; break;
+ case "Clean": buildTimer = Counters.CleanMSBuildProjectTimer; operationRequiresExclusiveLock = true; break;
}
var t1 = Counters.RunMSBuildTargetTimer.BeginTiming (GetProjectEventMetadata (configuration));
@@ -1169,7 +1170,11 @@ namespace MonoDevelop.Projects
bool newBuilderRequested = false;
RemoteProjectBuilder builder = await GetProjectBuilder ().ConfigureAwait (false);
- if (builder.IsBusy) {
+
+ // If the builder requires an exclusive lock and it is busy, create a new locked builder.
+ // Fast operations that don't require an exclusive lock can use any builder, either locked or not
+
+ if (builder.IsBusy && operationRequiresExclusiveLock) {
builder.ReleaseReference ();
newBuilderRequested = true;
builder = await RequestLockedBuilder ().ConfigureAwait (false);
@@ -1339,8 +1344,8 @@ namespace MonoDevelop.Projects
if (modifiedInMemory) {
try {
modifiedInMemory = false;
- await WriteProjectAsync (new ProgressMonitor ());
- await projectBuilder.RefreshWithContent (sourceProject.SaveToString ());
+ string content = await WriteProjectAsync (new ProgressMonitor ());
+ await projectBuilder.RefreshWithContent (content);
} catch {
projectBuilder.ReleaseReference ();
throw;
@@ -1372,8 +1377,8 @@ namespace MonoDevelop.Projects
pb.AddReference ();
if (modifiedInMemory) {
try {
- await WriteProjectAsync (new ProgressMonitor ());
- await pb.RefreshWithContent (sourceProject.SaveToString ());
+ string content = await WriteProjectAsync (new ProgressMonitor ());
+ await pb.RefreshWithContent (content);
} catch {
pb.Dispose ();
throw;
@@ -2201,11 +2206,12 @@ namespace MonoDevelop.Projects
AsyncCriticalSection writeProjectLock = new AsyncCriticalSection ();
- internal async Task WriteProjectAsync (ProgressMonitor monitor)
+ internal async Task<string> WriteProjectAsync (ProgressMonitor monitor)
{
using (await writeProjectLock.EnterAsync ().ConfigureAwait (false)) {
- await Task.Run (() => {
+ return await Task.Run (() => {
WriteProject (monitor);
+ return sourceProject.SaveToString ();
}).ConfigureAwait (false);
}
}
@@ -3087,8 +3093,11 @@ namespace MonoDevelop.Projects
if (UseAdvancedGlobSupport) {
// Add remove items if necessary
foreach (var removed in loadedProjectItems.Where (i => i.WildcardItem == globItem && !expandedList.Any (newItem => newItem.ProjectItem.Include == i.Include))) {
- var removeItem = new MSBuildItem (removed.ItemName) { Remove = removed.Include };
- msproject.AddItem (removeItem);
+ var file = removed as ProjectFile;
+ if (file == null || File.Exists (file.FilePath)) {
+ var removeItem = new MSBuildItem (removed.ItemName) { Remove = removed.Include };
+ msproject.AddItem (removeItem);
+ }
unusedItems.UnionWith (FindUpdateItemsForItem (globItem, removed.Include));
}
diff --git a/main/src/core/MonoDevelop.Ide/ExtensionModel/Templates.addin.xml b/main/src/core/MonoDevelop.Ide/ExtensionModel/Templates.addin.xml
index c3e112602f..e936cf1dc5 100644
--- a/main/src/core/MonoDevelop.Ide/ExtensionModel/Templates.addin.xml
+++ b/main/src/core/MonoDevelop.Ide/ExtensionModel/Templates.addin.xml
@@ -21,6 +21,11 @@
<ExtensionNode name="ProjectTemplate" type="MonoDevelop.Ide.Codons.ProjectTemplateCodon"/>
</ExtensionPoint>
+<ExtensionPoint path = "/MonoDevelop/Ide/Templates" name = "Microsoft Templating Engine templates">
+ <Description>Microsoft templating engine project templates to be shown in the New Project dialog.</Description>
+ <ExtensionNode name="Template" type="MonoDevelop.Ide.Codons.TemplateExtensionNode"/>
+</ExtensionPoint>
+
<ExtensionPoint path = "/MonoDevelop/Ide/ProjectTemplatePackageInstallers" name = "Project template package installers">
<Description>Installs packages defined in the project template. Must implement MonoDevelop.Ide.Templates.ProjectTemplatePackageInstaller</Description>
<ExtensionNode name="Class" />
@@ -121,6 +126,7 @@
<Extension path="/MonoDevelop/Ide/ProjectTemplatingProviders">
<Class id="MonoDevelop.ProjectTemplatingProvider" class="MonoDevelop.Ide.Templates.ProjectTemplatingProvider" />
+ <Class id="MonoDevelop.MicrosoftTemplateEngineProjectTemplatingProvider" class="MonoDevelop.Ide.Templates.MicrosoftTemplateEngineProjectTemplatingProvider" />
</Extension>
<Extension path="/MonoDevelop/Ide/TemplateImages">
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
index a356ab36fe..5b1bc7cce5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
@@ -472,7 +472,7 @@ namespace MonoDevelop.Components.MainToolbar
}
var target = item.ExecutionTarget;
- if (target == null || !target.Enabled || item.Project != project)
+ if (target == null || item.Project != project)
continue;
if (target is ExecutionTargetGroup)
@@ -977,6 +977,18 @@ namespace MonoDevelop.Components.MainToolbar
public SolutionItem Project { get; }
+ public string Image {
+ get {
+ return ExecutionTarget?.Image;
+ }
+ }
+
+ public string Tooltip {
+ get {
+ return ExecutionTarget?.Tooltip;
+ }
+ }
+
public IRuntimeMutableModel GetMutableModel ()
{
if (Command != null)
@@ -1006,7 +1018,7 @@ namespace MonoDevelop.Components.MainToolbar
public RuntimeMutableModel (ExecutionTarget target, bool fullName)
{
- Enabled = !(target is ExecutionTargetGroup);
+ Enabled = !(target is ExecutionTargetGroup) && target.Enabled;
Visible = true;
if (target == null)
DisplayString = FullDisplayString = string.Empty;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarModels.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarModels.cs
index 280e33fdac..3330c0f5d0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarModels.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarModels.cs
@@ -84,6 +84,18 @@ namespace MonoDevelop.Components.MainToolbar
bool Notable { get; }
/// <summary>
+ /// Gets the menu item's image.
+ /// </summary>
+ /// <value>The image name.</value>
+ string Image { get; }
+
+ /// <summary>
+ /// Gets the menu item's tooltip.
+ /// </summary>
+ /// <value>The tooltip text</value>
+ string Tooltip { get; }
+
+ /// <summary>
/// Gets the project to which this runtime belongs.
/// </summary>
/// <value>The project.</value>
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs
new file mode 100644
index 0000000000..9fffc654b8
--- /dev/null
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/TemplateExtensionNode.cs
@@ -0,0 +1,89 @@
+//
+// TemplateExtensionNode.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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 Mono.Addins;
+
+namespace MonoDevelop.Ide.Codons
+{
+ [ExtensionNode (Description = "Template informations.")]
+ internal class TemplateExtensionNode : ExtensionNode
+ {
+ [NodeAttribute ("category", "Category used to place template into correct category inside new project dialog.")]
+ string category;
+
+ public string Category {
+ get {
+ return category;
+ }
+ }
+
+ [NodeAttribute ("path", "Either .nupkg file or folder.")]
+ string path;
+
+ public string ScanPath {
+ get {
+ return Addin.GetFilePath (path);
+ }
+ }
+
+
+ [NodeAttribute ("icon", "Icon to display in new project dialog.")]
+ string icon;
+
+ public string Icon {
+ get {
+ return ImageService.GetStockId (Addin, icon, Gtk.IconSize.Dnd);
+ }
+ }
+
+
+ [NodeAttribute ("imageId", "ImageId of image showed in new project dialog description of project.")]
+ string imageId;
+
+ public string ImageId {
+ get {
+ return imageId;
+ }
+ }
+
+ [NodeAttribute ("_overrideName", "If template.json is outside AddIn creator control use this to change name.", Localizable = true)]
+ string overrideName;
+ public string OverrideName {
+ get {
+ return overrideName;
+ }
+ }
+
+
+ [NodeAttribute ("_overrideDescription", "If template.json is outside AddIn creator control use this to change description.", Localizable = true)]
+ string overrideDescription;
+ public string OverrideDescription {
+ get {
+ return overrideDescription;
+ }
+ }
+ }
+}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs
index 9772c3f82f..6e1a9e79c1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs
@@ -131,6 +131,9 @@ namespace MonoDevelop.Ide.Editor.Extension
deleteOrBackspaceTriggerChar = Editor.GetCharAt (Editor.CaretOffset - 1);
res = base.KeyPress (descriptor);
+ if (Editor.EditMode == EditMode.TextLink && Editor.TextLinkPurpose == TextLinkPurpose.Rename) {
+ return res;
+ }
if (descriptor.KeyChar == (char)16 || descriptor.KeyChar == (char)17)
return res;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextPasteHandler.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextPasteHandler.cs
index ee3518ecc0..c4f205af02 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextPasteHandler.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextPasteHandler.cs
@@ -24,6 +24,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
+using System.Threading.Tasks;
using MonoDevelop.Core.Text;
namespace MonoDevelop.Ide.Editor.Extension
@@ -58,7 +59,7 @@ namespace MonoDevelop.Ide.Editor.Extension
/// </summary>
/// <param name="offset">The offset the text was pasted at.</param>
/// <param name="length">The length of the text pasted.</param>
- public abstract void PostFomatPastedText (int offset, int length);
+ public abstract Task PostFomatPastedText (int offset, int length);
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxHighlighting.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxHighlighting.cs
index 70576c62b2..659d346406 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxHighlighting.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxHighlighting.cs
@@ -162,7 +162,7 @@ namespace MonoDevelop.Ide.Editor.Highlighting
this.state = state;
}
- static readonly TimeSpan matchTimeout = TimeSpan.FromMilliseconds (200);
+ static readonly TimeSpan matchTimeout = TimeSpan.FromMilliseconds (100);
public Task<HighlightedLine> GetColoredSegments (ITextSource text, int offset, int length)
{
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs
index 107f942e1f..198126f346 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs
@@ -555,12 +555,22 @@ namespace MonoDevelop.Ide.Editor
textEditorImpl.StartInsertionMode (insertionModeOptions);
}
+ TextLinkModeOptions textLinkModeOptions;
public void StartTextLinkMode (TextLinkModeOptions textLinkModeOptions)
{
if (textLinkModeOptions == null)
throw new ArgumentNullException (nameof (textLinkModeOptions));
Runtime.AssertMainThread ();
textEditorImpl.StartTextLinkMode (textLinkModeOptions);
+ this.textLinkModeOptions = textLinkModeOptions;
+ }
+
+ internal TextLinkPurpose TextLinkPurpose {
+ get {
+ if (EditMode != EditMode.TextLink || textLinkModeOptions == null)
+ return TextLinkPurpose.Unknown;
+ return textLinkModeOptions.TextLinkPurpose;
+ }
}
public void InsertAtCaret (string text)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextLinkModeOptions.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextLinkModeOptions.cs
index ef20516cf9..5be3ff5e64 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextLinkModeOptions.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextLinkModeOptions.cs
@@ -28,6 +28,12 @@ using System.Collections.Generic;
namespace MonoDevelop.Ide.Editor
{
+ public enum TextLinkPurpose
+ {
+ Unknown,
+ Rename
+ }
+
/// <summary>
/// This class contains information the editor needs to initiate the text link mode.
/// </summary>
@@ -50,6 +56,8 @@ namespace MonoDevelop.Ide.Editor
private set;
}
+ public TextLinkPurpose TextLinkPurpose { get; set; }
+
/// <summary>
/// Initializes a new instance of the <see cref="MonoDevelop.Ide.Editor.TextLinkModeOptions"/> class.
/// </summary>
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/AssemblyRunConfigurationEditor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/AssemblyRunConfigurationEditor.cs
index a32a808e05..2db97fc7eb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/AssemblyRunConfigurationEditor.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/AssemblyRunConfigurationEditor.cs
@@ -64,7 +64,7 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
}
}
- class DotNetRunConfigurationEditorWidget: Notebook
+ public class DotNetRunConfigurationEditorWidget: Notebook
{
RadioButton radioStartProject;
RadioButton radioStartApp;
@@ -80,6 +80,12 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
InformationPopoverWidget appEntryInfoIcon;
public DotNetRunConfigurationEditorWidget ()
+ : this (true)
+ {
+
+ }
+
+ public DotNetRunConfigurationEditorWidget (bool includeAdvancedTab)
{
VBox mainBox = new VBox ();
@@ -140,7 +146,8 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
table.Add (box, 1, 1, hexpand: true);
adBox.PackStart (table);
- Add (adBox, GettextCatalog.GetString ("Advanced"));
+ if (includeAdvancedTab)
+ Add (adBox, GettextCatalog.GetString ("Advanced"));
monoSettingsButton.Clicked += EditRuntimeClicked;
radioStartProject.ActiveChanged += (sender, e) => UpdateStatus ();
@@ -240,7 +247,7 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
envVars.StoreValues (config.EnvironmentVariables);
}
- void NotifyChanged ()
+ protected void NotifyChanged ()
{
Changed?.Invoke (this, EventArgs.Empty);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
index b193b6d67c..1f1996aaad 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
@@ -193,6 +193,11 @@ namespace MonoDevelop.Ide.Projects
void TemplatesTreeViewSelectionChanged (object sender, EventArgs e)
{
controller.SelectedTemplate = GetSelectedTemplate ();
+ if (templateTextRenderer.RenderRecentTemplate && controller.SelectedTemplate != null) {
+ // reset selected language if a recent template has been selected
+ templateTextRenderer.SelectedLanguage = controller.SelectedTemplate.Language;
+ controller.SelectedLanguage = controller.SelectedTemplate.Language;
+ }
ShowSelectedTemplate ();
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs
index 9317cdf5ec..d70df2aba0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs
@@ -250,11 +250,12 @@ namespace MonoDevelop.Ide.Projects
string GetSelectedLanguage ()
{
- if (!Template.AvailableLanguages.Any ()) {
+ if (!Template.AvailableLanguages.Any ())
return String.Empty;
- } else if (Template.AvailableLanguages.Contains (SelectedLanguage)) {
+ else if (RenderRecentTemplate)
+ return Template.Language;
+ else if (Template.AvailableLanguages.Contains (SelectedLanguage))
return SelectedLanguage;
- }
return Template.AvailableLanguages.First ();
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
index 41a7c7c4ea..c277db2a9b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
@@ -573,7 +573,7 @@ namespace MonoDevelop.Ide.Projects
if (wizardProvider.HasWizard)
wizardProvider.BeforeProjectIsCreated ();
- if (!CreateProject ())
+ if (!await CreateProject ())
return;
Solution parentSolution = null;
@@ -679,7 +679,7 @@ namespace MonoDevelop.Ide.Projects
.ToList ();
}
- bool CreateProject ()
+ async Task<bool> CreateProject ()
{
if (!projectConfiguration.IsValid ()) {
MessageService.ShowError (projectConfiguration.GetErrorMessage ());
@@ -724,7 +724,7 @@ namespace MonoDevelop.Ide.Projects
DisposeExistingNewItems ();
try {
- result = IdeApp.Services.TemplatingService.ProcessTemplate (template, projectConfiguration, ParentFolder);
+ result = await IdeApp.Services.TemplatingService.ProcessTemplate (template, projectConfiguration, ParentFolder);
if (!result.WorkspaceItems.Any ())
return false;
} catch (UserException ex) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/IProjectTemplatingProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/IProjectTemplatingProvider.cs
index 79c81bbb0c..52fae3978e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/IProjectTemplatingProvider.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/IProjectTemplatingProvider.cs
@@ -25,6 +25,7 @@
// THE SOFTWARE.
using System.Collections.Generic;
+using System.Threading.Tasks;
using MonoDevelop.Ide.Projects;
using MonoDevelop.Projects;
@@ -35,7 +36,7 @@ namespace MonoDevelop.Ide.Templates
IEnumerable<SolutionTemplate> GetTemplates ();
bool CanProcessTemplate (SolutionTemplate template);
- ProcessedTemplateResult ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder);
+ Task<ProcessedTemplateResult> ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder);
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProcessedTemplateResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProcessedTemplateResult.cs
new file mode 100644
index 0000000000..c977bcf200
--- /dev/null
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProcessedTemplateResult.cs
@@ -0,0 +1,67 @@
+//
+// MicrosoftTemplateEngineProcessedTemplateResult.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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.Collections.Generic;
+using Microsoft.TemplateEngine.Edge.Template;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.Ide.Templates
+{
+ class MicrosoftTemplateEngineProcessedTemplateResult : ProcessedTemplateResult
+ {
+ readonly IWorkspaceFileObject[] workspaceItems;
+
+ public MicrosoftTemplateEngineProcessedTemplateResult (IWorkspaceFileObject[] workspaceItems, string solutionFileName, string projectBasePath)
+ {
+ this.workspaceItems = workspaceItems;
+ this.SolutionFileName = solutionFileName;
+ this.ProjectBasePath = projectBasePath;
+ }
+
+ public override IEnumerable<string> Actions {
+ get {
+ yield break;
+ }
+ }
+
+ public override IList<PackageReferencesForCreatedProject> PackageReferences {
+ get {
+ throw new NotImplementedException ();
+ }
+ }
+
+ public override IEnumerable<IWorkspaceFileObject> WorkspaceItems {
+ get {
+ return workspaceItems;
+ }
+ }
+
+ public override bool HasPackages ()
+ {
+ return false;
+ }
+ }
+}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs
new file mode 100644
index 0000000000..2849a88599
--- /dev/null
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineProjectTemplatingProvider.cs
@@ -0,0 +1,226 @@
+//
+// MicrosoftTemplateEngineProjectTemplatingProvider.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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.Collections.Generic;
+using Microsoft.TemplateEngine.Edge.Settings;
+using Microsoft.TemplateEngine.Edge.Template;
+using Microsoft.TemplateEngine.Utils;
+using MonoDevelop.Ide.Projects;
+using MonoDevelop.Projects;
+using System.Linq;
+using Microsoft.TemplateEngine.Orchestrator.RunnableProjects;
+using MonoDevelop.Core;
+using Microsoft.TemplateEngine.Edge;
+using System.IO;
+using Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Config;
+using Microsoft.TemplateEngine.Orchestrator.RunnableProjects.Macros;
+using System.Threading.Tasks;
+using Mono.Addins;
+using MonoDevelop.Ide.Codons;
+using Microsoft.TemplateEngine.Abstractions;
+
+namespace MonoDevelop.Ide.Templates
+{
+ class MicrosoftTemplateEngineProjectTemplatingProvider : IProjectTemplatingProvider
+ {
+ public bool CanProcessTemplate (SolutionTemplate template)
+ {
+ return template is MicrosoftTemplateEngineSolutionTemplate;
+ }
+
+ static EngineEnvironmentSettings environmentSettings = new EngineEnvironmentSettings (new MyTemplateEngineHost (), (env) => new SettingsLoader (env));
+ static TemplateCreator templateCreator = new TemplateCreator (environmentSettings);
+
+ static bool dontUpdateCache = true;
+
+ static MicrosoftTemplateEngineProjectTemplatingProvider ()
+ {
+ AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Ide/Templates", OnExtensionChanged);
+ dontUpdateCache = false;
+ UpdateCache ();
+ }
+
+ static List<TemplateExtensionNode> TemplatesNodes = new List<TemplateExtensionNode> ();
+ static List<MicrosoftTemplateEngineSolutionTemplate> templates = new List<MicrosoftTemplateEngineSolutionTemplate> ();
+
+ static void UpdateCache ()
+ {
+ if (dontUpdateCache)//Avoid updating cache while scan paths are added during registration
+ return;
+ var paths = new Paths (environmentSettings);
+
+ //TODO: Uncomment this IF, but also add logic to invalidate/check if new templates were added from newly installed AddOns...
+ //if (!paths.Exists (paths.User.BaseDir) || !paths.Exists (paths.User.FirstRunCookie)) {
+ var _templateCache = new TemplateCache (environmentSettings);
+ foreach (var scanPath in TemplatesNodes.Select (t => t.ScanPath).Distinct ()) {
+ _templateCache.Scan (scanPath);
+ }
+ _templateCache.WriteTemplateCaches ();
+ paths.WriteAllText (paths.User.FirstRunCookie, "");
+ //}
+ var templateInfos = templateCreator.List (false, (t, s) => new MatchInfo ()).ToDictionary (m => m.Info.Identity, m => m.Info);
+ var newTemplates = new List<MicrosoftTemplateEngineSolutionTemplate> ();
+ foreach (var template in TemplatesNodes) {
+ ITemplateInfo templateInfo;
+ if (!templateInfos.TryGetValue (template.Id, out templateInfo)) {
+ LoggingService.LogWarning ("Template {0} not found.", template.Id);
+ continue;
+ }
+ newTemplates.Add (new MicrosoftTemplateEngineSolutionTemplate (template, templateInfo));
+ }
+ templates = newTemplates;
+ }
+
+ static void OnExtensionChanged (object s, ExtensionNodeEventArgs args)
+ {
+ if (args.Change == ExtensionChange.Add) {
+ var codon = (TemplateExtensionNode)args.ExtensionNode;
+ try {
+ TemplatesNodes.Add (codon);
+ } catch (Exception e) {
+ string extId = null, addinId = null;
+ if (codon != null) {
+ if (codon.HasId)
+ extId = codon.Id;
+ if (codon.Addin != null)
+ addinId = codon.Addin.Id;
+ }
+ LoggingService.LogError ("Error loading template id {0} in addin {1}:\n{2}",
+ extId ?? "(null)", addinId ?? "(null)", e.ToString ());
+ }
+ } else {
+ foreach (var pt in TemplatesNodes) {
+ var codon = (TemplateExtensionNode)args.ExtensionNode;
+ if (pt.Id == codon.Id) {
+ TemplatesNodes.Remove (pt);
+ break;
+ }
+ }
+ }
+ UpdateCache ();
+ }
+
+ public IEnumerable<SolutionTemplate> GetTemplates ()
+ {
+ return templates;
+ }
+
+ static MonoDevelop.Core.Instrumentation.Counter TemplateCounter = MonoDevelop.Core.Instrumentation.InstrumentationService.CreateCounter ("Template Instantiated", "Project Model", id: "Core.Template.Instantiated");
+
+ public async Task<ProcessedTemplateResult> ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
+ {
+ var templateInfo = ((MicrosoftTemplateEngineSolutionTemplate)template).templateInfo;
+ var workspaceItems = new List<IWorkspaceFileObject> ();
+ var result = await templateCreator.InstantiateAsync (
+ templateInfo,
+ config.ProjectName,
+ config.GetValidProjectName (),
+ config.ProjectLocation,
+ new Dictionary<string, string> (),
+ true,
+ false);
+ if (result.ResultInfo.PrimaryOutputs.Any ()) {
+ foreach (var res in result.ResultInfo.PrimaryOutputs) {
+ var fullPath = Path.Combine (config.ProjectLocation, res.Path);
+ //This happens if some project is excluded by modifiers, e.g. Test project disabled in wizard settings by user
+ if (!File.Exists (fullPath))
+ continue;
+ workspaceItems.Add (await MonoDevelop.Projects.Services.ProjectService.ReadSolutionItem (new Core.ProgressMonitor (), fullPath));
+ }
+ } else {
+ //TODO: Remove this code once https://github.com/dotnet/templating/pull/342 is released in NuGet feed and we bump NuGet version of templating engine
+ foreach (var path in Directory.GetFiles (config.ProjectLocation, "*.*proj", SearchOption.AllDirectories)) {
+ if (path.EndsWith (".csproj", StringComparison.OrdinalIgnoreCase) || path.EndsWith (".fsproj", StringComparison.OrdinalIgnoreCase) || path.EndsWith (".vbproj", StringComparison.OrdinalIgnoreCase))
+ workspaceItems.Add (await MonoDevelop.Projects.Services.ProjectService.ReadSolutionItem (new Core.ProgressMonitor (), path));
+ }
+ }
+
+ var metadata = new Dictionary<string, string> ();
+ metadata ["Id"] = templateInfo.Identity;
+ metadata ["Name"] = templateInfo.Name;
+ metadata ["Language"] = template.Language;
+ metadata ["Platform"] = string.Join(";", templateInfo.Classifications);
+ TemplateCounter.Inc (1, null, metadata);
+
+ if (parentFolder == null) {
+ var solution = new Solution ();
+ solution.SetLocation (config.SolutionLocation, config.SolutionName);
+ foreach (var item in workspaceItems.Cast<SolutionFolderItem> ()) {
+ IConfigurationTarget configurationTarget = item as IConfigurationTarget;
+ if (configurationTarget != null) {
+ foreach (ItemConfiguration configuration in configurationTarget.Configurations) {
+ bool flag = false;
+ foreach (SolutionConfiguration solutionCollection in solution.Configurations) {
+ if (solutionCollection.Id == configuration.Id)
+ flag = true;
+ }
+ if (!flag)
+ solution.AddConfiguration (configuration.Id, true);
+ }
+ }
+ solution.RootFolder.AddItem (item);
+ }
+ return new MicrosoftTemplateEngineProcessedTemplateResult (new [] { solution }, solution.FileName, config.ProjectLocation);
+ } else {
+ return new MicrosoftTemplateEngineProcessedTemplateResult (workspaceItems.ToArray (), parentFolder.ParentSolution.FileName, config.ProjectLocation);
+ }
+ }
+
+ class MyTemplateEngineHost : DefaultTemplateEngineHost
+ {
+ public MyTemplateEngineHost () : base (BrandingService.ApplicationName, BuildInfo.CompatVersion, "en-US", new Dictionary<string, string> { { "dotnet-cli-version", "0" } }, new Dictionary<Guid, Func<Type>>
+ {
+ { new Guid("0C434DF7-E2CB-4DEE-B216-D7C58C8EB4B3"), () => typeof(RunnableProjectGenerator) },
+ { new Guid("3147965A-08E5-4523-B869-02C8E9A8AAA1"), () => typeof(BalancedNestingConfig) },
+ { new Guid("3E8BCBF0-D631-45BA-A12D-FBF1DE03AA38"), () => typeof(ConditionalConfig) },
+ { new Guid("A1E27A4B-9608-47F1-B3B8-F70DF62DC521"), () => typeof(FlagsConfig) },
+ { new Guid("3FAE1942-7257-4247-B44D-2DDE07CB4A4A"), () => typeof(IncludeConfig) },
+ { new Guid("3D33B3BF-F40E-43EB-A14D-F40516F880CD"), () => typeof(RegionConfig) },
+ { new Guid("62DB7F1F-A10E-46F0-953F-A28A03A81CD1"), () => typeof(ReplacementConfig) },
+ { new Guid("370996FE-2943-4AED-B2F6-EC03F0B75B4A"), () => typeof(ConstantMacro) },
+ { new Guid("BB625F71-6404-4550-98AF-B2E546F46C5F"), () => typeof(EvaluateMacro) },
+ { new Guid("10919008-4E13-4FA8-825C-3B4DA855578E"), () => typeof(GuidMacro) },
+ { new Guid("F2B423D7-3C23-4489-816A-41D8D2A98596"), () => typeof(NowMacro) },
+ { new Guid("011E8DC1-8544-4360-9B40-65FD916049B7"), () => typeof(RandomMacro) },
+ { new Guid("8A4D4937-E23F-426D-8398-3BDBD1873ADB"), () => typeof(RegexMacro) },
+ { new Guid("B57D64E0-9B4F-4ABE-9366-711170FD5294"), () => typeof(SwitchMacro) },
+ { new Guid("10919118-4E13-4FA9-825C-3B4DA855578E"), () => typeof(CaseChangeMacro) }
+ }.ToList ())
+ {
+ }
+
+ public override bool TryGetHostParamDefault (string paramName, out string value)
+ {
+ if (paramName == "HostIdentifier") {
+ value = this.HostIdentifier;
+ return true;
+ }
+ value = null;
+ return false;
+ }
+ }
+ }
+}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
new file mode 100644
index 0000000000..4b6f0ef87c
--- /dev/null
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/MicrosoftTemplateEngineSolutionTemplate.cs
@@ -0,0 +1,64 @@
+//
+// MicrosoftTemplateEngineSolutionTemplate.cs
+//
+// Author:
+// David Karlaš <david.karlas@xamarin.com>
+//
+// Copyright (c) 2017 Xamarin, Inc (http://www.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 Microsoft.TemplateEngine.Abstractions;
+using Microsoft.TemplateEngine.Edge.Settings;
+using System.Linq;
+using MonoDevelop.Ide.Codons;
+
+namespace MonoDevelop.Ide.Templates
+{
+ class MicrosoftTemplateEngineSolutionTemplate : SolutionTemplate
+ {
+ internal readonly ITemplateInfo templateInfo;
+ //TemplateExtensionNode template;
+
+ internal MicrosoftTemplateEngineSolutionTemplate (TemplateExtensionNode template, ITemplateInfo templateInfo)
+ : base (templateInfo.Identity, template.OverrideName ?? templateInfo.Name, template.Icon)
+ {
+ this.templateInfo = templateInfo;
+ Description = template.OverrideDescription ?? templateInfo.Description;
+ Category = template.Category;
+ string language;
+ if (templateInfo.Tags.TryGetValue ("Language", out language))
+ Language = language;
+ else
+ Language = string.Empty;
+ GroupId = templateInfo.GroupIdentity;
+ //TODO: Support all this params
+ //Condition = template.Condition;
+ //ProjectFileExtension = template.FileExtension;
+ //Wizard = template.WizardPath;
+ //SupportedParameters = template.SupportedParameters;
+ //DefaultParameters = template.DefaultParameters;
+ ImageId = template.ImageId;
+ //ImageFile = template.ImageFile;
+ //Visibility = GetVisibility (template.Visibility);
+
+ //HasProjects = (template.SolutionDescriptor.EntryDescriptors.Length > 0);
+ }
+ }
+}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplatingProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplatingProvider.cs
index b47ae8a685..0b917b754f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplatingProvider.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplatingProvider.cs
@@ -32,6 +32,7 @@
using System.Collections.Generic;
using System.Linq;
+using System.Threading.Tasks;
using MonoDevelop.Ide.Projects;
using MonoDevelop.Projects;
using MonoDevelop.Core;
@@ -52,9 +53,9 @@ namespace MonoDevelop.Ide.Templates
return template is DefaultSolutionTemplate;
}
- public ProcessedTemplateResult ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
+ public Task<ProcessedTemplateResult> ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
{
- return ProcessTemplate ((DefaultSolutionTemplate)template, config, parentFolder);
+ return Task.FromResult (ProcessTemplate ((DefaultSolutionTemplate)template, config, parentFolder));
}
ProcessedTemplateResult ProcessTemplate (DefaultSolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplatingService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplatingService.cs
index 575ca442db..c08f0975f7 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplatingService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplatingService.cs
@@ -27,6 +27,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading.Tasks;
using Mono.Addins;
using MonoDevelop.Components;
using MonoDevelop.Core;
@@ -137,11 +138,11 @@ namespace MonoDevelop.Ide.Templates
return null;
}
- public ProcessedTemplateResult ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
+ public async Task<ProcessedTemplateResult> ProcessTemplate (SolutionTemplate template, NewProjectConfiguration config, SolutionFolder parentFolder)
{
IProjectTemplatingProvider provider = GetTemplatingProviderForTemplate (template);
if (provider != null) {
- var result = provider.ProcessTemplate (template, config, parentFolder);
+ var result = await provider.ProcessTemplate (template, config, parentFolder);
if (result.WorkspaceItems.Any ())
RecentTemplates.AddTemplate (template);
return result;
@@ -241,12 +242,20 @@ namespace MonoDevelop.Ide.Templates
var templatePath = item.Uri.StartsWith (templateUriScheme, StringComparison.Ordinal) ? item.Uri.Substring (templateUriScheme.Length) : item.Uri;
var parts = templatePath.Split ('/');
var templateId = parts [parts.Length - 1];
- if (parts.Length > 2) {
- return IdeApp.Services.TemplatingService.GetTemplate ((template) => template.Id == templateId,
- (category) => category.Id == parts[0],
- (category) => category.Id == parts[1]);
- } else
- return IdeApp.Services.TemplatingService.GetTemplate (templateId);
+ SolutionTemplate recentTemplate = null;
+
+ if (parts.Length > 1)
+ recentTemplate = IdeApp.Services.TemplatingService.GetTemplate (
+ (template) => template.Id == templateId,
+ (category) => parts.Length > 1 ? category.Id == parts[0] : true,
+ (category) => parts.Length > 2 ? category.Id == parts[1] : true
+ );
+
+ // fallback to global template lookup if no category matched
+ // in this case the category is not guaranteed if a template is listed in more than one category
+ if (recentTemplate == null)
+ recentTemplate = IdeApp.Services.TemplatingService.GetTemplate (templateId);
+ return recentTemplate;
}
public void Dispose ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
index 9c31b83492..2d00524635 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
@@ -145,10 +145,6 @@
<HintPath>..\..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>False</Private>
</Reference>
- <Reference Include="Newtonsoft.Json">
- <HintPath>..\..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
- <Private>False</Private>
- </Reference>
<Reference Include="System.Collections.Immutable">
<HintPath>..\..\..\build\bin\System.Collections.Immutable.dll</HintPath>
</Reference>
@@ -175,8 +171,27 @@
<Reference Include="YamlDotNet">
<HintPath>..\..\..\packages\YamlDotNet.Signed.4.0.1-pre291\lib\net35\YamlDotNet.dll</HintPath>
</Reference>
- <Reference Include="Microsoft.CodeAnalysis.Features">
- <HintPath>..\..\..\build\bin\Microsoft.CodeAnalysis.Features.dll</HintPath>
+ <Reference Include="System.IO.Compression" />
+ <Reference Include="Microsoft.TemplateEngine.Abstractions">
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Abstractions.1.0.0-beta1-20170223-126\lib\net45\Microsoft.TemplateEngine.Abstractions.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.TemplateEngine.Core.Contracts">
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Core.Contracts.1.0.0-beta1-20170223-126\lib\net45\Microsoft.TemplateEngine.Core.Contracts.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.TemplateEngine.Utils">
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Utils.1.0.0-beta1-20170223-126\lib\net45\Microsoft.TemplateEngine.Utils.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.TemplateEngine.Core">
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Core.1.0.0-beta1-20170223-126\lib\net45\Microsoft.TemplateEngine.Core.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.TemplateEngine.Orchestrator.RunnableProjects">
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.1.0.0-beta1-20170223-126\lib\net45\Microsoft.TemplateEngine.Orchestrator.RunnableProjects.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.TemplateEngine.Edge">
+ <HintPath>..\..\..\packages\Microsoft.TemplateEngine.Edge.1.0.0-beta1-20170223-126\lib\net45\Microsoft.TemplateEngine.Edge.dll</HintPath>
+ </Reference>
+ <Reference Include="Newtonsoft.Json">
+ <HintPath>..\..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
@@ -9228,6 +9243,10 @@
<Compile Include="MonoDevelop.Ide.TypeSystem\EditorNotificationServiceFactory.cs" />
<Compile Include="MonoDevelop.Ide.TypeSystem\GlobalOptionPersister.cs" />
<Compile Include="MonoDevelop.Ide.TypeSystem\TextPolicyDocumentOptionsProvider.cs" />
+ <Compile Include="MonoDevelop.Ide.Templates\MicrosoftTemplateEngineProjectTemplatingProvider.cs" />
+ <Compile Include="MonoDevelop.Ide.Templates\MicrosoftTemplateEngineSolutionTemplate.cs" />
+ <Compile Include="MonoDevelop.Ide.Templates\MicrosoftTemplateEngineProcessedTemplateResult.cs" />
+ <Compile Include="MonoDevelop.Ide.Codons\TemplateExtensionNode.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs
index 404b3fa13b..1adfa34bc5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs
@@ -96,7 +96,12 @@ namespace MonoDevelop.Ide
SetupExceptionManager ();
IdeApp.Customizer = options.IdeCustomizer ?? new IdeCustomizer ();
- IdeApp.Customizer.Initialize ();
+ try {
+ IdeApp.Customizer.Initialize ();
+ } catch (UnauthorizedAccessException ua) {
+ LoggingService.LogError ("Unauthorized access: " + ua.Message);
+ return 1;
+ }
try {
GLibLogging.Enabled = true;
diff --git a/main/src/core/MonoDevelop.Ide/packages.config b/main/src/core/MonoDevelop.Ide/packages.config
index 8727eecaa8..7396c9edcb 100644
--- a/main/src/core/MonoDevelop.Ide/packages.config
+++ b/main/src/core/MonoDevelop.Ide/packages.config
@@ -1,6 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
+ <package id="Microsoft.TemplateEngine.Abstractions" version="1.0.0-beta1-20170223-126" targetFramework="net45" />
+ <package id="Microsoft.TemplateEngine.Core" version="1.0.0-beta1-20170223-126" targetFramework="net45" />
+ <package id="Microsoft.TemplateEngine.Core.Contracts" version="1.0.0-beta1-20170223-126" targetFramework="net45" />
+ <package id="Microsoft.TemplateEngine.Edge" version="1.0.0-beta1-20170223-126" targetFramework="net45" />
+ <package id="Microsoft.TemplateEngine.Orchestrator.RunnableProjects" version="1.0.0-beta1-20170223-126" targetFramework="net45" />
+ <package id="Microsoft.TemplateEngine.Utils" version="1.0.0-beta1-20170223-126" targetFramework="net45" />
+ <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net45" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
+ <package id="System.IO.Compression" version="4.3.0" targetFramework="net45" />
<package id="YamlDotNet.Signed" version="4.0.1-pre291" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.v4.0.cs b/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.v4.0.cs
index 90401a3000..1de1c94e7c 100644
--- a/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.v4.0.cs
+++ b/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.v4.0.cs
@@ -142,6 +142,11 @@ namespace MonoDevelop.Projects.MSBuild
{
var p = engine.GetLoadedProjects (file).FirstOrDefault ();
if (p == null) {
+
+ // HACK: workaround to MSBuild bug #53019. We need to ensure that $(BaseIntermediateOutputPath) exists before
+ // loading the project.
+ Directory.CreateDirectory (Path.Combine (Path.GetDirectoryName (file), "obj"));
+
var content = buildEngine.GetUnsavedProjectContent (file);
if (content == null)
p = engine.LoadProject (file);
diff --git a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/ClipboardTests.cs b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/ClipboardTests.cs
index e97085202c..83091a2d1a 100644
--- a/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/ClipboardTests.cs
+++ b/main/src/core/MonoDevelop.TextEditor.Tests/Mono.TextEditor.Tests/ClipboardTests.cs
@@ -30,6 +30,7 @@ using Gtk;
using MonoDevelop.Core.Text;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Editor.Extension;
+using System.Threading.Tasks;
namespace Mono.TextEditor.Tests
{
@@ -49,8 +50,9 @@ namespace Mono.TextEditor.Tests
return null;
}
- public override void PostFomatPastedText (int offset, int length)
+ public override Task PostFomatPastedText (int offset, int length)
{
+ return Task.FromResult (true);
}
}
diff --git a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/ParameterHinting/ParameterHintingTests.cs b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/ParameterHinting/ParameterHintingTests.cs
index c644b5fbb9..162fb2313b 100644
--- a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/ParameterHinting/ParameterHintingTests.cs
+++ b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/ParameterHinting/ParameterHintingTests.cs
@@ -765,7 +765,7 @@ namespace Test
}
}");
Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.Count);
+ Assert.AreEqual (2, provider.Count);
}
/// <summary>
@@ -1484,5 +1484,32 @@ namespace DifferentNamespace.ha
Assert.IsNotNull (provider, "provider was not created.");
Assert.AreEqual (1, provider.Count);
}
+
+
+ /// <summary>
+ /// Bug 52886 - Base class constructor tooltip doesn't contain all constructor definition.
+ /// </summary>
+ [Test]
+ public void TestBug52886 ()
+ {
+ var provider = CreateProvider (
+ @"
+class Foo
+{
+ public Foo ()
+ {
+ }
+ public Foo (int a)
+ {
+ }
+}
+class Bar : Foo
+{
+ public Bar () : base($$
+}
+");
+ Assert.IsNotNull (provider, "provider was not created.");
+ Assert.AreEqual (2, provider.Count);
+ }
}
} \ No newline at end of file
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs
index 56c0175ba4..d7217945cb 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs
@@ -242,13 +242,13 @@ namespace MonoDevelop.Projects
await sol.SaveAsync (new ProgressMonitor ());
await sol.Build (new ProgressMonitor (), "Debug");
- string exeDebug = Platform.IsWindows ? ".pdb" : ".exe.mdb";
-
AssertOutputFiles (sol, "ConsoleProject", "Debug", new string[] {
"ConsoleProject.exe",
- p.TargetRuntime.GetAssemblyDebugInfoFile ("ConsoleProject.exe"),
+ p.GetAssemblyDebugInfoFile (sol.Configurations["Debug"].Selector, "ConsoleProject.exe"),
"System.Data.dll",
- "gtk-sharp.dll"
+ "gtk-sharp.dll",
+ "gtk-sharp.dll.config",
+ "gtk-sharp.dll.mdb",
});
string projectXml1 = Util.GetXmlFileInfoset (p.FileName.ParentDirectory.Combine ("ConsoleProject.csproj.saved"));
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildGlobTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildGlobTests.cs
index a88b14e04b..c6bc65d0a6 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildGlobTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildGlobTests.cs
@@ -66,6 +66,31 @@ namespace MonoDevelop.Projects
}
[Test]
+ public async Task DeleteFile ()
+ {
+ string projFile = Util.GetSampleProject ("msbuild-glob-tests", "glob-test.csproj");
+ var p = (DotNetProject)await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
+ p.UseAdvancedGlobSupport = true;
+
+ Assert.AreEqual (3, p.Files.Count);
+
+ var f = p.Files.First (fi => fi.FilePath.FileName == "c1.cs");
+ p.Files.Remove (f);
+ string text = File.ReadAllText (f.FilePath);
+ File.Delete (f.FilePath);
+
+ await p.SaveAsync (Util.GetMonitor ());
+
+ string projectXml = File.ReadAllText (p.FileName);
+ Assert.AreEqual (projectXml, File.ReadAllText (p.FileName.ChangeName ("glob-test-saved2")));
+
+ File.WriteAllText (f.FilePath, text);
+ p.AddFile (f.FilePath);
+ await p.SaveAsync (Util.GetMonitor ());
+ Assert.AreEqual (File.ReadAllText (p.FileName), File.ReadAllText (p.FileName.ChangeName ("glob-test-saved2")));
+ }
+
+ [Test]
public async Task AddFile ()
{
// When adding a file, if the new file is included in a glob, there is no need to add a new project item.
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs
index bbac7af918..a7b423a0f9 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs
@@ -341,6 +341,7 @@ namespace MonoDevelop.Projects
var p = LoadAndEvaluate ("msbuild-tests", "functions.csproj");
Assert.AreEqual ("bcd", p.EvaluatedProperties.GetValue ("Substring"));
+ Assert.AreEqual ("bcd", p.EvaluatedProperties.GetValue ("SubstringIgnoreCase"));
Assert.AreEqual ("ab", p.EvaluatedProperties.GetValue ("MethodWithParams1"));
Assert.AreEqual ("abc", p.EvaluatedProperties.GetValue ("MethodWithParams2"));
Assert.AreEqual ("abcd", p.EvaluatedProperties.GetValue ("MethodWithParams3"));
@@ -364,6 +365,8 @@ namespace MonoDevelop.Projects
Assert.AreEqual ("2", p.EvaluatedProperties.GetValue ("SplitLength"));
Assert.AreEqual ("abcdefg", p.EvaluatedProperties.GetValue ("NewString"));
Assert.AreEqual ("100", p.EvaluatedProperties.GetValue ("CharConvert"));
+ Assert.AreEqual ("a", p.EvaluatedProperties.GetValue ("StringAtIndex0"));
+ Assert.AreEqual ("b", p.EvaluatedProperties.GetValue ("StringAtIndex1"));
var dir = System.IO.Path.GetFullPath (System.IO.Path.Combine (System.IO.Path.GetDirectoryName (p.FileName), "foo"));
Assert.AreEqual (dir, p.EvaluatedProperties.GetValue ("FullPath"));
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs
index 16f9448fc6..13f22b7ce7 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs
@@ -43,6 +43,11 @@ namespace MonoDevelop.Projects
[TestFixture()]
public class SolutionTests: TestBase
{
+ public static string GetMdb (Project p, string file)
+ {
+ return ((DotNetProject)p).GetAssemblyDebugInfoFile (p.Configurations [0].Selector, file);
+ }
+
[Test()]
public void SolutionItemsEvents()
{
@@ -406,11 +411,11 @@ namespace MonoDevelop.Projects
Assert.AreEqual (3, res.BuildCount);
Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
- Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
+ Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb (p, "console-with-libs.exe"))));
Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb (lib1, "library1.dll"))));
Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
// Build the project, but not the references
@@ -449,21 +454,21 @@ namespace MonoDevelop.Projects
Assert.AreEqual (3, res.BuildCount);
Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
- Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
+ Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb (p, "console-with-libs.exe"))));
Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb (lib1, "library1.dll"))));
Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
// Clean the workspace
await ws.Clean (Util.GetMonitor (), ConfigurationSelector.Default);
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
- Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
+ Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb (p, "console-with-libs.exe"))));
Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
- Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll"))));
+ Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb (lib1, "library1.dll"))));
Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
// Build the solution
@@ -473,21 +478,21 @@ namespace MonoDevelop.Projects
Assert.AreEqual (3, res.BuildCount);
Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
- Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
+ Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb (p, "console-with-libs.exe"))));
Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb (lib1, "library1.dll"))));
Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
// Clean the solution
await sol.Clean (Util.GetMonitor (), "Debug");
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
- Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
+ Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb (p, "console-with-libs.exe"))));
Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
- Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll"))));
+ Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb (lib1, "library1.dll"))));
Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
// Build the solution folder
@@ -497,17 +502,18 @@ namespace MonoDevelop.Projects
Assert.AreEqual (1, res.BuildCount);
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
- Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
+ Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb (p, "console-with-libs.exe"))));
Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
- Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll"))));
+ Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb (lib1, "library1.dll"))));
Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
// Clean the solution folder
await folder.Clean (Util.GetMonitor (), (SolutionConfigurationSelector) "Debug");
Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
- Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
+ Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb (lib2, "library2.dll"))));
+ sol.Dispose ();
}
[Test()]
diff --git a/main/tests/UnitTests/TestBase.cs b/main/tests/UnitTests/TestBase.cs
index 0238354c5a..8517e30a1e 100644
--- a/main/tests/UnitTests/TestBase.cs
+++ b/main/tests/UnitTests/TestBase.cs
@@ -101,10 +101,5 @@ namespace UnitTests
{
return Path.Combine (Path.GetTempPath (), "test-file-" + (pcount++) + extension);
}
-
- public static string GetMdb (string file)
- {
- return Runtime.SystemAssemblyService.DefaultRuntime.GetAssemblyDebugInfoFile (file);
- }
}
}
diff --git a/main/tests/test-projects/ConsoleApp-VS2010/ConsoleApplication.csproj b/main/tests/test-projects/ConsoleApp-VS2010/ConsoleApplication.csproj
index ba0d29bea2..c40240e0a4 100755
--- a/main/tests/test-projects/ConsoleApp-VS2010/ConsoleApplication.csproj
+++ b/main/tests/test-projects/ConsoleApp-VS2010/ConsoleApplication.csproj
@@ -11,7 +11,6 @@
<RootNamespace>ConsoleApplication</RootNamespace>
<AssemblyName>ConsoleApplication</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
- <TargetFrameworkProfile>Client</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
diff --git a/main/tests/test-projects/msbuild-tests/functions.csproj b/main/tests/test-projects/msbuild-tests/functions.csproj
index a7bd6042f4..32a51b9a46 100755
--- a/main/tests/test-projects/msbuild-tests/functions.csproj
+++ b/main/tests/test-projects/msbuild-tests/functions.csproj
@@ -9,6 +9,7 @@
<SomeChars>1.0</SomeChars>
<TestFile>files\test.txt</TestFile>
<Substring>$(Prop.Substring(1,3))</Substring>
+ <SubstringIgnoreCase>$(Prop.SubString(1,3))</SubstringIgnoreCase>
<MethodWithParams1>$([System.String]::Format("ab"))</MethodWithParams1>
<MethodWithParams2>$([System.String]::Format("a{0}c",b))</MethodWithParams2>
<MethodWithParams3>$([System.String]::Format("a{0}{1}d",b,c))</MethodWithParams3>
@@ -30,6 +31,8 @@
<SplitLength>$(Prop.Split('d').Length)</SplitLength>
<NewString>$([System.String]::new('$(Prop)').TrimEnd('h'))</NewString>
<CharConvert>$(SomeChars.Replace(".", "").PadRight(3,"0"))</CharConvert>
+ <StringAtIndex0>$(Prop[0])</StringAtIndex0>
+ <StringAtIndex1>$(Prop[1])</StringAtIndex1>
<Path>\a\b\</Path>
<CharTrim>$(Path.Trim (\b))</CharTrim>
<OutDir>foo</OutDir>
diff --git a/version-checks b/version-checks
index 01e5c64e44..e818ca518f 100755
--- a/version-checks
+++ b/version-checks
@@ -17,7 +17,7 @@ DEP[0]=md-addins
DEP_NAME[0]=MDADDINS
DEP_PATH[0]=${top_srcdir}/../md-addins
DEP_MODULE[0]=git@github.com:xamarin/md-addins.git
-DEP_NEEDED_VERSION[0]=1f53985721c7847a52eb49528e8539ad2ee77d84
+DEP_NEEDED_VERSION[0]=4e9e811004bb5922a0a004a49e56db52b95ab48d
DEP_BRANCH_AND_REMOTE[0]="roslyn-ivt origin/roslyn-ivt"
# heap-shot
diff --git a/version.config b/version.config
index ce107197a2..7e1272df69 100644
--- a/version.config
+++ b/version.config
@@ -1,3 +1,3 @@
Version=7.0
-Label=Preview 3
+Label=Preview 4
CompatVersion=7.0