public static string GenTableAdapters(System.IO.Stream xmlStream, TypedDataSetGenerator.GenerateOption genOption, string customToolNamespace)
        {
            try
            {

                EnsureCustomDbProviders();
                var designSource = Activator.CreateInstance(assm.GetType("System.Data.Design.DesignDataSource"));
                designSource.Invoke("ReadXmlSchema",  xmlStream, string.Empty );
                var dataSourceGeneratorType = assm.GetType("System.Data.Design.TypedDataSourceCodeGenerator");
                //get the specific constructor
                var constructor = dataSourceGeneratorType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic,
                    null, CallingConventions.Any, new Type[0], new ParameterModifier[0]);
                var dataSourceGenerator = constructor.Invoke(null);

                var codeProvider = new Microsoft.CSharp.CSharpCodeProvider();
                dataSourceGenerator.SetInternalPropertyValue("CodeProvider", codeProvider);

                var codeCompileUnit = new CodeCompileUnit();
                var codeNamespace = new CodeNamespace(customToolNamespace);
                codeCompileUnit.Namespaces.Add(codeNamespace);

                dataSourceGenerator.InvokeInternal("GenerateDataSource",  designSource, codeCompileUnit, codeNamespace, customToolNamespace, genOption );
                var writer = new StringWriter();
                var adapterNameSpace = codeCompileUnit.Namespaces[1];
                codeProvider.GenerateCodeFromNamespace(adapterNameSpace, writer, new CodeGeneratorOptions());
                //codeProvider.GenerateCodeFromCompileUnit(codeCompileUnit, writer, options);
                var res = writer.ToString();
                return (string)res;
            }
            catch (Exception e)
            {

                return e.ToString();
            }
        }
        public static void service_info_methods()
        {
            uri = new Uri("http://localhost:60377/Service1.asmx?wsdl"); 
            WebRequest webRequest = WebRequest.Create(uri);
            System.IO.Stream requestStream = webRequest.GetResponse().GetResponseStream();
            // Get a WSDL file describing a service
            ServiceDescription sd = ServiceDescription.Read(requestStream);
            string sdName = sd.Services[0].Name;

            // Initialize a service description servImport
            ServiceDescriptionImporter servImport = new ServiceDescriptionImporter();
            servImport.AddServiceDescription(sd, String.Empty, String.Empty);
            servImport.ProtocolName = "Soap";
            servImport.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;

            CodeNamespace nameSpace = new CodeNamespace();
            CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
            codeCompileUnit.Namespaces.Add(nameSpace);
            // Set Warnings
            ServiceDescriptionImportWarnings warnings = servImport.Import(nameSpace, codeCompileUnit);

            if (warnings == 0)
            {
                StringWriter stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                Microsoft.CSharp.CSharpCodeProvider prov = new Microsoft.CSharp.CSharpCodeProvider();
                prov.GenerateCodeFromNamespace(nameSpace, stringWriter, new CodeGeneratorOptions());

                string[] assemblyReferences = new string[2] { "System.Web.Services.dll", "System.Xml.dll" };
                CompilerParameters param = new CompilerParameters(assemblyReferences);
                param.GenerateExecutable = false;
                param.GenerateInMemory = true;
                param.TreatWarningsAsErrors = false;
                param.WarningLevel = 4;

                CompilerResults results = new CompilerResults(new TempFileCollection());
                results = prov.CompileAssemblyFromDom(param, codeCompileUnit);
                Assembly assembly = results.CompiledAssembly;
                service = assembly.GetType(sdName);

                methodInfo = service.GetMethods();

                int c = 0;
                foreach (MethodInfo t in methodInfo)
                {
                    if (t.Name == "Discover")
                        break;
                    c++;
                }
                listurl = new string[c]; c = 0;
                foreach (MethodInfo t in methodInfo)
                {
                    if (t.Name == "Discover")
                        break;
                    listurl[c++] = t.Name;
                }

            }

        }
