예제 #1
0
        public void Generate(bool updateAssembly)
        {
            if (useLocalAssembly && !updateAssembly)
            {
                if (File.Exists(GetDllOutPutPath()))
                {
                    proxyAssembly = Assembly.LoadFrom(GetDllOutPutPath().ToString());
                    CheckPoint(MessageType.Success, "Local Assembly Path:" + GetDllOutPutPath().ToString());
                    return;
                }
            }

            CheckPoint(MessageType.Begin, "Initializing");
            ServiceDescriptionCollection collection1 = new ServiceDescriptionCollection();
            XmlSchemas       schemas1    = new XmlSchemas();
            StringCollection collection2 = new StringCollection();
            StringCollection collection3 = new StringCollection();

            GetPaths(collection3, collection2);
            collection1.Clear();
            schemas1.Clear();
            if ((collection3 != null) && (collection3.Count > 0))
            {
                string text1 = collection3[0];
                string text2 = Path.GetExtension(text1);
                if ((string.Compare(text2, ".exe", true) == 0) || (string.Compare(text2, ".dll", true) == 0))
                {
                    CheckPoint(MessageType.Begin, "Loading Assembly");
                    proxyAssembly = Assembly.LoadFrom(text1);

                    if (proxyAssembly != null)
                    {
                        CheckPoint(MessageType.Success, "Loaded Assembly");
                    }
                    else
                    {
                        CheckPoint(MessageType.Failure, "Failed to load Assembly");
                    }
                    return;
                }
            }
            CheckPoint(MessageType.Begin, "Generating WSDL");
            try
            {
                DiscoveryClientProtocol protocol1 = CreateDiscoveryClient();
                ProcessLocalPaths(protocol1, collection3, schemas1, collection1);
                ProcessRemoteUrls(protocol1, collection2, schemas1, collection1);
            }
            catch (Exception exception1)
            {
                CheckPoint(MessageType.Failure, exception1.ToString());
                return;
            }
            try
            {
                ICodeGenerator generator1;
                string         text3;
                CheckPoint(MessageType.Begin, "Generating Proxy");
                CreateCodeGenerator(out generator1, out text3);
                XmlSchemas schemas2 = new XmlSchemas();
                schemas2.Add(schemas1);
                foreach (ServiceDescription description1 in collection1)
                {
                    schemas2.Add(description1.Types.Schemas);
                }
                Hashtable hashtable1 = new Hashtable();
                foreach (XmlSchema schema1 in schemas2)
                {
                    CollectIncludes(schema1, hashtable1);
                }
                Compile(schemas2);
                GenerateCode(collection1, schemas1, "http://tempuri.org", generator1, text3);
                CheckPoint(MessageType.Begin, "Compiling Proxy");
                //if (proxyCode.Length < 1000)
                //{
                //    CheckPoint(MessageType.Failure, "Empty Assembly");
                //    return;
                //}

                if (updateAssembly)
                {
                    GenerateAssembly(true);
                }
                else
                {
                    GenerateAssembly();
                }
                CheckPoint(MessageType.Success, "Generated Assembly");
            }
            catch (Exception exception2)
            {
                CheckPoint(MessageType.Failure, exception2.ToString());
                return;
            }
        }
