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);
        }
		protected override string GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath)
		{
			if (!dotNetProject.Items.GetAll<WCFMetadata> ().Any ()) {
				var met = new WCFMetadata ();
				met.Path = basePath.ParentDirectory;
				dotNetProject.Items.Add (met);
			}
			
			WCFMetadataStorage metStor = dotNetProject.Items.GetAll<WCFMetadataStorage> ().FirstOrDefault (m => m.Path.CanonicalPath == basePath);
			if (metStor == null)
				dotNetProject.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
				var map = new ReferenceGroup ();
				map.ClientOptions = defaultOptions;
				map.Save (file);
				map.ID = Guid.NewGuid ().ToString ();
				refGroup = map;
			}
			foreach (MetadataFile mfile in refGroup.Metadata)
				dotNetProject.AddFile (new FilePath (mfile.FileName).ToAbsolute (basePath), BuildAction.None);
			
			return file;
		}