public override WebServiceDiscoveryResult Load (WebReferenceItem item)
		{
			FilePath basePath = item.MapFile.FilePath.ParentDirectory;
			ReferenceGroup resfile = ReferenceGroup.Read (item.MapFile.FilePath);
			
			// TODO: Read as MetadataSet
			
			DiscoveryClientProtocol protocol = new DiscoveryClientProtocol ();
			
			foreach (MetadataFile dcr in resfile.Metadata)
			{
				DiscoveryReference dr;
				switch (dcr.MetadataType) {
					case "Wsdl":
						dr = new System.Web.Services.Discovery.ContractReference ();
						break;
					case "Disco":
						dr = new System.Web.Services.Discovery.DiscoveryDocumentReference ();
						break;
					case "Schema":
						dr = new System.Web.Services.Discovery.SchemaReference ();
						break;
					default:
						continue;
				}

				dr.Url = dcr.SourceUrl;
				FileStream fs = new FileStream (basePath.Combine (dcr.FileName), FileMode.Open, FileAccess.Read);
				protocol.Documents.Add (dr.Url, dr.ReadDocument (fs));
				fs.Close ();
				protocol.References.Add (dr.Url, dr);
			}
			return new WebServiceDiscoveryResultWCF (protocol, null, item, resfile);
		}
        public override string GetServiceURL()
        {
            ReferenceGroup resfile = ReferenceGroup.Read(Item.MapFile.FilePath);

            if (resfile.MetadataSources.Count == 0)
            {
                return(null);
            }
            return(resfile.MetadataSources [0].Address);
        }
        public override void Update()
        {
            ReferenceGroup resfile = ReferenceGroup.Read(Item.MapFile.FilePath);

            if (resfile.MetadataSources.Count == 0)
            {
                return;
            }
            string url = resfile.MetadataSources [0].Address;
            WebServiceDiscoveryResultWCF wref = (WebServiceDiscoveryResultWCF)WebReferencesService.WcfEngine.Discover(url);

            if (wref == null)
            {
                return;
            }

            metadata = wref.metadata;
            protocol = wref.protocol;
            GenerateFiles(Item.Project, Item.MapFile.Project.Name, Item.Name);
        }