diff options
author | Lluis Sanchez <llsan@microsoft.com> | 2018-12-14 12:58:38 +0300 |
---|---|---|
committer | Lluis Sanchez <llsan@microsoft.com> | 2018-12-14 12:58:38 +0300 |
commit | 169ddeafec18417583feb5fd6dde31c1b4da4515 (patch) | |
tree | 726c7a42b6ccf5d21dcb2f14330e7dad964c2944 | |
parent | 2bafc53724a1ef5ed7a8e44815b84ce783aa05a0 (diff) | |
parent | ce1db18fc957dbd79b54ee55bb7737c7377b9d61 (diff) |
Merge remote-tracking branch 'origin/master' into release-8.0
12 files changed, 118 insertions, 15 deletions
diff --git a/main/build/MacOSX/BinaryCompatBaseline.txt b/main/build/MacOSX/BinaryCompatBaseline.txt index aa2737e326..50dea197c6 100644 --- a/main/build/MacOSX/BinaryCompatBaseline.txt +++ b/main/build/MacOSX/BinaryCompatBaseline.txt @@ -178,12 +178,5 @@ In assembly 'Xamarin.AzureSupport, Version=1.0.0.0, Culture=neutral, PublicKeyTo In assembly 'Xamarin.AzureSupport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null': unable to resolve reference to 'Xamarin.Ide.Identity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
In assembly 'Xamarin.Ide.Mac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null': unable to resolve reference to 'MonoTouch.Hosting, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
In assembly 'Xamarin.iOSDesigner.MonoDevelop, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null': unable to resolve reference to 'MonoTouch.Hosting, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference '!0[] System.Buffers.ArrayPool`1<System.Byte>::Rent(System.Int32)' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference 'System.Boolean System.Buffers.MemoryHandle::get_HasPointer()' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference 'System.Buffers.ArrayPool`1<!0> System.Buffers.ArrayPool`1<System.Byte>::get_Shared()' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference 'System.Buffers.MemoryHandle System.ReadOnlyMemory`1<System.Byte>::Retain(System.Boolean)' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference 'System.Net.Http.Headers.HttpHeaderKind System.Net.Http.Headers.HttpHeaders::GetKnownHeaderKind(System.String)' from assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference 'System.Threading.Tasks.Task System.IO.Stream::WriteAsync(System.ReadOnlyMemory`1<System.Byte>,System.Threading.CancellationToken)' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve member reference 'System.Void System.Buffers.ArrayPool`1<System.Byte>::Return(!0[],System.Boolean)' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
-In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve type reference 'System.Buffers.ArrayPool`1' in 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
In assembly 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065': Unable to resolve type reference 'System.Net.Http.Headers.HttpHeaderKind' in 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
diff --git a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs index ec99923dc8..45b298774a 100644 --- a/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs +++ b/main/external/fsharpbinding/MonoDevelop.FSharpBinding/FSharpProject.fs @@ -27,6 +27,9 @@ module Project = type FSharpProject() as self = inherit DotNetProject() + do + self.RoslynLanguageName <- Microsoft.CodeAnalysis.LanguageNames.FSharp + // Keep the platforms combo of CodeGenerationPanelWidget in sync with this list let supportedPlatforms = [| "anycpu"; "x86"; "x64"; "Itanium" |] diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/RestoreTestBase.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/RestoreTestBase.cs index 108d690e2c..d32b11c11f 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/RestoreTestBase.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/RestoreTestBase.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.IO; using System.Linq; using System.Threading; @@ -92,10 +93,6 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers protected static Task RestoreDotNetCoreNuGetPackages (Solution solution) { var solutionManager = new MonoDevelopSolutionManager (solution); - var context = new FakeNuGetProjectContext { - LogToConsole = true - }; - var restoreManager = new MonoDevelopBuildIntegratedRestorer (solutionManager); var projects = solution.GetAllDotNetProjects ().Select (p => new DotNetCoreNuGetProject (p)); @@ -120,5 +117,23 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers return context; } + + protected class PackagManagementEventsConsoleLogger : IDisposable + { + public PackagManagementEventsConsoleLogger () + { + PackageManagementServices.PackageManagementEvents.PackageOperationMessageLogged += PackageOperationMessageLogged; + } + + public void Dispose () + { + PackageManagementServices.PackageManagementEvents.PackageOperationMessageLogged -= PackageOperationMessageLogged; + } + + void PackageOperationMessageLogged (object sender, PackageOperationMessageLoggedEventArgs e) + { + Console.WriteLine (e.Message.ToString ()); + } + } } } diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreRestoreTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreRestoreTests.cs index 0a2b5da798..c8a043cf6c 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreRestoreTests.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/DotNetCoreRestoreTests.cs @@ -24,6 +24,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -58,5 +59,21 @@ namespace MonoDevelop.PackageManagement.Tests Assert.AreEqual ("4.5.0", fsharpCore.Version); } + + [Test] + public async Task OfflineRestore_NetCore21Project () + { + FilePath solutionFileName = Util.GetSampleProject ("restore-netcore-offline", "dotnetcoreconsole.sln"); + solution = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName); + var project = solution.GetAllDotNetProjects ().Single (); + + using (var logger = new PackagManagementEventsConsoleLogger ()) { + await RestoreDotNetCoreNuGetPackages (solution); + } + + var packagesDirectory = solution.BaseDirectory.Combine ("packages-cache"); + Assert.IsFalse (Directory.Exists (packagesDirectory)); + Assert.IsTrue (File.Exists (project.BaseDirectory.Combine ("obj", "project.assets.json"))); + } } } diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/FileWatcherService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/FileWatcherService.cs index 76a7c8ee26..7d9dca37aa 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/FileWatcherService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/FileWatcherService.cs @@ -284,7 +284,7 @@ namespace MonoDevelop.Projects // The native file watcher sometimes generates a Changed, Created and Deleted event in // that order from a single native file event. So check the file has been deleted before raising // a FileRemoved event. - if (!File.Exists (e.FullPath)) + if (!File.Exists (e.FullPath) && !Directory.Exists (e.FullPath)) FileService.NotifyFileRemoved (e.FullPath); } diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs index 9df75cfa4a..c08e57f1de 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs @@ -4569,7 +4569,7 @@ namespace MonoDevelop.Projects void OnFileDeletedExternally (string fileName) { - if (File.Exists (fileName)) { + if (File.Exists (fileName) || Directory.Exists (fileName)) { // File has not been deleted. The delete event could have been due to // the file being saved. Saving with TextFileUtility will result in // FileService.SystemRename being called to move a temporary file diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs index 84f0fa4273..ac19f26664 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs @@ -545,6 +545,10 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad [CommandHandler (ProjectCommands.NewFolder)] public async void AddNewFolder () { + // Expand the project node before adding the file to the project. This fixes a problem where if the + // project node is collapsed and Refresh was used the project node would not expand and the new folder + // node would not be selected. + CurrentNode.Expanded = true; Project project = CurrentNode.GetParentDataItem (typeof(Project), true) as Project; string baseFolderPath = GetFolderPath (CurrentNode.DataItem); @@ -565,7 +569,6 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad newFolder.Subtype = Subtype.Directory; project.Files.Add (newFolder); - CurrentNode.Expanded = true; Tree.AddNodeInsertCallback (new ProjectFolder (directoryName, project), new TreeNodeCallback (OnFileInserted)); await IdeApp.ProjectOperations.SaveAsync (project); diff --git a/main/tests/MonoDevelop.Core.Tests/MonoDevelop.Projects/FileWatcherTests.cs b/main/tests/MonoDevelop.Core.Tests/MonoDevelop.Projects/FileWatcherTests.cs index 489aa5c847..8d129c8122 100644 --- a/main/tests/MonoDevelop.Core.Tests/MonoDevelop.Projects/FileWatcherTests.cs +++ b/main/tests/MonoDevelop.Core.Tests/MonoDevelop.Projects/FileWatcherTests.cs @@ -889,5 +889,44 @@ namespace MonoDevelop.Projects Assert.AreEqual (1, directories.Count); Assert.IsTrue (directories.First () == sol.BaseDirectory); } + + [Test] + public async Task CreateDirectory_AddFolderItemToProject_DirectoryDeletedEventIsNotFired () + { + FilePath rootProject = Util.GetSampleProject ("FileWatcherTest", "Root.csproj"); + string solFile = rootProject.ParentDirectory.Combine ("FileWatcherTest", "FileWatcherTest2.sln"); + sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile); + var p = (DotNetProject)sol.Items [0]; + p.UseAdvancedGlobSupport = true; + p.UseFileWatcher = true; + var file = p.Files.First (f => f.FilePath.FileName == "MyClass.cs"); + ClearFileEventsCaptured (); + await FileWatcherService.Add (sol); + + var newDirectory = p.BaseDirectory.Combine ("NewFolder"); + Directory.CreateDirectory (newDirectory); + + var newFolderItem = new ProjectFile (newDirectory); + newFolderItem.Subtype = Subtype.Directory; + p.Files.Add (newFolderItem); + + var newDirectory2 = p.BaseDirectory.Combine ("NewFolder2"); + var newFolderItem2 = new ProjectFile (newDirectory2); + newFolderItem2.Subtype = Subtype.Directory; + p.Files.Add (newFolderItem2); + + Directory.CreateDirectory (newDirectory2); + + await p.SaveAsync (Util.GetMonitor ()); + + TextFileUtility.WriteText (file.FilePath, string.Empty, Encoding.UTF8); + await WaitForFileChanged (file.FilePath); + + AssertFileChanged (file.FilePath); + Assert.IsTrue (p.Files.Contains (newFolderItem)); + Assert.IsTrue (p.Files.Contains (newFolderItem2)); + Assert.IsFalse (filesRemoved.Any (f => f.FileName == newDirectory)); + Assert.IsFalse (filesRemoved.Any (f => f.FileName == newDirectory2)); + } } } diff --git a/main/tests/test-projects/restore-netcore-offline/NuGet.config b/main/tests/test-projects/restore-netcore-offline/NuGet.config new file mode 100644 index 0000000000..cd2b8fdaa0 --- /dev/null +++ b/main/tests/test-projects/restore-netcore-offline/NuGet.config @@ -0,0 +1,8 @@ +<configuration> + <config> + <add key="globalPackagesFolder" value="packages-cache" /> + </config> + <packageSources> + <clear /> + </packageSources> +</configuration>
\ No newline at end of file diff --git a/main/tests/test-projects/restore-netcore-offline/dotnetcoreconsole.csproj b/main/tests/test-projects/restore-netcore-offline/dotnetcoreconsole.csproj new file mode 100755 index 0000000000..1915f6bad9 --- /dev/null +++ b/main/tests/test-projects/restore-netcore-offline/dotnetcoreconsole.csproj @@ -0,0 +1,8 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp2.1</TargetFramework> + </PropertyGroup> + +</Project>
\ No newline at end of file diff --git a/main/tests/test-projects/restore-netcore-offline/dotnetcoreconsole.sln b/main/tests/test-projects/restore-netcore-offline/dotnetcoreconsole.sln new file mode 100644 index 0000000000..3436bfb1aa --- /dev/null +++ b/main/tests/test-projects/restore-netcore-offline/dotnetcoreconsole.sln @@ -0,0 +1,17 @@ +
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dotnetcoreconsole", "dotnetcoreconsole.csproj", "{8E8688F7-4FB5-4E0C-A64D-DA2B8E039CC5}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8E8688F7-4FB5-4E0C-A64D-DA2B8E039CC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8E8688F7-4FB5-4E0C-A64D-DA2B8E039CC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8E8688F7-4FB5-4E0C-A64D-DA2B8E039CC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8E8688F7-4FB5-4E0C-A64D-DA2B8E039CC5}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/version-checks b/version-checks index 3183007de0..ffdbb2af0c 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]=2fb8cade4af6af205dcda4a17ce9c007dfa4ed4f +DEP_NEEDED_VERSION[0]=c768460c0306535b7b832464a171b376c599d679 DEP_BRANCH_AND_REMOTE[0]="release-8.0 origin/release-8.0" # heap-shot |