Browse Source

Add WCFMetadataStorage item to project when a WCF service reference is added.

pull/22/merge
Matt Ward 14 years ago
parent
commit
a0801f53f9
  1. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  2. 10
      src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ProjectWithServiceReferences.cs
  3. 1
      src/Main/Base/Project/Src/Project/Items/ItemType.cs
  4. 20
      src/Main/Base/Project/Src/Project/Items/ServiceReferenceProjectItem.cs
  5. 3
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
  6. 14
      src/Main/Base/Test/ServiceReferences/MSBuildBasedProjectTests.cs
  7. 18
      src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -338,6 +338,7 @@
<Compile Include="Src\Project\IBuildFeedbackSink.cs" /> <Compile Include="Src\Project\IBuildFeedbackSink.cs" />
<Compile Include="Src\Project\IProjectChangeWatcher.cs" /> <Compile Include="Src\Project\IProjectChangeWatcher.cs" />
<Compile Include="Src\Project\IProjectItemBackendStore.cs" /> <Compile Include="Src\Project\IProjectItemBackendStore.cs" />
<Compile Include="Src\Project\Items\ServiceReferenceProjectItem.cs" />
<Compile Include="Src\Project\Items\ServiceReferencesProjectItem.cs" /> <Compile Include="Src\Project\Items\ServiceReferencesProjectItem.cs" />
<Compile Include="Src\Project\MSBuildEngine\MSBuildAdditionalLogger.cs" /> <Compile Include="Src\Project\MSBuildEngine\MSBuildAdditionalLogger.cs" />
<Compile Include="Src\Project\MSBuildEngine\MSBuildLoggerFilter.cs" /> <Compile Include="Src\Project\MSBuildEngine\MSBuildLoggerFilter.cs" />

10
src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/ServiceReference/ProjectWithServiceReferences.cs

@ -51,6 +51,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
{ {
AddServiceReferenceFileToProject(fileName); AddServiceReferenceFileToProject(fileName);
AddServiceReferencesItemToProject(); AddServiceReferencesItemToProject();
AddServiceReferenceItemToProject(fileName);
} }
void AddServiceReferenceFileToProject(string fileName) void AddServiceReferenceFileToProject(string fileName)
@ -72,6 +73,15 @@ namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference
AddProjectItemToProject(projectItem); AddProjectItemToProject(projectItem);
} }
void AddServiceReferenceItemToProject(string fileName)
{
var projectItem = new ServiceReferenceProjectItem(project);
string directory = Path.GetDirectoryName(fileName);
string serviceName = Path.GetFileName(directory);
projectItem.Include = serviceName;
AddProjectItemToProject(projectItem);
}
public void Save() public void Save()
{ {
project.Save(); project.Save();

1
src/Main/Base/Project/Src/Project/Items/ItemType.cs

@ -52,6 +52,7 @@ namespace ICSharpCode.SharpDevelop.Project
public static readonly ItemType Folder = new ItemType("Folder"); public static readonly ItemType Folder = new ItemType("Folder");
public static readonly ItemType WebReferences = new ItemType("WebReferences"); public static readonly ItemType WebReferences = new ItemType("WebReferences");
public static readonly ItemType ServiceReferences = new ItemType("WCFMetadata"); public static readonly ItemType ServiceReferences = new ItemType("WCFMetadata");
public static readonly ItemType ServiceReference = new ItemType("WCFMetadataStorage");
/// <summary> /// <summary>
/// Gets a collection of item types that are known not to be used for files. /// Gets a collection of item types that are known not to be used for files.

20
src/Main/Base/Project/Src/Project/Items/ServiceReferenceProjectItem.cs

@ -0,0 +1,20 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.SharpDevelop.Project
{
public class ServiceReferenceProjectItem : ProjectItem
{
public ServiceReferenceProjectItem(IProject project)
: base(project, ItemType.ServiceReference)
{
}
internal ServiceReferenceProjectItem(IProject project, IProjectItemBackendStore buildItem)
: base(project, buildItem)
{
}
}
}

3
src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs

@ -181,6 +181,9 @@ namespace ICSharpCode.SharpDevelop.Project
case "WCFMetadata": case "WCFMetadata":
return new ServiceReferencesProjectItem(this, item); return new ServiceReferencesProjectItem(this, item);
case "WCFMetadataStorage":
return new ServiceReferenceProjectItem(this, item);
default: default:
if (this.AvailableFileItemTypes.Contains(item.ItemType) if (this.AvailableFileItemTypes.Contains(item.ItemType)
|| SafeFileExists(this.Directory, item.EvaluatedInclude)) || SafeFileExists(this.Directory, item.EvaluatedInclude))

14
src/Main/Base/Test/ServiceReferences/MSBuildBasedProjectTests.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
} }
[Test] [Test]
public void Create_ItemTypeIsWCFMetadata_ReturnsServiceReferenceProjectItem() public void CreateProjectItem_ItemTypeIsWCFMetadata_ReturnsServiceReferencesProjectItem()
{ {
CreateProject(); CreateProject();
CreateProjectItemBackendStore(); CreateProjectItemBackendStore();
@ -36,5 +36,17 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
Assert.IsNotNull(projectItem); Assert.IsNotNull(projectItem);
} }
[Test]
public void CreateProjectItem_ItemTypeIsWCFMetadataStorage_ReturnsServiceReferenceProjectItem()
{
CreateProject();
CreateProjectItemBackendStore();
backendStore.ItemType = new ItemType("WCFMetadataStorage");
var projectItem = project.CreateProjectItem(backendStore) as ServiceReferenceProjectItem;
Assert.IsNotNull(projectItem);
}
} }
} }

18
src/Main/Base/Test/ServiceReferences/ProjectWithServiceReferencesTests.cs

@ -56,6 +56,11 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
return msbuildProject.GetItemsOfType(ItemType.ServiceReferences).SingleOrDefault() as ServiceReferencesProjectItem; return msbuildProject.GetItemsOfType(ItemType.ServiceReferences).SingleOrDefault() as ServiceReferencesProjectItem;
} }
ServiceReferenceProjectItem GetFirstWCFMetadataStorageItemInMSBuildProject()
{
return msbuildProject.GetItemsOfType(ItemType.ServiceReference).SingleOrDefault() as ServiceReferenceProjectItem;
}
[Test] [Test]
public void ServiceReferencesFolder_ProjectHasNoServiceReferences_ReturnsServiceReferencesFolderAsProjectSubFolder() public void ServiceReferencesFolder_ProjectHasNoServiceReferences_ReturnsServiceReferencesFolderAsProjectSubFolder()
{ {
@ -127,5 +132,18 @@ namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences
Assert.AreEqual("Service References", item.Include); Assert.AreEqual("Service References", item.Include);
} }
[Test]
public void AddServiceReferenceProxyFile_ProjectHasNoServiceReferences_WCFMetadataStorageItemAddedToProjectForServiceReferencesFolder()
{
CreateProjectWithMSBuildProject();
string proxyFileName = @"d:\projects\MyProject\Service References\Service1\Reference.cs";
project.AddServiceReferenceProxyFile(proxyFileName);
ProjectItem item = GetFirstWCFMetadataStorageItemInMSBuildProject();
Assert.AreEqual("Service1", item.Include);
}
} }
} }

Loading…
Cancel
Save