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 <lluis@xamarin.com>2014-04-01 15:01:48 +0400
committerLluis Sanchez <lluis@xamarin.com>2014-04-01 15:01:48 +0400
commitc063a2372868cca03c32082551165973cb4da298 (patch)
treea01ef92359a2755a8d9e53fa1f28a7e46e6a23c6 /main/src/core/MonoDevelop.Core
parente57b52f673ef75ef7597ce195af6d89dc2761950 (diff)
[Core] Improve support for shared assets projects
Moved classes for handling shared projects to its own namespace. Added extensions for handling shared project references.
Diffstat (limited to 'main/src/core/MonoDevelop.Core')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml14
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/SharedProjectMSBuildHandler.cs37
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs128
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildExtension.cs92
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildHandler.cs129
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SharedProject.cs43
7 files changed, 363 insertions, 86 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml
index 6562e0e5d8..6882767eba 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml
@@ -146,7 +146,7 @@
</ExtensionPoint>
<ExtensionPoint path = "/MonoDevelop/ProjectModel/MSBuildExtensions" name = "MSBuild Extensions">
- <ExtensionNode objectType="MonoDevelop.Projects.Formats.MSBuild.MSBuildExtension"/>
+ <ExtensionNode name="Class" objectType="MonoDevelop.Projects.Formats.MSBuild.MSBuildExtension"/>
</ExtensionPoint>
<ExtensionPoint path = "/MonoDevelop/ProjectModel/MonoDocSources" name = "MonoDoc Sources">
@@ -274,10 +274,16 @@
type = "MonoDevelop.Projects.CompiledAssemblyProject"
handlerType = "MonoDevelop.Projects.Formats.MSBuild.CompiledAssemblyProjectMSBuildHandler" />
<SolutionItem guid = "{D954291E-2A0B-460D-934E-DC6B0785DB48}"
- type = "MonoDevelop.Projects.SharedProject"
- handlerType = "MonoDevelop.Projects.Formats.MSBuild.SharedProjectMSBuildHandler" />
+ type = "MonoDevelop.Projects.SharedAssetsProjects.SharedAssetsProject"
+ extension = "shproj"
+ handlerType = "MonoDevelop.Projects.SharedAssetsProjects.SharedAssetsProjectMSBuildHandler" />
</Extension>
-
+
+ <Extension path = "/MonoDevelop/ProjectModel/MSBuildExtensions">
+ <Class class="MonoDevelop.Projects.SharedAssetsProjects.SharedAssetsProjectMSBuildExtension"/>
+ </Extension>
+
+
<!--
Some info from:
http://www.mztools.com/articles/2008/mz2008017.aspx
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
index 1874e0e000..c9b76ad979 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
@@ -456,9 +456,10 @@
<Compile Include="MonoDevelop.Core.Logging\AssertLoggingTraceListener.cs" />
<Compile Include="MonoDevelop.Projects.Formats.MD1\MD1ProjectService.cs" />
<Compile Include="MonoDevelop.Projects\UnknownProject.cs" />
- <Compile Include="MonoDevelop.Projects\SharedProject.cs" />
- <Compile Include="MonoDevelop.Projects.Formats.MSBuild\SharedProjectMSBuildHandler.cs" />
<Compile Include="MonoDevelop.Projects.Formats.MSBuild\MSBuildExtension.cs" />
+ <Compile Include="MonoDevelop.Projects.SharedAssetsProjects\SharedAssetsProject.cs" />
+ <Compile Include="MonoDevelop.Projects.SharedAssetsProjects\SharedAssetsProjectMSBuildExtension.cs" />
+ <Compile Include="MonoDevelop.Projects.SharedAssetsProjects\SharedAssetsProjectMSBuildHandler.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
@@ -563,6 +564,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="MonoDevelop.Core.Web\" />
+ <Folder Include="MonoDevelop.Projects.SharedAssetsProjects\" />
</ItemGroup>
<Target Name="BeforeBuild" Inputs="BuildVariables.cs.in; ..\..\..\..\version.config" Outputs="BuildVariables.cs">
<Csc Sources="BuildVariables.gen.cs" OutputAssembly="BuildVariables.gen.exe" />
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/SharedProjectMSBuildHandler.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/SharedProjectMSBuildHandler.cs
deleted file mode 100644
index c64e3a6b0c..0000000000
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/SharedProjectMSBuildHandler.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// SharedProjectMSBuildHandler.cs
-//
-// Author:
-// Lluis Sanchez <lluis@xamarin.com>
-//
-// Copyright (c) 2014 Xamarin Inc
-//
-// 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 MonoDevelop.Projects.Formats.MSBuild
-{
- public class SharedProjectMSBuildHandler: MSBuildProjectHandler
- {
- public SharedProjectMSBuildHandler ()
- {
- }
- }
-}
-
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs
new file mode 100644
index 0000000000..76de963cba
--- /dev/null
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs
@@ -0,0 +1,128 @@
+//
+// SharedProject.cs
+//
+// Author:
+// Lluis Sanchez <lluis@xamarin.com>
+//
+// Copyright (c) 2014 Xamarin Inc
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using MonoDevelop.Core;
+using System.IO;
+
+namespace MonoDevelop.Projects.SharedAssetsProjects
+{
+ public class SharedAssetsProject: Project
+ {
+ Solution currentSolution;
+
+ public SharedAssetsProject ()
+ {
+ }
+
+ public string DefaultNamespace { get; set; }
+
+ public override string ProjectType {
+ get {
+ return "SharedAssets";
+ }
+ }
+
+ public override string[] SupportedLanguages {
+ get {
+ return new [] {"C#"};
+ }
+ }
+
+ protected override BuildResult OnBuild (MonoDevelop.Core.IProgressMonitor monitor, ConfigurationSelector configuration)
+ {
+ return new BuildResult ();
+ }
+
+ internal protected override bool OnGetCanRunTarget (string target, ConfigurationSelector configuration)
+ {
+ return false;
+ }
+
+ protected override void OnBoundToSolution ()
+ {
+ if (currentSolution != null) {
+ currentSolution.ReferenceAddedToProject -= HandleReferenceAddedToProject;
+ currentSolution.ReferenceRemovedFromProject -= HandleReferenceRemovedFromProject;
+ }
+
+ base.OnBoundToSolution ();
+
+ ParentSolution.ReferenceAddedToProject += HandleReferenceAddedToProject;
+ ParentSolution.ReferenceRemovedFromProject += HandleReferenceRemovedFromProject;
+ currentSolution = ParentSolution;
+ }
+
+ public override void Dispose ()
+ {
+ base.Dispose ();
+ if (currentSolution != null) {
+ currentSolution.ReferenceAddedToProject -= HandleReferenceAddedToProject;
+ currentSolution.ReferenceRemovedFromProject -= HandleReferenceRemovedFromProject;
+ }
+ }
+
+ void HandleReferenceRemovedFromProject (object sender, ProjectReferenceEventArgs e)
+ {
+ if (e.ProjectReference.ReferenceType == ReferenceType.Project && e.ProjectReference.Reference == Name) {
+ foreach (var f in Files) {
+ var pf = e.Project.GetProjectFile (f.FilePath);
+ if ((pf.Flags & ProjectItemFlags.DontPersist) != 0)
+ e.Project.Files.Remove (pf.FilePath);
+ }
+ }
+ }
+
+ void HandleReferenceAddedToProject (object sender, ProjectReferenceEventArgs e)
+ {
+ if (e.ProjectReference.ReferenceType == ReferenceType.Project && e.ProjectReference.Reference == Name) {
+ e.ProjectReference.Flags = ProjectItemFlags.DontPersist;
+ foreach (var f in Files) {
+ var cf = (ProjectFile) f.Clone ();
+ cf.Flags |= ProjectItemFlags.DontPersist | ProjectItemFlags.Hidden;
+ e.Project.Files.Add (cf);
+ e.ProjectReference.SetItemsProjectPath (Path.ChangeExtension (FileName, ".projitems"));
+ }
+ }
+ }
+ }
+
+ internal static class SharedAssetsProjectExtensions
+ {
+ public static string GetItemsProjectPath (this ProjectReference r)
+ {
+ return (string) r.ExtendedProperties ["MSBuild.SharedAssetsProject"];
+ }
+
+ public static void SetItemsProjectPath (this ProjectReference r, string path)
+ {
+ r.ExtendedProperties ["MSBuild.SharedAssetsProject"] = path;
+ }
+ }
+}
+
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildExtension.cs
new file mode 100644
index 0000000000..dc9f56214b
--- /dev/null
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildExtension.cs
@@ -0,0 +1,92 @@
+//
+// SharedAssetsProjectMSBuildExtension.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@xamarin.com>
+//
+// Copyright (c) 2014 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.Linq;
+using System.IO;
+using MonoDevelop.Core;
+using System.Collections.Generic;
+using MonoDevelop.Projects.Formats.MSBuild;
+
+namespace MonoDevelop.Projects.SharedAssetsProjects
+{
+ class SharedAssetsProjectMSBuildExtension: MSBuildExtension
+ {
+ public override void LoadProject (IProgressMonitor monitor, SolutionEntityItem item, MSBuildProject msproject)
+ {
+ base.LoadProject (monitor, item, msproject);
+
+ var dnp = item as DotNetProject;
+ if (dnp == null)
+ return;
+
+ foreach (var sp in msproject.Imports.Where (im => im.Label == "Shared" && im.Project.EndsWith (".projitems"))) {
+ var projitemsFile = sp.Project;
+ if (!string.IsNullOrEmpty (projitemsFile)) {
+ projitemsFile = MSBuildProjectService.FromMSBuildPath (item.ItemDirectory, projitemsFile);
+ projitemsFile = Path.Combine (Path.GetDirectoryName (msproject.FileName), projitemsFile);
+ if (File.Exists (projitemsFile)) {
+ MSBuildSerializer iser = Handler.CreateSerializer ();
+ iser.SerializationContext.BaseFile = projitemsFile;
+ iser.SerializationContext.ProgressMonitor = monitor;
+ MSBuildProject p = new MSBuildProject ();
+ p.Load (projitemsFile);
+ Handler.LoadProjectItems (p, iser, ProjectItemFlags.Hidden | ProjectItemFlags.DontPersist);
+ var r = new ProjectReference (ReferenceType.Project, Path.GetFileNameWithoutExtension (projitemsFile));
+ r.Flags = ProjectItemFlags.DontPersist;
+ r.SetItemsProjectPath (projitemsFile);
+ dnp.References.Add (r);
+ }
+ }
+ }
+ }
+
+ public override void SaveProject (IProgressMonitor monitor, SolutionEntityItem item, MSBuildProject project)
+ {
+ base.SaveProject (monitor, item, project);
+ var dnp = item as DotNetProject;
+ if (dnp == null)
+ return;
+ HashSet<string> validProjitems = new HashSet<string> ();
+ foreach (var r in dnp.References.Where (rp => rp.ReferenceType == ReferenceType.Project)) {
+ var ip = r.GetItemsProjectPath ();
+ if (!string.IsNullOrEmpty (ip)) {
+ ip = MSBuildProjectService.ToMSBuildPath (item.ItemDirectory, ip);
+ validProjitems.Add (ip);
+ if (!project.Imports.Any (im => im.Project == ip)) {
+ var im = project.AddNewImport (ip);
+ im.Label = "Shared";
+ im.Condition = "Exists('" + ip + "')";
+ }
+ }
+ }
+ foreach (var im in project.Imports) {
+ if (im.Label == "Shared" && im.Project.EndsWith (".projitems") && !(validProjitems.Contains (im.Project)))
+ project.RemoveImport (im.Project);
+ }
+ }
+ }
+}
+
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildHandler.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildHandler.cs
new file mode 100644
index 0000000000..cd8097027e
--- /dev/null
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProjectMSBuildHandler.cs
@@ -0,0 +1,129 @@
+//
+// SharedProjectMSBuildHandler.cs
+//
+// Author:
+// Lluis Sanchez <lluis@xamarin.com>
+//
+// Copyright (c) 2014 Xamarin Inc
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Linq;
+using System.Xml;
+using System.IO;
+using MonoDevelop.Core;
+using System.Collections.Generic;
+using MonoDevelop.Projects.Formats.MSBuild;
+
+namespace MonoDevelop.Projects.SharedAssetsProjects
+{
+ class SharedAssetsProjectMSBuildHandler: MSBuildProjectHandler
+ {
+ string projitemsFile;
+
+ public SharedAssetsProjectMSBuildHandler ()
+ {
+ }
+
+ protected override void LoadProject (IProgressMonitor monitor, MSBuildProject msproject)
+ {
+ var doc = msproject.Document;
+ projitemsFile = null;
+ foreach (var no in doc.DocumentElement.ChildNodes) {
+ var im = no as XmlElement;
+ if (im != null && im.LocalName == "Import" && im.GetAttribute ("Label") == "Shared") {
+ projitemsFile = im.GetAttribute ("Project");
+ break;
+ }
+ }
+ if (projitemsFile == null)
+ return;
+
+ projitemsFile = Path.Combine (Path.GetDirectoryName (msproject.FileName), projitemsFile);
+
+ MSBuildProject p = new MSBuildProject ();
+ p.Load (projitemsFile);
+
+ MSBuildSerializer ser = CreateSerializer ();
+ ser.SerializationContext.BaseFile = EntityItem.FileName;
+ ser.SerializationContext.ProgressMonitor = monitor;
+
+ Item.SetItemHandler (this);
+
+ var cp = p.PropertyGroups.FirstOrDefault (g => g.Label == "Configuration");
+ if (cp != null)
+ ((SharedAssetsProject)EntityItem).DefaultNamespace = cp.GetPropertyValue ("Import_RootNamespace");
+
+ LoadProjectItems (p, ser, ProjectItemFlags.None);
+ }
+
+ protected override MSBuildProject SaveProject (IProgressMonitor monitor)
+ {
+ MSBuildSerializer ser = CreateSerializer ();
+ ser.SerializationContext.BaseFile = EntityItem.FileName;
+ ser.SerializationContext.ProgressMonitor = monitor;
+
+ MSBuildProject projitemsProject = new MSBuildProject ();
+ MSBuildProject msproject = new MSBuildProject ();
+
+ var newProject = EntityItem.FileName == null || !File.Exists (EntityItem.FileName);
+ if (newProject) {
+ var import = msproject.AddNewImport (@"$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props");
+ import.Condition = @"Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')";
+ msproject.AddNewImport (@"$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props");
+ msproject.AddNewImport (@"$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props");
+ import = msproject.AddNewImport (Path.ChangeExtension (EntityItem.FileName.FileName, ".projitems"));
+ import.Label = "Shared";
+ msproject.AddNewImport (@"$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets");
+ } else {
+ msproject.Load (EntityItem.FileName);
+ }
+
+ // having no ToolsVersion is equivalent to 2.0, roundtrip that correctly
+ if (ToolsVersion != "2.0")
+ msproject.ToolsVersion = ToolsVersion;
+ else if (string.IsNullOrEmpty (msproject.ToolsVersion))
+ msproject.ToolsVersion = null;
+ else
+ msproject.ToolsVersion = "2.0";
+
+ if (projitemsFile == null)
+ projitemsFile = Path.ChangeExtension (EntityItem.FileName, ".projitems");
+ if (File.Exists (projitemsFile)) {
+ projitemsProject.Load (projitemsFile);
+ } else {
+ var grp = projitemsProject.AddNewPropertyGroup (true);
+ grp.SetPropertyValue ("MSBuildAllProjects", "$(MSBuildAllProjects);$(MSBuildThisFileFullPath)", false);
+ grp.SetPropertyValue ("HasSharedItems", "true", false);
+ grp.SetPropertyValue ("SharedGUID", EntityItem.ItemId, false);
+
+ grp = projitemsProject.AddNewPropertyGroup (true);
+ grp.Label = "Configuration";
+ grp.SetPropertyValue ("Import_RootNamespace", ((SharedAssetsProject)EntityItem).DefaultNamespace, false);
+ }
+
+ SaveProjectItems (monitor, new MSBuildFileFormatVS12 (), ser, projitemsProject, "$(MSBuildThisFileDirectory)");
+
+ projitemsProject.Save (projitemsFile);
+
+ return msproject;
+ }
+ }
+}
+
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SharedProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SharedProject.cs
deleted file mode 100644
index 86d0f0376f..0000000000
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SharedProject.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// SharedProject.cs
-//
-// Author:
-// Lluis Sanchez <lluis@xamarin.com>
-//
-// Copyright (c) 2014 Xamarin Inc
-//
-// 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 MonoDevelop.Projects
-{
- public class SharedProject: DotNetProject
- {
- public SharedProject (): base ("C#")
- {
- }
-
- public override string[] SupportedLanguages {
- get {
- return new [] {"C#"};
- }
- }
- }
-}
-