Esempio n. 3
0
        /// <summary>
        /// Generates the file.
        /// </summary>
        /// <param name="outputFile">The output file.</param>
        /// <exception cref="System.ArgumentNullException">Code not generated. Namespace is empty.</exception>
        public void GenerateFile(string outputFile)
        {
            if (ns == null)
            {
                throw new ArgumentNullException("Code not generated. Namespace is empty.");
            }

            string generatedCode = string.Empty;

            try
            {
                using (CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                {
                    using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateNew(memoryMappedFileName, nemoryMappedFileCapacity))
                    {
                        MemoryMappedViewStream stream = mappedFile.CreateViewStream();

                        using (StreamWriter sw = new StreamWriter(stream))
                        {
                            provider.GenerateCodeFromNamespace(ns, sw, new CodeGeneratorOptions());
                        }

                        stream = mappedFile.CreateViewStream();

                        TextReader tr = new StreamReader(stream);
                        generatedCode = tr.ReadToEnd();
                        generatedCode = generatedCode.Trim(new char());

                        tr.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                generatedCode = "#error " + ex.Message;
                throw;
            }
            finally
            {
                string directory = Path.GetDirectoryName(outputFile);
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                using (StreamWriter outfile = new StreamWriter(outputFile))
                {
                    outfile.Write(generatedCode);
                }
            }
        }
Esempio n. 4
0
 protected string ComplieNameSpaceToString(CodeNamespace nameSpace)
 {
     using (Microsoft.CSharp.CSharpCodeProvider cprovider = new Microsoft.CSharp.CSharpCodeProvider())
     {
         StringBuilder fileContent = new StringBuilder();
         var           option      = new System.CodeDom.Compiler.CodeGeneratorOptions();
         option.BlankLinesBetweenMembers = false;
         using (StringWriter sw = new StringWriter(fileContent))
         {
             cprovider.GenerateCodeFromNamespace(nameSpace, sw, option);
         }
         return(fileContent.ToString());
     }
 }
Esempio n. 5
0
        public static void Main(string[] args)
        {
            string schemaFilename  = @"..\doc\COLLADASchema_141.xsd";
            string targetFilename  = @"..\lib\Collada\Collada\Autogenerated\Collada.cs";
            string targetNamespace = @"Collada";

            // Generate CodeDOM classes
            CodeNamespace code;
            using(FileStream schemaStream = new FileStream(schemaFilename, FileMode.Open)) {
                code = GenerateCode(schemaStream, targetNamespace);
            }

            // Write classes to file
            CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
            using(StreamWriter writer = new StreamWriter(targetFilename, false)) {
                provider.GenerateCodeFromNamespace(code, writer, new CodeGeneratorOptions());
            }
        }
        public Assembly GetServiceInspector(Stream stream)
        {
            var wsdlRequestStream = stream;

            var sd       = ServiceDescription.Read(wsdlRequestStream);
            var sdImport = new ServiceDescriptionImporter();

            sdImport.AddServiceDescription(sd, String.Empty, String.Empty);
            sdImport.ProtocolName          = "Soap";
            sdImport.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;
            var codeNameSpace   = new CodeNamespace();
            var codeCompileUnit = new CodeCompileUnit();

            codeCompileUnit.Namespaces.Add(codeNameSpace);
            var warnings = sdImport.Import(codeNameSpace, codeCompileUnit);

            if (warnings == 0)
            {
                var stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                var prov         = new Microsoft.CSharp.CSharpCodeProvider();
                prov.GenerateCodeFromNamespace(codeNameSpace, stringWriter, new CodeGeneratorOptions());
                //Compile the assembly
                var assemblyReferences = new string[2] {
                    "System.Web.Services.dll", "System.Xml.dll"
                };
                var param = new CompilerParameters(assemblyReferences)
                {
                    GenerateExecutable    = false,
                    GenerateInMemory      = true,
                    TreatWarningsAsErrors = false,
                    WarningLevel          = 4
                };
                var results = new CompilerResults(new TempFileCollection());
                results = prov.CompileAssemblyFromDom(param, codeCompileUnit);
                var assembly = results.CompiledAssembly;

                return(assembly);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 7
0
        private bool CompileAssembly(out Assembly outputAssembly, out string outpurFilePath)
        {
            CodeNamespace   nameSpace       = new CodeNamespace();
            CodeCompileUnit codeCompileUnit = new CodeCompileUnit();

            codeCompileUnit.Namespaces.Add(nameSpace);
            // Set Warnings
            ServiceDescriptionImportWarnings warnings = ServiceImporter.Import(nameSpace, codeCompileUnit);

            if (warnings == 0 || warnings.ToString().EndsWith("Ignored"))
            {
                StringWriter stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                Microsoft.CSharp.CSharpCodeProvider prov = new Microsoft.CSharp.CSharpCodeProvider();
                prov.GenerateCodeFromNamespace(nameSpace, stringWriter, new CodeGeneratorOptions());

                // Compile the assembly with the appropriate references
                string[] assemblyReferences = new string[5] {
                    "System.Web.Services.dll", "System.Xml.dll", "System.dll", "System.Web.dll", "System.Data.dll"
                };

                CompilerParameters param = new CompilerParameters(assemblyReferences);
                param.GenerateExecutable    = false;
                param.GenerateInMemory      = false;
                param.TreatWarningsAsErrors = false;
                param.WarningLevel          = 4;

                CompilerResults results = new CompilerResults(new TempFileCollection());
                results        = prov.CompileAssemblyFromDom(param, codeCompileUnit);
                outpurFilePath = results.PathToAssembly;
                outputAssembly = results.CompiledAssembly;
                return(true);
            }
            else
            {
                outpurFilePath = warnings.ToString();
                outputAssembly = null;
                return(false);
            }
        }
Esempio n. 8
0
        private string GenerateDataSet(DataSet pDs, string pNamespace, string pTableName, string pSchemaName, string pDatabaseName)
        {
            Microsoft.CSharp.CSharpCodeProvider cp = new Microsoft.CSharp.CSharpCodeProvider();
            CodeNamespace cns = new CodeNamespace(pNamespace);

            //get autoincrement column if available
            string sAutoIncColName = IdentityColumnName;

            //set autoincrement seed and step to -1
            if (!String.IsNullOrEmpty(sAutoIncColName) && checkBoxPkIsIdentity.Checked)
            {
                pDs.Tables[0].Columns[sAutoIncColName].AutoIncrement     = true;
                pDs.Tables[0].Columns[sAutoIncColName].AutoIncrementStep = -1;
                pDs.Tables[0].Columns[sAutoIncColName].AutoIncrementSeed = -1;
            }

            using (StringWriter schemaWr = new StringWriter())
            {
                pDs.WriteXmlSchema(schemaWr);
                System.Data.Design.TypedDataSetGenerator.Generate(schemaWr.ToString(), new CodeCompileUnit(), cns, cp, System.Data.Design.TypedDataSetGenerator.GenerateOption.LinqOverTypedDatasets);
            }

            string name = cns.Types[0].Name;

            //Change DataSet type name
            name = pDs.Tables[0].TableName + textBoxDataSetSuffix.Text;
            cns.Types[0].Name = name;

            CodeMemberMethod   oClone = (CodeMemberMethod)FindMember("Clone", cns.Types[0].Members);
            CodeCastExpression exp    =
                new CodeCastExpression(name,
                                       new CodeMethodInvokeExpression(
                                           new CodeMethodReferenceExpression(
                                               new CodeBaseReferenceExpression(), "Clone"),
                                           new CodePrimitiveExpression[] { }));

            CodeVariableDeclarationStatement cvds = new CodeVariableDeclarationStatement(name, "cln", exp);

            oClone.Statements[0] = cvds;

            foreach (CodeAttributeDeclaration cad in cns.Types[0].CustomAttributes)
            {
                if (cad.Name == "System.ComponentModel.ToolboxItem")
                {
                    ((CodePrimitiveExpression)cad.Arguments[0].Value).Value = false;
                    break;
                }
            }

            // Find DataTable.
            // Add Attributes.

            CodeTypeDeclaration oDataTable = (CodeTypeDeclaration)FindMember(pTableName + "DataTable", cns.Types[0].Members);

            AddTableSchemaMember(oDataTable, pSchemaName);
            AddDatabaseMember(oDataTable, pDatabaseName);
            AddFullTableNameMember(oDataTable, TableFullName);
            AddFullTableNameAttribute(oDataTable, TableFullName);

            // Add HasAutoIcrementColumn and AutoIncrementColumnName properties...
            AddAutoIncrementColNameMember(oDataTable, sAutoIncColName);
            if (sAutoIncColName == string.Empty)
            {
                AddHasAutoIncrementMember(oDataTable, false);
            }
            else
            {
                AddHasAutoIncrementMember(oDataTable, true);
            }

            AddAutoIncrementColumnNameAttribute(oDataTable, sAutoIncColName);

            //Change dataset name in Initvars method.
            CodeMemberMethod oInitClass = (CodeMemberMethod)FindMember("InitClass", cns.Types[0].Members);

            ((CodeAssignStatement)oInitClass.Statements[0]).Right = new CodePrimitiveExpression(name);

            //Change dataset type in GetTypedDataSetSchema method.
            CodeMemberMethod                 oGetTypedDataSetSchema = (CodeMemberMethod)FindMember("GetTypedDataSetSchema", cns.Types[0].Members);
            CodeObjectCreateExpression       exp2  = new CodeObjectCreateExpression(name, new CodePrimitiveExpression[] { });
            CodeVariableDeclarationStatement cvds2 = new CodeVariableDeclarationStatement(name, "ds", exp2);

            oGetTypedDataSetSchema.Statements[0] = cvds2;

            //Change type in GetTypedTableSchema of table.
            oGetTypedDataSetSchema = (CodeMemberMethod)FindMember("GetTypedTableSchema", ((CodeTypeDeclaration)FindMember(pDs.Tables[0].TableName + "DataTable", cns.Types[0].Members)).Members);
            exp2  = new CodeObjectCreateExpression(name, new CodePrimitiveExpression[] { });
            cvds2 = new CodeVariableDeclarationStatement(name, "ds", exp2);
            oGetTypedDataSetSchema.Statements[2] = cvds2;

            StringBuilder        sb  = new StringBuilder();
            TextWriter           tw  = new StringWriter(sb);
            CodeGeneratorOptions cgo = new CodeGeneratorOptions();

            cp.GenerateCodeFromNamespace(cns, tw, cgo);
            return(sb.ToString());
        }
        /// <summary>
        /// Generates the code.
        /// </summary>
        /// <param name="inputFileName">Name of the input file.</param>
        /// <param name="inputFileContent">Content of the input file.</param>
        /// <param name="renderMode">The render mode.</param>
        /// <param name="desiredNamespace">The desired namespace.</param>
        /// <param name="header">The header.</param>
        /// <returns></returns>
        public string GenerateCode(string inputFileName, string inputFileContent, RenderMode renderMode, string desiredNamespace, string header)
        {
            inputFileContent = RemoveClass(inputFileContent);

            var parserContext = new ParserContext
            {
                BaseUri = new Uri(inputFileName, UriKind.Absolute)
            };

            object source = null;

            try
            {
                using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(inputFileContent)))
                {
                    source = XamlReader.Load(stream, parserContext);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

            if (source == null)
            {
                return("Source is empty. XAML file is not valid.");
            }

            Console.WriteLine();
            Console.WriteLine("Generating " + inputFileName);

            ElementGeneratorType.NameUniqueId = 0;
            string className = Path.GetFileNameWithoutExtension(inputFileName);

            CodeNamespace ns = new CodeNamespace(desiredNamespace);

            ns.Imports.Add(new CodeNamespaceImport("System"));
            ns.Imports.Add(new CodeNamespaceImport("System.CodeDom.Compiler"));
            ns.Imports.Add(new CodeNamespaceImport("System.Collections.ObjectModel"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Charts"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Data"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Controls"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Controls.Primitives"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Input"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Interactions.Core"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Interactivity"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Effects"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Animation"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Imaging"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Shapes"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Renderers"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Themes"));

            CodeTypeDeclaration classType = new CodeTypeDeclaration(className);

            GeneratedCodeAttribute generatedCodeAttribute =
                new GeneratedCodeAttribute("Empty Keys UI Generator", Assembly.GetExecutingAssembly().GetName().Version.ToString());

            CodeAttributeDeclaration codeAttrDecl =
                new CodeAttributeDeclaration(generatedCodeAttribute.GetType().Name,
                                             new CodeAttributeArgument(
                                                 new CodePrimitiveExpression(generatedCodeAttribute.Tool)),
                                             new CodeAttributeArgument(
                                                 new CodePrimitiveExpression(generatedCodeAttribute.Version)));

            classType.CustomAttributes.Add(codeAttrDecl);

            if (string.IsNullOrEmpty(header))
            {
                ns.Comments.Add(new CodeCommentStatement("-----------------------------------------------------------", false));
                ns.Comments.Add(new CodeCommentStatement(" ", false));
                ns.Comments.Add(new CodeCommentStatement(" This file was generated, please do not modify.", false));
                ns.Comments.Add(new CodeCommentStatement(" ", false));
                ns.Comments.Add(new CodeCommentStatement("-----------------------------------------------------------", false));
            }
            else
            {
                ns.Comments.Add(new CodeCommentStatement(header, false));
            }

            CodeMemberMethod initMethod = null;

            if (source is UIRoot)
            {
                initMethod = CreateUIRootClass(ns, classType, renderMode);
                generator.ProcessGenerators(source, classType, initMethod, true);
            }
            else if (source is UserControl)
            {
                initMethod = CreateUserControlClass(ns, classType);
                generator.ProcessGenerators(source, classType, initMethod, true);
            }
            else if (source is ResourceDictionary)
            {
                initMethod = CreateDictionaryClass(ns, classType);

                ResourceDictionary dictionary = source as ResourceDictionary;
                if (dictionary != null)
                {
                    ResourceDictionaryGenerator resourcesGenerator = new ResourceDictionaryGenerator();
                    resourcesGenerator.Generate(dictionary, classType, initMethod, new CodeThisReferenceExpression());
                }
            }
            else
            {
                string errorText = "#error This type is not supported - " + source.GetType();
                Console.WriteLine(errorText);
                return(errorText);
            }

            ImageAssets.Instance.GenerateManagerCode(initMethod);
            ImageAssets.Instance.ClearAssets();

            EffectAssets.Instance.GenerateManagerCode(initMethod);
            EffectAssets.Instance.ClearAssets();

            FontGenerator.Instance.GenerateManagerCode(initMethod);

            if (BindingGenerator.Instance.IsEnabled)
            {
                BindingGenerator.Instance.GenerateRegistrationCode(initMethod);
            }

            string resultCode = string.Empty;

            using (CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
            {
                string mappedFileName = memoryMappedFileName + className;
                using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateNew(mappedFileName, nemoryMappedFileCapacity))
                {
                    MemoryMappedViewStream stream = mappedFile.CreateViewStream();

                    using (StreamWriter sw = new StreamWriter(stream))
                    {
                        provider.GenerateCodeFromNamespace(ns, sw, new CodeGeneratorOptions());
                    }

                    stream = mappedFile.CreateViewStream();

                    TextReader tr = new StreamReader(stream);
                    resultCode = tr.ReadToEnd();
                    resultCode = resultCode.Trim(new char());

                    tr.Close();
                }
            }

            return(resultCode);
        }
        /// <summary>
        /// Generates the code.
        /// </summary>
        /// <param name="inputFileName">Name of the input file.</param>
        /// <param name="inputFileContent">Content of the input file.</param>
        /// <param name="renderMode">The render mode.</param>
        /// <param name="desiredNamespace">The desired namespace.</param>
        /// <returns></returns>
        public string GenerateCode(string inputFileName, string inputFileContent, RenderMode renderMode, string desiredNamespace)
        {
            inputFileContent = RemoveClass(inputFileContent);

            var parserContext = new ParserContext
            {
                BaseUri = new Uri(inputFileName, UriKind.Absolute)
            };

            object source = null;
            try
            {
                //source = XamlReader.Parse(inputFileContent); //, parserContext);
                using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(inputFileContent)))
                {
                    source = XamlReader.Load(stream, parserContext);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

            if (source == null)
            {
                return "Source is empty. XAML file is not valid.";
            }

            Console.WriteLine();
            Console.WriteLine("Generating " + inputFileName);

            string resultCode = string.Empty;
            string className = Path.GetFileNameWithoutExtension(inputFileName);

            CodeNamespace ns = new CodeNamespace(desiredNamespace);
            ns.Imports.Add(new CodeNamespaceImport("System"));
            ns.Imports.Add(new CodeNamespaceImport("System.CodeDom.Compiler"));
            ns.Imports.Add(new CodeNamespaceImport("System.Collections.ObjectModel"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Data"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Controls"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Controls.Primitives"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Input"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Animation"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Imaging"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Shapes"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Renderers"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Themes"));

            /*
            switch (renderMode)
            {
                case RenderMode.SunBurn:
                    ns.Imports.Add(new CodeNamespaceImport("SynapseGaming.SunBurn.Framework.Primitives"));
                    break;
                case RenderMode.MonoGame:
                    ns.Imports.Add(new CodeNamespaceImport("Microsoft.Xna.Framework"));
                    ns.Imports.Add(new CodeNamespaceImport("Microsoft.Xna.Framework.Graphics"));
                    break;
                default:
                    break;
            }
             */

            CodeTypeDeclaration classType = new CodeTypeDeclaration(className);

            GeneratedCodeAttribute generatedCodeAttribute =
            new GeneratedCodeAttribute("Empty Keys UI Generator", Assembly.GetExecutingAssembly().GetName().Version.ToString());

            CodeAttributeDeclaration codeAttrDecl =
                new CodeAttributeDeclaration(generatedCodeAttribute.GetType().Name,
                    new CodeAttributeArgument(
                        new CodePrimitiveExpression(generatedCodeAttribute.Tool)),
                    new CodeAttributeArgument(
                        new CodePrimitiveExpression(generatedCodeAttribute.Version)));
            classType.CustomAttributes.Add(codeAttrDecl);

            ns.Comments.Add(new CodeCommentStatement("-----------------------------------------------------------", false));
            ns.Comments.Add(new CodeCommentStatement(" ", false));
            ns.Comments.Add(new CodeCommentStatement(" This file was generated, please do not modify.", false));
            ns.Comments.Add(new CodeCommentStatement(" ", false));
            ns.Comments.Add(new CodeCommentStatement("-----------------------------------------------------------", false));

            CodeMemberMethod initMethod = null;
            if (source is UIRoot)
            {
                initMethod = CreateUIRootClass(ns, classType, renderMode);
                generator.ProcessGenerators(source, classType, initMethod, true);
            }
            else if (source is UserControl)
            {
                initMethod = CreateUserControlClass(ns, classType);
                generator.ProcessGenerators(source, classType, initMethod, true);
            }
            else if (source is ResourceDictionary)
            {
                initMethod = CreateDictionaryClass(ns, classType);

                ResourceDictionary dictionary = source as ResourceDictionary;
                if (dictionary != null)
                {
                    ResourceDictionaryGenerator resourcesGenerator = new ResourceDictionaryGenerator();
                    resourcesGenerator.Generate(dictionary, classType, initMethod, new CodeThisReferenceExpression());
                }
            }
            else
            {
                string errorText = "#error This type is not supported - " + source.GetType();
                Console.WriteLine(errorText);
                return errorText;
            }

            ImageAssets.Instance.GenerateManagerCode(initMethod);
            ImageAssets.Instance.ClearAssets();

            FontGenerator.Instance.GenerateManagerCode(initMethod);

            using (CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
            {
                string mappedFileName = memoryMappedFileName + className;
                using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateNew(mappedFileName, nemoryMappedFileCapacity))
                {
                    MemoryMappedViewStream stream = mappedFile.CreateViewStream();

                    using (StreamWriter sw = new StreamWriter(stream))
                    {
                        provider.GenerateCodeFromNamespace(ns, sw, new CodeGeneratorOptions());
                    }

                    stream = mappedFile.CreateViewStream();

                    TextReader tr = new StreamReader(stream);
                    resultCode = tr.ReadToEnd();
                    resultCode = resultCode.Trim(new char());

                    tr.Close();
                }
            }

            return resultCode;
        }
Esempio n. 11
0
        private void DynamicInvocation()
        {
            try
            {
                uri = new Uri(Session["Deviceurl"].ToString() + "?wsdl");
            }
            catch { uri = new Uri("http://localhost:60377/Service1.asmx?wsdl"); }
            WebRequest webRequest = WebRequest.Create(uri);

            System.IO.Stream requestStream = webRequest.GetResponse().GetResponseStream();
            // Get a WSDL file describing a service
            ServiceDescription sd     = ServiceDescription.Read(requestStream);
            string             sdName = sd.Services[0].Name;

            // Initialize a service description servImport
            ServiceDescriptionImporter servImport = new ServiceDescriptionImporter();

            servImport.AddServiceDescription(sd, String.Empty, String.Empty);
            servImport.ProtocolName          = "Soap";
            servImport.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;

            CodeNamespace   nameSpace       = new CodeNamespace();
            CodeCompileUnit codeCompileUnit = new CodeCompileUnit();

            codeCompileUnit.Namespaces.Add(nameSpace);
            // Set Warnings
            ServiceDescriptionImportWarnings warnings = servImport.Import(nameSpace, codeCompileUnit);

            if (warnings == 0)
            {
                StringWriter stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                Microsoft.CSharp.CSharpCodeProvider prov = new Microsoft.CSharp.CSharpCodeProvider();
                prov.GenerateCodeFromNamespace(nameSpace, stringWriter, new CodeGeneratorOptions());

                string[] assemblyReferences = new string[2] {
                    "System.Web.Services.dll", "System.Xml.dll"
                };
                CompilerParameters param = new CompilerParameters(assemblyReferences);
                param.GenerateExecutable    = false;
                param.GenerateInMemory      = true;
                param.TreatWarningsAsErrors = false;
                param.WarningLevel          = 4;

                CompilerResults results = new CompilerResults(new TempFileCollection());
                results = prov.CompileAssemblyFromDom(param, codeCompileUnit);
                Assembly assembly = results.CompiledAssembly;
                service               = assembly.GetType(sdName);
                Session["service"]    = service;
                methodInfo            = service.GetMethods();
                Session["methodInfo"] = methodInfo;
                int c = 0;
                foreach (MethodInfo t in methodInfo)
                {
                    if (t.Name == "Discover")
                    {
                        break;
                    }
                    c++;
                }
                listurl = new string[c]; c = 0;
                foreach (MethodInfo t in methodInfo)
                {
                    if (t.Name == "Discover")
                    {
                        break;
                    }
                    listurl[c++] = t.Name;
                }

                Session["listurl"] = listurl;
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Generates the file.
        /// </summary>
        /// <param name="outputFile">The output file.</param>
        /// <exception cref="System.ArgumentNullException">Code not generated. Namespace is empty.</exception>
        public void GenerateFile(string outputFile)
        {
            if (ns == null)
            {
                throw new ArgumentNullException("Code not generated. Namespace is empty.");
            }

            string generatedCode = string.Empty;
            try
            {
                using (CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                {
                    using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateNew(memoryMappedFileName, nemoryMappedFileCapacity))
                    {
                        MemoryMappedViewStream stream = mappedFile.CreateViewStream();

                        using (StreamWriter sw = new StreamWriter(stream))
                        {
                            provider.GenerateCodeFromNamespace(ns, sw, new CodeGeneratorOptions());
                        }

                        stream = mappedFile.CreateViewStream();

                        TextReader tr = new StreamReader(stream);
                        generatedCode = tr.ReadToEnd();
                        generatedCode = generatedCode.Trim(new char());

                        tr.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                generatedCode = "#error " + ex.Message;
                throw;
            }
            finally
            {
                using (StreamWriter outfile = new StreamWriter(outputFile))
                {
                    outfile.Write(generatedCode);
                }
            }
        }
        /// <summary>
        /// Generates the code.
        /// </summary>
        /// <param name="inputFileName">Name of the input file.</param>
        /// <param name="inputFileContent">Content of the input file.</param>
        /// <param name="renderMode">The render mode.</param>
        /// <returns></returns>
        public string GenerateCode(string inputFileName, string inputFileContent, RenderMode renderMode)
        {
            inputFileContent = RemoveClass(inputFileContent);

            object source = null;

            try
            {
                source = XamlReader.Parse(inputFileContent);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

            if (source == null)
            {
                return("Source is empty. XAML file is not valid.");
            }

            Console.WriteLine();
            Console.WriteLine("Generating " + inputFileName);

            string resultCode = string.Empty;
            string className  = Path.GetFileNameWithoutExtension(inputFileName);

            CodeNamespace ns = new CodeNamespace("EmptyKeys.UserInterface.Generated");

            ns.Imports.Add(new CodeNamespaceImport("System"));
            ns.Imports.Add(new CodeNamespaceImport("System.CodeDom.Compiler"));
            ns.Imports.Add(new CodeNamespaceImport("System.Collections.ObjectModel"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Data"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Controls"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Controls.Primitives"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Input"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Animation"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Media.Imaging"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Shapes"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Renderers"));
            ns.Imports.Add(new CodeNamespaceImport("EmptyKeys.UserInterface.Themes"));

            /*
             * switch (renderMode)
             * {
             *  case RenderMode.SunBurn:
             *      ns.Imports.Add(new CodeNamespaceImport("SynapseGaming.SunBurn.Framework.Primitives"));
             *      break;
             *  case RenderMode.MonoGame:
             *      ns.Imports.Add(new CodeNamespaceImport("Microsoft.Xna.Framework"));
             *      ns.Imports.Add(new CodeNamespaceImport("Microsoft.Xna.Framework.Graphics"));
             *      break;
             *  default:
             *      break;
             * }
             */

            CodeTypeDeclaration classType = new CodeTypeDeclaration(className);

            GeneratedCodeAttribute generatedCodeAttribute =
                new GeneratedCodeAttribute("Empty Keys UI Generator", Assembly.GetExecutingAssembly().GetName().Version.ToString());

            CodeAttributeDeclaration codeAttrDecl =
                new CodeAttributeDeclaration(generatedCodeAttribute.GetType().Name,
                                             new CodeAttributeArgument(
                                                 new CodePrimitiveExpression(generatedCodeAttribute.Tool)),
                                             new CodeAttributeArgument(
                                                 new CodePrimitiveExpression(generatedCodeAttribute.Version)));

            classType.CustomAttributes.Add(codeAttrDecl);

            ns.Comments.Add(new CodeCommentStatement("-----------------------------------------------------------", false));
            ns.Comments.Add(new CodeCommentStatement(" ", false));
            ns.Comments.Add(new CodeCommentStatement(" This file was generated, please do not modify.", false));
            ns.Comments.Add(new CodeCommentStatement(" ", false));
            ns.Comments.Add(new CodeCommentStatement("-----------------------------------------------------------", false));

            CodeMemberMethod initMethod = null;

            if (source is UIRoot)
            {
                initMethod = CreateUIRootClass(ns, classType, renderMode);
                generator.ProcessGenerators(source, classType, initMethod, true);
            }
            else if (source is UserControl)
            {
                initMethod = CreateUserControlClass(ns, classType);
                generator.ProcessGenerators(source, classType, initMethod, true);
            }
            else if (source is ResourceDictionary)
            {
                initMethod = CreateDictionaryClass(ns, classType);

                ResourceDictionary dictionary = source as ResourceDictionary;
                if (dictionary != null)
                {
                    ResourceDictionaryGenerator resourcesGenerator = new ResourceDictionaryGenerator();
                    resourcesGenerator.Generate(dictionary, classType, initMethod, new CodeThisReferenceExpression());
                }
            }
            else
            {
                string errorText = "#error This type is not supported - " + source.GetType();
                Console.WriteLine(errorText);
                return(errorText);
            }

            using (CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
            {
                string mappedFileName = memoryMappedFileName + className;
                using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateNew(mappedFileName, nemoryMappedFileCapacity))
                {
                    MemoryMappedViewStream stream = mappedFile.CreateViewStream();

                    using (StreamWriter sw = new StreamWriter(stream))
                    {
                        provider.GenerateCodeFromNamespace(ns, sw, new CodeGeneratorOptions());
                    }

                    stream = mappedFile.CreateViewStream();

                    TextReader tr = new StreamReader(stream);
                    resultCode = tr.ReadToEnd();
                    resultCode = resultCode.Trim(new char());

                    tr.Close();
                }
            }

            return(resultCode);
        }
Esempio n. 14
0
 private static void RenderStatements(CodeNamespace ns)
 {
     Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
     provider.GenerateCodeFromNamespace(ns, Console.Out, null);
 }
Esempio n. 15
0
        /// <summary>
        /// Creates a new Service Inspector from a given Uri of a WSDL
        /// </summary>
        /// <param name="serviceLocation">The location of the services WSDL file</param>
        public ServiceInspector(Uri serviceLocation)
        {
            if (serviceLocation.Query == string.Empty)
            {
                UriBuilder uriB = new UriBuilder(serviceLocation);

                uriB.Query = "WSDL";

                serviceLocation = uriB.Uri;
            }

            _serviceLocation = serviceLocation;

            WebRequest wsdlWebRequest    = WebRequest.Create(serviceLocation);
            Stream     wsdlRequestStream = wsdlWebRequest.GetResponse().GetResponseStream();

            //Get the ServiceDescription from the WSDL file
            ServiceDescription sd     = ServiceDescription.Read(wsdlRequestStream);
            string             sdName = sd.Services[0].Name;

            ServiceDescriptionImporter sdImport = new ServiceDescriptionImporter();

            sdImport.AddServiceDescription(sd, String.Empty, String.Empty);
            sdImport.ProtocolName          = "Soap";
            sdImport.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;

            CodeNamespace   codeNameSpace   = new CodeNamespace();
            CodeCompileUnit codeCompileUnit = new CodeCompileUnit();

            codeCompileUnit.Namespaces.Add(codeNameSpace);

            ServiceDescriptionImportWarnings warnings = sdImport.Import(codeNameSpace, codeCompileUnit);

            if (warnings == 0)
            {
                StringWriter stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                Microsoft.CSharp.CSharpCodeProvider prov = new Microsoft.CSharp.CSharpCodeProvider();

                prov.GenerateCodeFromNamespace(codeNameSpace, stringWriter, new CodeGeneratorOptions());

                //Compile the assembly
                string[] assemblyReferences = new string[2] {
                    "System.Web.Services.dll", "System.Xml.dll"
                };
                CompilerParameters param = new CompilerParameters(assemblyReferences);

                param.GenerateExecutable    = false;
                param.GenerateInMemory      = true;
                param.TreatWarningsAsErrors = false;
                param.WarningLevel          = 4;

                CompilerResults results = new CompilerResults(new TempFileCollection());
                results = prov.CompileAssemblyFromDom(param, codeCompileUnit);

                Assembly assembly = results.CompiledAssembly;
                _service = assembly.GetType(sdName);

                _methodInfo.Clear();

                foreach (MethodInfo mi in _service.GetMethods())
                {
                    if (mi.Name == "Discover")
                    {
                        break;
                    }

                    _methodInfo.Add(mi);
                }
            }
        }
Esempio n. 16
0
        private void DynamicInvocation()
        {
            try
            {
                messageTextBox.Text += "Generating WSDL \r\n";
                progressBar1.PerformStep();

                Uri uri = new Uri(textBox1.Text);

                messageTextBox.Text += "Generating WSDL \r\n";
                progressBar1.PerformStep();

                WebRequest       webRequest    = WebRequest.Create(uri);
                System.IO.Stream requestStream = webRequest.GetResponse().GetResponseStream();
                // Get a WSDL file describing a service
                ServiceDescription sd     = ServiceDescription.Read(requestStream);
                string             sdName = sd.Services[0].Name;
                // Add in tree view
                treeWsdl.Nodes.Add(sdName);

                messageTextBox.Text += "Generating Proxy \r\n";
                progressBar1.PerformStep();

                // Initialize a service description servImport
                ServiceDescriptionImporter servImport = new ServiceDescriptionImporter();
                servImport.AddServiceDescription(sd, String.Empty, String.Empty);
                servImport.ProtocolName          = "Soap";
                servImport.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;

                messageTextBox.Text += "Generating assembly  \r\n";
                progressBar1.PerformStep();

                CodeNamespace   nameSpace       = new CodeNamespace();
                CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
                codeCompileUnit.Namespaces.Add(nameSpace);
                // Set Warnings
                ServiceDescriptionImportWarnings warnings = servImport.Import(nameSpace, codeCompileUnit);

                if (warnings == 0)
                {
                    StringWriter stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                    Microsoft.CSharp.CSharpCodeProvider prov = new Microsoft.CSharp.CSharpCodeProvider();
                    prov.GenerateCodeFromNamespace(nameSpace, stringWriter, new CodeGeneratorOptions());

                    messageTextBox.Text += "Compiling assembly \r\n";
                    progressBar1.PerformStep();

                    // Compile the assembly with the appropriate references
                    string[] assemblyReferences = new string[2] {
                        "System.Web.Services.dll", "System.Xml.dll"
                    };
                    CompilerParameters param = new CompilerParameters(assemblyReferences);
                    param.GenerateExecutable    = false;
                    param.GenerateInMemory      = true;
                    param.TreatWarningsAsErrors = false;
                    param.WarningLevel          = 4;

                    CompilerResults results = new CompilerResults(new TempFileCollection());
                    results = prov.CompileAssemblyFromDom(param, codeCompileUnit);
                    Assembly assembly = results.CompiledAssembly;
                    service = assembly.GetType(sdName);

                    messageTextBox.Text += "Get Methods of Wsdl \r\n";
                    progressBar1.PerformStep();

                    methodInfo = service.GetMethods();
                    foreach (MethodInfo t in methodInfo)
                    {
                        if (t.Name == "Discover")
                        {
                            break;
                        }


                        treeWsdl.Nodes[0].Nodes.Add(t.Name);
                    }

                    treeWsdl.Nodes[0].Expand();

                    messageTextBox.Text += "Now ready to invoke \r\n ";
                    progressBar1.PerformStep();
                    this.tabControl1.SelectedTab = this.tabPage1;
                }
                else
                {
                    messageTextBox.Text += warnings;
                }
            }
            catch (Exception ex)
            {
                messageTextBox.Text += "\r\n" + ex.Message + "\r\n\r\n" + ex.ToString();;
                progressBar1.Value   = 70;
            }
        }
Esempio n. 17
0
        /// <summary>
        /// 取得webservice instance
        /// </summary>
        /// <param name="url">url+?wsdl</param>
        /// <param name="assemblyReferences"></param>
        /// <param name="output"></param>
        /// <returns></returns>
        public static bool GetWebServiceInstance(string url, string[] assemblyReferences, out LkReflectModel output, string userName = "", string password = "")
        {
            //http://www.codeproject.com/Articles/18950/Dynamic-Discovery-and-Invocation-of-Web-Services
            //https://dotblogs.com.tw/jimmyyu/archive/2009/04/22/8139.aspx

            output = new LkReflectModel();
            if (assemblyReferences == null)
            {
                assemblyReferences = new string[3] {
                    "System.Web.Services.dll", "System.Xml.dll", "System.Data.dll"
                };
            }
            bool result = false;

            try
            {
                WebRequest webRequest = WebRequest.Create(url);

                //有要權限的話要加下面
                //webRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
                if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))
                {
                    webRequest.Credentials     = new NetworkCredential(userName, password);
                    webRequest.PreAuthenticate = true;
                }
                Stream requestStream = webRequest.GetResponse().GetResponseStream();
                // Get a WSDL file describing a service
                //ServiceDescription类提供一种方法,以创建和格式化用于描述 XML Web services 的有效的 Web 服务描述语言 (WSDL) 文档文件,该文件是完整的,具有适当的命名空间、元素和特性。 无法继承此类。
                //ServiceDescription.Read 方法 (Stream) 通过直接从 Stream实例加载 XML 来初始化ServiceDescription类的实例。
                ServiceDescription sd     = ServiceDescription.Read(requestStream);
                string             sdName = sd.Services[0].Name;

                // Initialize a service description servImport
                //ServiceDescriptionImporter 类 公开一种为 XML Web services 生成客户端代理类的方法。
                //ServiceDescriptionImporter.AddServiceDescription 方法 将指定的ServiceDescription添加到要导入的ServiceDescriptions值的集合中。
                ServiceDescriptionImporter servImport = new ServiceDescriptionImporter();
                servImport.AddServiceDescription(sd, String.Empty, String.Empty);
                servImport.ProtocolName          = "Soap";
                servImport.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties;

                //CodeNamespace表示命名空间声明。
                CodeNamespace nameSpace = new CodeNamespace();
                //CodeCompileUnit会提供一个CodeDOM程式圆形的容器,CodeCompileUnit含有一个集合,可以储存含有CodeDOM原始程式码原形,专案参考的组件集合以及专案组件属性集合的CodeNamespace物件。
                CodeCompileUnit codeCompileUnit = new CodeCompileUnit();
                codeCompileUnit.Namespaces.Add(nameSpace);
                // Set Warnings
                ServiceDescriptionImportWarnings warnings = servImport.Import(nameSpace, codeCompileUnit);

                if (warnings == 0)
                {
                    StringWriter stringWriter = new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
                    //CSharpCodeProvider类提供存取C#程式码产生器和程式码编译器的执行个体。
                    Microsoft.CSharp.CSharpCodeProvider prov = new Microsoft.CSharp.CSharpCodeProvider();
                    // 取得C#程式码编译器的执行个体
                    prov.GenerateCodeFromNamespace(nameSpace, stringWriter, new CodeGeneratorOptions());

                    // Compile the assembly with the appropriate references
                    // 创建编译器的参数实例
                    CompilerParameters param = new CompilerParameters(assemblyReferences);
                    param.GenerateExecutable    = false;
                    param.GenerateInMemory      = true;
                    param.TreatWarningsAsErrors = false;
                    param.WarningLevel          = 4;

                    // CompilerResults表示从编译器返回的编译结果。使用指定的编译器设定,根据CodeCompileUnit物件之指定阵列所包含的System.CodeDom树状结构,编译一个组件。
                    CompilerResults results = new CompilerResults(new TempFileCollection());
                    // Compile
                    results = prov.CompileAssemblyFromDom(param, codeCompileUnit);

                    if (true == results.Errors.HasErrors)
                    {
                        System.Text.StringBuilder tStr = new System.Text.StringBuilder();
                        foreach (System.CodeDom.Compiler.CompilerError tComError in results.Errors)
                        {
                            tStr.Append(tComError.ToString());
                            tStr.Append(System.Environment.NewLine);
                        }
                        throw new Exception(tStr.ToString());
                    }

                    output.Assembly      = results.CompiledAssembly;
                    output.Class         = output.Assembly.GetType(sdName);
                    output.ClassInstance = Activator.CreateInstance(output.Class);
                    result = true;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return(result);
        }
Esempio n. 18
0
		private static void RenderStatements(CodeNamespace ns)
		{
			Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
			provider.GenerateCodeFromNamespace(ns, Console.Out, null);
		}