public override void Delete (WebReferenceItem item)
		{
			base.Delete (item);
			DotNetProject project = item.Project;
			WCFMetadataStorage metStor = project.Items.GetAll<WCFMetadataStorage> ().FirstOrDefault (m => m.Path.CanonicalPath == item.BasePath);
			if (metStor != null) {
				project.Items.Remove (metStor);
				if (!project.Items.GetAll<WCFMetadataStorage> ().Any ()) {
					WCFMetadata dir = project.Items.GetAll<WCFMetadata> ().FirstOrDefault ();
					if (dir != null)
						project.Items.Remove (dir);
				}
			}
		}
        protected override string GenerateDescriptionFiles(DotNetProject project, FilePath basePath)
        {
            if (!project.Items.GetAll <WCFMetadata> ().Any())
            {
                WCFMetadata met = new WCFMetadata();
                met.Path = basePath.ParentDirectory;
                project.Items.Add(met);
            }

            WCFMetadataStorage metStor = project.Items.GetAll <WCFMetadataStorage> ().FirstOrDefault(m => m.Path.CanonicalPath == basePath);

            if (metStor == null)
            {
                project.Items.Add(new WCFMetadataStorage()
                {
                    Path = basePath
                });
            }

            string file = Path.Combine(basePath, "Reference.svcmap");

            if (protocol != null)
            {
                protocol.ResolveAll();
                protocol.WriteAll(basePath, "Reference.svcmap");
                refGroup = ConvertMapFile(file);
            }
            else
            {
                // TODO
                ReferenceGroup map = new ReferenceGroup();
                map.ClientOptions = InitialClientOptions;
                map.Save(file);
                map.ID   = Guid.NewGuid().ToString();
                refGroup = map;
            }
            foreach (MetadataFile mfile in refGroup.Metadata)
            {
                project.AddFile(new FilePath(mfile.FileName).ToAbsolute(basePath), BuildAction.None);
            }

            return(file);
        }