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:
authorLluis Sanchez Gual <lluis@xamarin.com>2015-07-09 23:01:32 +0300
committerLluis Sanchez Gual <lluis@xamarin.com>2015-07-09 23:01:32 +0300
commitc6b52e1b1a02dda11d483e4245d25136d405c9c4 (patch)
tree5bf16fe7b7b6b0ebd348f89285782846d4ab9774
parent600030348ed17c2cb3b0301ce09097ea028397d6 (diff)
parent5c16b401e40fd1c9235d47ace9ab99bd97ad91c3 (diff)
Merge remote-tracking branch 'origin/master' into roslyn
-rw-r--r--.gitmodules4
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/StatusBar.cs74
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateWizard.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs29
-rw-r--r--main/tests/Ide.Tests/FileTransferTests.cs89
-rw-r--r--main/tests/Ide.Tests/Ide.Tests.csproj1
-rw-r--r--main/tests/test-projects/transfer-tests/console-with-libs.sln33
-rw-r--r--main/tests/test-projects/transfer-tests/console-with-libs/Program.cs38
-rw-r--r--main/tests/test-projects/transfer-tests/console-with-libs/Properties/AssemblyInfo.cs51
-rw-r--r--main/tests/test-projects/transfer-tests/console-with-libs/console-with-libs.csproj53
-rw-r--r--main/tests/test-projects/transfer-tests/library1/MyClass.cs41
-rw-r--r--main/tests/test-projects/transfer-tests/library1/Properties/AssemblyInfo.cs51
-rw-r--r--main/tests/test-projects/transfer-tests/library1/library1.csproj45
-rw-r--r--main/tests/test-projects/transfer-tests/library2/MyClass.cs41
-rw-r--r--main/tests/test-projects/transfer-tests/library2/Properties/AssemblyInfo.cs51
-rw-r--r--main/tests/test-projects/transfer-tests/library2/f2/a.cs41
-rw-r--r--main/tests/test-projects/transfer-tests/library2/library2.csproj50
17 files changed, 666 insertions, 41 deletions
diff --git a/.gitmodules b/.gitmodules
index 2cca62b1a3..322dfed8f0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -26,8 +26,8 @@
url = git://github.com/mono/guiunit.git
[submodule "main/external/fsharpbinding"]
path = main/external/fsharpbinding
- url = https://github.com/fsharp/xamarin-monodevelop-fsharp-addin.git
- branch = master
+ url = git://github.com/fsharp/fsharpbinding.git
+ branch = 5.9
[submodule "main/external/nuget-binary"]
path = main/external/nuget-binary
url = git://github.com/mono/nuget-binary.git
diff --git a/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs b/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
index e8083f9e8f..f79521d144 100644
--- a/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
@@ -233,6 +233,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
base.Dispose (disposing);
}
+ NSTrackingArea textFieldArea;
void ReconstructString ()
{
if (string.IsNullOrEmpty (text)) {
@@ -242,6 +243,18 @@ namespace MonoDevelop.MacIntegration.MainToolbar
textField.AttributedStringValue = GetStatusString (text, textColor);
imageView.Image = image;
}
+
+ var width = textField.AttributedStringValue.BoundingRectWithSize (new CGSize (nfloat.MaxValue, textField.Frame.Height),
+ NSStringDrawingOptions.UsesFontLeading | NSStringDrawingOptions.UsesLineFragmentOrigin).Width;
+
+ if (textFieldArea != null)
+ RemoveTrackingArea (textFieldArea);
+
+ if (width > textField.Frame.Width) {
+ textFieldArea = new NSTrackingArea (textField.Frame, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow, this, null);
+ AddTrackingArea (textFieldArea);
+ } else
+ textFieldArea = null;
}
CALayer ProgressLayer {
@@ -676,24 +689,20 @@ namespace MonoDevelop.MacIntegration.MainToolbar
NSPopover popover;
- void CreatePopoverForLayer (CALayer layer)
+ void CreatePopoverCommon (nfloat width, string text)
{
popover = new NSPopover {
ContentViewController = new NSViewController (null, null),
Animates = false
};
- string tooltip = layerToStatus [layer.Name].ToolTip;
- if (tooltip == null)
- return;
+ var attrString = GetPopoverString (text);
- var attrString = GetPopoverString (tooltip);
-
- var height = attrString.BoundingRectWithSize (new CGSize (230, nfloat.MaxValue),
+ var height = attrString.BoundingRectWithSize (new CGSize (width, nfloat.MaxValue),
NSStringDrawingOptions.UsesFontLeading | NSStringDrawingOptions.UsesLineFragmentOrigin).Height;
popover.ContentViewController.View = new NSTextField {
- Frame = new CGRect (0, 0, 230, height + 14),
+ Frame = new CGRect (0, 0, width, height + 14),
DrawsBackground = false,
Bezeled = true,
Editable = false,
@@ -702,7 +711,21 @@ namespace MonoDevelop.MacIntegration.MainToolbar
((NSTextField)popover.ContentViewController.View).AttributedStringValue = attrString;
}
- public void ShowPopoverForLayer (CALayer layer)
+ void CreatePopoverForLayer (CALayer layer)
+ {
+ string tooltip = layerToStatus [layer.Name].ToolTip;
+ if (tooltip == null)
+ return;
+
+ CreatePopoverCommon (230, tooltip);
+ }
+
+ void CreatePopoverForStatusBar ()
+ {
+ CreatePopoverCommon (Frame.Width, textField.AttributedStringValue.Value);
+ }
+
+ void ShowPopoverForLayer (CALayer layer)
{
if (popover != null)
return;
@@ -714,6 +737,15 @@ namespace MonoDevelop.MacIntegration.MainToolbar
popover.Show (layer.Frame, this, NSRectEdge.MinYEdge);
}
+ void ShowPopoverForStatusBar ()
+ {
+ if (popover != null)
+ return;
+
+ CreatePopoverForStatusBar ();
+ popover.Show (textField.Frame, this, NSRectEdge.MinYEdge);
+ }
+
void DestroyPopover ()
{
oldLayer = null;
@@ -722,9 +754,13 @@ namespace MonoDevelop.MacIntegration.MainToolbar
popover = null;
}
- CALayer LayerForEvent (NSEvent theEvent)
+ bool InTextField (CGPoint location)
+ {
+ return textField.IsMouseInRect (location, textField.Frame);
+ }
+
+ CALayer LayerForPoint (CGPoint location)
{
- CGPoint location = ConvertPointFromView (theEvent.LocationInWindow, null);
CALayer layer = Layer.PresentationLayer.HitTest (location);
return layer != null ? layer.ModelLayer : null;
}
@@ -734,7 +770,14 @@ namespace MonoDevelop.MacIntegration.MainToolbar
{
base.MouseEntered (theEvent);
- var layer = LayerForEvent (theEvent);
+ CGPoint location = ConvertPointFromView (theEvent.LocationInWindow, null);
+
+ if (InTextField (location)) {
+ ShowPopoverForStatusBar ();
+ return;
+ }
+
+ var layer = LayerForPoint (location);
if (layer == null)
return;
@@ -755,16 +798,15 @@ namespace MonoDevelop.MacIntegration.MainToolbar
{
base.MouseExited (theEvent);
- if (oldLayer != null) {
- DestroyPopover ();
- }
+ DestroyPopover ();
}
public override void MouseDown (NSEvent theEvent)
{
base.MouseDown (theEvent);
- var layer = LayerForEvent (theEvent);
+ CGPoint location = ConvertPointFromView (theEvent.LocationInWindow, null);
+ var layer = LayerForPoint (location);
if (layer != null && layer.Name != null) {
Xwt.PointerButton button = Xwt.PointerButton.Left;
switch ((NSEventType)(long)theEvent.ButtonNumber) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateWizard.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateWizard.cs
index d352b62f42..de44190d15 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateWizard.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateWizard.cs
@@ -70,23 +70,16 @@ namespace MonoDevelop.Ide.Templates
void UpdateSupportedParameters (string parameters)
{
- if (String.IsNullOrEmpty (parameters)) {
- supportedParameters = null;
- return;
- }
-
supportedParameters = new List<string> ();
- foreach (string part in parameters.Split (new [] {',', ';'}, StringSplitOptions.RemoveEmptyEntries)) {
- supportedParameters.Add (part.Trim ());
+ if (!string.IsNullOrEmpty (parameters)) {
+ foreach (string part in parameters.Split (new [] {',', ';'}, StringSplitOptions.RemoveEmptyEntries)) {
+ supportedParameters.Add (part.Trim ());
+ }
}
}
public bool IsSupportedParameter (string name)
{
- if (supportedParameters == null) {
- return true;
- }
-
return supportedParameters.Contains (name);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
index beabe35aae..aec1f0bf9e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
@@ -1779,9 +1779,15 @@ namespace MonoDevelop.Ide
FileService.DeleteFile (filename);
}
return true;
- }
-
+ }
+
public void TransferFiles (ProgressMonitor monitor, Project sourceProject, FilePath sourcePath, Project targetProject,
+ FilePath targetPath, bool removeFromSource, bool copyOnlyProjectFiles)
+ {
+ TransferFilesInternal (monitor, sourceProject, sourcePath, targetProject, targetPath, removeFromSource, copyOnlyProjectFiles);
+ }
+
+ internal static void TransferFilesInternal (ProgressMonitor monitor, Project sourceProject, FilePath sourcePath, Project targetProject,
FilePath targetPath, bool removeFromSource, bool copyOnlyProjectFiles)
{
// When transfering directories, targetPath is the directory where the source
@@ -1803,11 +1809,9 @@ namespace MonoDevelop.Ide
bool sourceIsFolder = Directory.Exists (sourcePath);
- bool copyingFolder = sourceIsFolder && (
+ bool movingFolder = removeFromSource && sourceIsFolder && (
!copyOnlyProjectFiles ||
- IsDirectoryHierarchyEmpty (sourcePath));
-
- bool movingFolder = removeFromSource && copyingFolder;
+ ContainsOnlyProjectFiles (sourcePath, sourceProject));
// We need to remove all files + directories from the source project
// but when dealing with the VCS addins we need to process only the
@@ -1972,8 +1976,8 @@ namespace MonoDevelop.Ide
sourceProject.Files.Remove (v);
}
- // Moving an empty folder. A new folder object has to be added to the project.
- if ((movingFolder || copyingFolder) && !targetProject.Files.GetFilesInVirtualPath (targetPath).Any ()) {
+ // Moving or copying an empty folder. A new folder object has to be added to the project.
+ if (sourceIsFolder && !targetProject.Files.GetFilesInVirtualPath (targetPath).Any ()) {
var folderFile = new ProjectFile (targetPath) { Subtype = Subtype.Directory };
targetProject.Files.Add (folderFile);
}
@@ -2037,7 +2041,7 @@ namespace MonoDevelop.Ide
return " (" + string.Format (sc, n) + ")";
}
- void GetAllFilesRecursive (string path, List<ProjectFile> files)
+ static void GetAllFilesRecursive (string path, List<ProjectFile> files)
{
if (File.Exists (path)) {
files.Add (new ProjectFile (path));
@@ -2053,11 +2057,12 @@ namespace MonoDevelop.Ide
}
}
- bool IsDirectoryHierarchyEmpty (string path)
+ static bool ContainsOnlyProjectFiles (string path, Project project)
{
- if (Directory.GetFiles(path).Length > 0) return false;
+ if (Directory.GetFiles (path).Any (f => project.Files.GetFile (f) == null))
+ return false;
foreach (string dir in Directory.GetDirectories (path))
- if (!IsDirectoryHierarchyEmpty (dir)) return false;
+ if (!ContainsOnlyProjectFiles (dir, project)) return false;
return true;
}
diff --git a/main/tests/Ide.Tests/FileTransferTests.cs b/main/tests/Ide.Tests/FileTransferTests.cs
new file mode 100644
index 0000000000..1afc72e888
--- /dev/null
+++ b/main/tests/Ide.Tests/FileTransferTests.cs
@@ -0,0 +1,89 @@
+//
+// FileTransferTests.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@xamarin.com>
+//
+// Copyright (c) 2015 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 UnitTests;
+using NUnit.Framework;
+using MonoDevelop.Projects;
+using MonoDevelop.Ide;
+using System.IO;
+using System.Threading.Tasks;
+
+namespace Ide.Tests
+{
+ public class FileTransferTests: TestBase
+ {
+ [Test]
+ public async Task MoveEmptyFolder ()
+ {
+ string solFile = Util.GetSampleProject ("transfer-tests", "console-with-libs.sln");
+ var sol = (Solution) await MonoDevelop.Projects.Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var lib1 = (DotNetProject) sol.FindProjectByName ("library1");
+ var lib2 = (DotNetProject) sol.FindProjectByName ("library2");
+
+ var sourceDir = lib2.ItemDirectory.Combine ("f2-empty");
+ var targetDir = lib1.ItemDirectory.Combine ("f2-empty");
+
+ Assert.IsTrue (lib2.Files.GetFile (sourceDir) != null);
+
+ ProjectOperations.TransferFilesInternal (Util.GetMonitor (), lib2, sourceDir, lib1, targetDir, true, true);
+
+ Assert.IsTrue (Directory.Exists (targetDir));
+ Assert.IsFalse (Directory.Exists (sourceDir));
+
+ Assert.IsTrue (lib1.Files.GetFile (targetDir) != null);
+ Assert.IsFalse (lib2.Files.GetFile (sourceDir) != null);
+ }
+
+ [Test]
+ public async Task MoveFolder ()
+ {
+ string solFile = Util.GetSampleProject ("transfer-tests", "console-with-libs.sln");
+ var sol = (Solution) await MonoDevelop.Projects.Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var lib1 = (DotNetProject) sol.FindProjectByName ("library1");
+ var lib2 = (DotNetProject) sol.FindProjectByName ("library2");
+
+ var sourceDir = lib2.ItemDirectory.Combine ("f2");
+ var targetDir = lib1.ItemDirectory.Combine ("f2");
+ var sourceFile = sourceDir.Combine ("a.cs");
+ var targetFile = targetDir.Combine ("a.cs");
+
+ Assert.IsTrue (lib2.Files.GetFile (sourceDir) != null);
+ Assert.IsTrue (lib2.Files.GetFile (sourceFile) != null);
+
+ ProjectOperations.TransferFilesInternal (Util.GetMonitor (), lib2, sourceDir, lib1, targetDir, true, true);
+
+ Assert.IsTrue (Directory.Exists (targetDir));
+ Assert.IsTrue (File.Exists (targetFile));
+ Assert.IsFalse (Directory.Exists (sourceDir));
+
+ Assert.IsTrue (lib1.Files.GetFile (targetDir) != null);
+ Assert.IsTrue (lib1.Files.GetFile (targetFile) != null);
+ Assert.IsFalse (lib2.Files.GetFile (sourceDir) != null);
+ Assert.IsFalse (lib2.Files.GetFile (sourceFile) != null);
+ }
+ }
+}
+
diff --git a/main/tests/Ide.Tests/Ide.Tests.csproj b/main/tests/Ide.Tests/Ide.Tests.csproj
index 48cd1216b9..de1268a5c4 100644
--- a/main/tests/Ide.Tests/Ide.Tests.csproj
+++ b/main/tests/Ide.Tests/Ide.Tests.csproj
@@ -37,6 +37,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ProjectTemplateTests.cs" />
+ <Compile Include="FileTransferTests.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
diff --git a/main/tests/test-projects/transfer-tests/console-with-libs.sln b/main/tests/test-projects/transfer-tests/console-with-libs.sln
new file mode 100644
index 0000000000..3a1c54554b
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/console-with-libs.sln
@@ -0,0 +1,33 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "console-with-libs", "console-with-libs\console-with-libs.csproj", "{EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "library1", "library1\library1.csproj", "{7F63CBE6-2FE7-47A7-8930-EA078DA05062}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "library2", "library2\library2.csproj", "{42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F63CBE6-2FE7-47A7-8930-EA078DA05062}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F63CBE6-2FE7-47A7-8930-EA078DA05062}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F63CBE6-2FE7-47A7-8930-EA078DA05062}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F63CBE6-2FE7-47A7-8930-EA078DA05062}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(MonoDevelopProperties) = preSolution
+ StartupItem = console-with-libs\console-with-libs.csproj
+ name = console-with-libs
+ EndGlobalSection
+EndGlobal
diff --git a/main/tests/test-projects/transfer-tests/console-with-libs/Program.cs b/main/tests/test-projects/transfer-tests/console-with-libs/Program.cs
new file mode 100644
index 0000000000..e6ef050783
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/console-with-libs/Program.cs
@@ -0,0 +1,38 @@
+// Main.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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;
+
+namespace consolewithlib
+{
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ Console.WriteLine("Hello World!");
+ }
+ }
+}
diff --git a/main/tests/test-projects/transfer-tests/console-with-libs/Properties/AssemblyInfo.cs b/main/tests/test-projects/transfer-tests/console-with-libs/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..b0f5040c6e
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/console-with-libs/Properties/AssemblyInfo.cs
@@ -0,0 +1,51 @@
+// AssemblyInfo.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("console-with-libs")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// If the build and revision are set to '*' they will be updated automatically.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
diff --git a/main/tests/test-projects/transfer-tests/console-with-libs/console-with-libs.csproj b/main/tests/test-projects/transfer-tests/console-with-libs/console-with-libs.csproj
new file mode 100644
index 0000000000..403bc71c94
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/console-with-libs/console-with-libs.csproj
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{EAB80A13-FC3E-4E53-8950-E6B9F19E4C90}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AssemblyName>console-with-libs</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ <Execution>
+ <Execution clr-version="Net_2_0" xmlns="" />
+ </Execution>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" xmlns="" />
+ </Execution>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\library1\library1.csproj">
+ <Project>{7F63CBE6-2FE7-47A7-8930-EA078DA05062}</Project>
+ <Name>library1</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\library2\library2.csproj">
+ <Project>{42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}</Project>
+ <Name>library2</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>
diff --git a/main/tests/test-projects/transfer-tests/library1/MyClass.cs b/main/tests/test-projects/transfer-tests/library1/MyClass.cs
new file mode 100644
index 0000000000..789d1b07ae
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library1/MyClass.cs
@@ -0,0 +1,41 @@
+// MyClass.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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;
+
+namespace library1
+{
+
+
+ public class MyClass
+ {
+
+ public MyClass()
+ {
+ }
+ }
+}
diff --git a/main/tests/test-projects/transfer-tests/library1/Properties/AssemblyInfo.cs b/main/tests/test-projects/transfer-tests/library1/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..dbc7743054
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library1/Properties/AssemblyInfo.cs
@@ -0,0 +1,51 @@
+// AssemblyInfo.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("library1")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// If the build and revision are set to '*' they will be updated automatically.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
diff --git a/main/tests/test-projects/transfer-tests/library1/library1.csproj b/main/tests/test-projects/transfer-tests/library1/library1.csproj
new file mode 100644
index 0000000000..fd1abedb1d
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library1/library1.csproj
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{7F63CBE6-2FE7-47A7-8930-EA078DA05062}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AssemblyName>library1</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" xmlns="" />
+ </Execution>
+ <ConsolePause>false</ConsolePause>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" xmlns="" />
+ </Execution>
+ <ConsolePause>false</ConsolePause>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="MyClass.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/main/tests/test-projects/transfer-tests/library2/MyClass.cs b/main/tests/test-projects/transfer-tests/library2/MyClass.cs
new file mode 100644
index 0000000000..47ce7c5a20
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library2/MyClass.cs
@@ -0,0 +1,41 @@
+// MyClass.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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;
+
+namespace library2
+{
+
+
+ public class MyClass
+ {
+
+ public MyClass()
+ {
+ }
+ }
+}
diff --git a/main/tests/test-projects/transfer-tests/library2/Properties/AssemblyInfo.cs b/main/tests/test-projects/transfer-tests/library2/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..6eb8385596
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library2/Properties/AssemblyInfo.cs
@@ -0,0 +1,51 @@
+// AssemblyInfo.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("library2")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// If the build and revision are set to '*' they will be updated automatically.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
diff --git a/main/tests/test-projects/transfer-tests/library2/f2/a.cs b/main/tests/test-projects/transfer-tests/library2/f2/a.cs
new file mode 100644
index 0000000000..47ce7c5a20
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library2/f2/a.cs
@@ -0,0 +1,41 @@
+// MyClass.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@novell.com>
+//
+// Copyright (c) 2008 Novell, Inc (http://www.novell.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;
+
+namespace library2
+{
+
+
+ public class MyClass
+ {
+
+ public MyClass()
+ {
+ }
+ }
+}
diff --git a/main/tests/test-projects/transfer-tests/library2/library2.csproj b/main/tests/test-projects/transfer-tests/library2/library2.csproj
new file mode 100644
index 0000000000..c32de35edc
--- /dev/null
+++ b/main/tests/test-projects/transfer-tests/library2/library2.csproj
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{42A9AAF1-DCB8-4F3F-9B20-5F17D4EAAD20}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AssemblyName>library2</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" xmlns="" />
+ </Execution>
+ <ConsolePause>false</ConsolePause>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" xmlns="" />
+ </Execution>
+ <ConsolePause>false</ConsolePause>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="MyClass.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="f2\a.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="f2\" />
+ <Folder Include="f2-empty\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file