예제 #2
0
        public void Generate()
        {
            CheckPoint(MessageType.Begin, "Initializing");
            var descriptions = new ServiceDescriptionCollection();
            var schemas      = new XmlSchemas();
            var urls         = new StringCollection();
            var localPaths   = new StringCollection();

            GetPaths(localPaths, urls);
            descriptions.Clear();
            schemas.Clear();
            if ((localPaths != null) && (localPaths.Count > 0))
            {
                string path      = localPaths[0];
                string extension = Path.GetExtension(path);
                if ((string.Compare(extension, ".exe", true) == 0) || (string.Compare(extension, ".dll", true) == 0))
                {
                    CheckPoint(MessageType.Begin, "Loading Assembly");
                    proxyAssembly = Assembly.LoadFrom(path);
                    if (proxyAssembly != null)
                    {
                        CheckPoint(MessageType.Success, "Loaded Assembly");
                    }
                    else
                    {
                        CheckPoint(MessageType.Failure, "Failed to load Assembly");
                    }
                    return;
                }
            }
            CheckPoint(MessageType.Begin, "Generating WSDL");
            try
            {
                System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                DiscoveryClientProtocol client = CreateDiscoveryClient();
                ProcessLocalPaths(client, localPaths, schemas, descriptions);
                ProcessRemoteUrls(client, urls, schemas, descriptions);
            }
            catch (Exception exception)
            {
                CheckPoint(MessageType.Failure, exception.ToString());
                return;
            }
            try
            {
                ICodeGenerator generator;
                string         str3;
                CheckPoint(MessageType.Begin, "Generating Proxy");
                CreateCodeGenerator(out generator, out str3);
                var userSchemas = new XmlSchemas();
                userSchemas.Add(schemas);
                foreach (ServiceDescription description in descriptions)
                {
                    userSchemas.Add(description.Types.Schemas);
                }
                var includeSchemas = new Hashtable();
                foreach (XmlSchema schema in userSchemas)
                {
                    CollectIncludes(schema, includeSchemas);
                }
                Compile(userSchemas);
                GenerateCode(descriptions, schemas, "http://tempuri.org", generator, str3);
                CheckPoint(MessageType.Begin, "Compiling Proxy");
                GenerateAssembly();
                CheckPoint(MessageType.Success, "Generated Assembly");
            }
            catch (Exception exception2)
            {
                CheckPoint(MessageType.Failure, exception2.ToString());
            }
        }
예제 #3
0
        public void Generate()
        {
            this.CheckPoint(MessageType.Begin, "Initializing");
            ServiceDescriptionCollection descriptions = new ServiceDescriptionCollection();
            XmlSchemas       schemas    = new XmlSchemas();
            StringCollection urls       = new StringCollection();
            StringCollection localPaths = new StringCollection();

            this.GetPaths(localPaths, urls);
            descriptions.Clear();
            schemas.Clear();
            if ((localPaths != null) && (localPaths.Count > 0))
            {
                string path      = localPaths[0];
                string extension = Path.GetExtension(path);
                if ((string.Compare(extension, ".exe", true) == 0) || (string.Compare(extension, ".dll", true) == 0))
                {
                    this.CheckPoint(MessageType.Begin, "Loading Assembly");
                    this.proxyAssembly = Assembly.LoadFrom(path);
                    if (this.proxyAssembly != null)
                    {
                        this.CheckPoint(MessageType.Success, "Loaded Assembly");
                    }
                    else
                    {
                        this.CheckPoint(MessageType.Failure, "Failed to load Assembly");
                    }
                    return;
                }
            }
            this.CheckPoint(MessageType.Begin, "Generating WSDL");
            try
            {
                DiscoveryClientProtocol client = this.CreateDiscoveryClient();
                this.ProcessLocalPaths(client, localPaths, schemas, descriptions);
                this.ProcessRemoteUrls(client, urls, schemas, descriptions);
            }
            catch (Exception exception)
            {
                this.CheckPoint(MessageType.Failure, exception.ToString());
                return;
            }
            try
            {
                this.CheckPoint(MessageType.Begin, "Generating Proxy");
                this.CreateCodeGenerator();
                XmlSchemas userSchemas = new XmlSchemas();
                userSchemas.Add(schemas);
                foreach (ServiceDescription description in descriptions)
                {
                    userSchemas.Add(description.Types.Schemas);
                }
                Hashtable includeSchemas = new Hashtable();
                foreach (XmlSchema schema in userSchemas)
                {
                    CollectIncludes(schema, includeSchemas);
                }
                this.Compile(userSchemas);
                this.GenerateCode(descriptions, schemas, "http://tempuri.org");
                this.CheckPoint(MessageType.Begin, "Compiling Proxy");
                this.GenerateAssembly();
                this.CheckPoint(MessageType.Success, "Generated Assembly");
            }
            catch (Exception exception2)
            {
                this.CheckPoint(MessageType.Failure, exception2.ToString());
            }
        }