static TypeScriptLanguage()
 {
     TypeScriptLanguage.codeDomProvider = System.CodeDom
                                          .Compiler
                                          .CodeDomProvider
                                          .CreateProvider("CSharp");
 }
Beispiel #2
0
        public string GenerateTypeName(System.CodeDom.Compiler.CodeDomProvider codeProvider)
        {
            string ret = codeProvider.CreateValidIdentifier(_mapMember.TypeData.FullTypeName);

            return(_mapMember.TypeData.IsValueType && _mapMember.TypeData.IsNullable ?
                   "System.Nullable`1[" + ret + "]" : ret);
        }
Beispiel #3
0
        public AddViewDialog(AspNetAppProject project)
        {
            this.project = project;

            Build();

            provider = project.LanguageBinding.GetCodeDomProvider();

            var viewEngines = GetProperViewEngines();

            loadedTemplateList = new Dictionary <string, IList <string> > ();
            foreach (var engine in viewEngines)
            {
                viewEngineCombo.AppendText(engine);
                loadedTemplateList[engine] = project.GetCodeTemplates("AddView", engine);
            }

            viewEngineCombo.Active = 0;
            InitializeTemplateStore(loadedTemplateList);

            ContentPlaceHolders = new List <string> ();
            string siteMaster = project.VirtualToLocalPath("~/Views/Shared/Site.master", null);

            if (project.Files.GetFile(siteMaster) != null)
            {
                masterEntry.Text = "~/Views/Shared/Site.master";
            }

            placeholderCombo.Model = primaryPlaceholderStore;

            UpdateTypePanelSensitivity(null, null);
            UpdateMasterPanelSensitivity(null, null);
            Validate();
        }
		public AddControllerDialog (AspMvcProject project)
		{
			this.Build ();

			provider = project.LanguageBinding.GetCodeDomProvider ();

			loadedTemplateList = project.GetCodeTemplates ("AddController");
			bool foundEmptyTemplate = false;
			int templateIndex = 0;
			foreach (string file in loadedTemplateList) {
				string name = System.IO.Path.GetFileNameWithoutExtension (file);
				templateCombo.AppendText (name);
				if (!foundEmptyTemplate) {
					if (name == "Empty") {
						templateCombo.Active = templateIndex;
						foundEmptyTemplate = true;
					} else
						templateIndex++;
				}
			}
			if (!foundEmptyTemplate)
				throw new Exception ("The Empty.tt template is missing.");

			nameEntry.Text = "Controller";
			nameEntry.Position = 0;

			Validate ();
		}
		public AddViewDialog (DotNetProject project)
		{
			this.project = project;
			aspFlavor = project.GetService<AspNetAppProjectFlavor> ();

			Build ();
			
			provider = project.LanguageBinding.GetCodeDomProvider ();

			var viewEngines = GetProperViewEngines ();
			loadedTemplateList = new Dictionary<string, IList<string>> ();
			foreach (var engine in viewEngines) {
				viewEngineCombo.AppendText (engine);
				loadedTemplateList[engine] = aspFlavor.GetCodeTemplates ("AddView", engine);
			}

			viewEngineCombo.Active = 0;
			InitializeTemplateStore (loadedTemplateList);

			ContentPlaceHolders = new List<string> ();
			string siteMaster = aspFlavor.VirtualToLocalPath ("~/Views/Shared/Site.master", null);
			if (project.Files.GetFile (siteMaster) != null)
				masterEntry.Text = "~/Views/Shared/Site.master";
			
			placeholderCombo.Model = primaryPlaceholderStore;
			
			UpdateTypePanelSensitivity (null, null);
			UpdateMasterPanelSensitivity (null, null);
			Validate ();
		}
 static TypeScriptLanguage()
 {
     TypeScriptLanguage.codeDomProvider = System.CodeDom
         .Compiler
         .CodeDomProvider
         .CreateProvider("CSharp");
 }
 static CSharpLanguage()
 {
     CSharpLanguage.codeDomProvider = System.CodeDom
                                      .Compiler
                                      .CodeDomProvider
                                      .CreateProvider("CSharp");
 }
 static CSharpLanguage()
 {
     CSharpLanguage.codeDomProvider = System.CodeDom
         .Compiler
         .CodeDomProvider
         .CreateProvider("CSharp");
 }
Beispiel #9
0
        private System.Reflection.Assembly CompileCode(string sourceFile, string language)
        {
            string vbSource = "";

            string fName = new FileInfo(sourceFile).Name;

            Logger.MajorVerbose("Compiling " + fName + "...");

            try
            {
                using (StreamReader SR = new StreamReader(sourceFile))
                {
                    while (SR.Peek() > -1)
                    {
                        vbSource += SR.ReadLine() + System.Environment.NewLine;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.MajorError("Exception raised while reading " + fName + System.Environment.NewLine + ex.ToString());
                return(null);
            }

            System.CodeDom.Compiler.CodeDomProvider prov = null;

            System.CodeDom.Compiler.CompilerParameters compParams = new System.CodeDom.Compiler.CompilerParameters();

            System.CodeDom.Compiler.CompilerResults compResults;

            string[] refs = { "System.dll", "Microsoft.VisualBasic.dll", "System.XML.dll", "System.Data.dll", Path.GetDirectoryName(Assembly.GetAssembly(typeof(ThalesMain)).CodeBase) + "\\ThalesCore.dll", System.Reflection.Assembly.GetAssembly(typeof(ThalesMain)).Location };

            compParams.ReferencedAssemblies.AddRange(refs);

            try
            {
                prov        = System.CodeDom.Compiler.CodeDomProvider.CreateProvider(language);
                compResults = prov.CompileAssemblyFromSource(compParams, vbSource);
            }

            catch (Exception ex)
            {
                Logger.MajorError("Exception raised during compilation of " + fName + System.Environment.NewLine + ex.ToString());
                return(null);
            }

            if (compResults.Errors.Count > 0)
            {
                Logger.MajorError("Compilation errors of " + fName);
                foreach (System.CodeDom.Compiler.CompilerError Err in compResults.Errors)
                {
                    Logger.MajorError("Line: " + Err.Line.ToString() + System.Environment.NewLine + "Column: " + Err.Column.ToString() + System.Environment.NewLine + "Error: " + Err.ErrorText);
                }
                return(null);
            }
            else
            {
                return(System.Reflection.Assembly.LoadFrom(compResults.PathToAssembly));
            }
        }
Beispiel #10
0
        static void GenerateVBCodeForService(Uri metadataAddress, string outputFile)
        {
            MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress, MetadataExchangeClientMode.HttpGet);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaDocs = mexClient.GetMetadata();

            WsdlImporter             importer  = new WsdlImporter(metaDocs);
            ServiceContractGenerator generator = new ServiceContractGenerator();

            System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();
            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }
            if (generator.Errors.Count != 0)
            {
                throw new ApplicationException("There were errors during code compilation.");
            }

            // Write the code dom.
            System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider    codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("VB");
            System.CodeDom.Compiler.IndentedTextWriter textWriter      = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
            textWriter.Close();
        }
Beispiel #11
0
        private bool LoadScript(string filename)
        {
            var compilerOptions = new System.CodeDom.Compiler.CompilerParameters();

            compilerOptions.CompilerOptions         = "/optimize";
            compilerOptions.GenerateInMemory        = true;
            compilerOptions.IncludeDebugInformation = true;
            compilerOptions.ReferencedAssemblies.Add("System.dll");
            compilerOptions.ReferencedAssemblies.Add("System.Core.dll");
            compilerOptions.ReferencedAssemblies.Add("System.Drawing.dll");
            compilerOptions.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            compilerOptions.ReferencedAssemblies.Add("System.XML.dll");
            compilerOptions.ReferencedAssemblies.Add("System.XML.Linq.dll");
            compilerOptions.ReferencedAssemblies.Add(typeof(Script).Assembly.Location);

            string extension = Path.GetExtension(filename);

            System.CodeDom.Compiler.CodeDomProvider compiler = null;

            if (extension.Equals(".cs", StringComparison.OrdinalIgnoreCase))
            {
                compiler = new Microsoft.CSharp.CSharpCodeProvider();
                compilerOptions.CompilerOptions += " /unsafe";
            }
            else if (extension.Equals(".vb", StringComparison.OrdinalIgnoreCase))
            {
                compiler = new Microsoft.VisualBasic.VBCodeProvider();
            }
            else
            {
                return(false);
            }

            System.CodeDom.Compiler.CompilerResults compilerResult = compiler.CompileAssemblyFromFile(compilerOptions, filename);

            if (!compilerResult.Errors.HasErrors)
            {
                Log("[INFO]", "Successfully compiled '", Path.GetFileName(filename), "'.");

                return(LoadAssembly(filename, compilerResult.CompiledAssembly));
            }
            else
            {
                var errors = new System.Text.StringBuilder();

                foreach (System.CodeDom.Compiler.CompilerError error in compilerResult.Errors)
                {
                    errors.Append("   at line ");
                    errors.Append(error.Line);
                    errors.Append(": ");
                    errors.Append(error.ErrorText);
                    errors.AppendLine();
                }

                Log("[ERROR]", "Failed to compile '", Path.GetFileName(filename), "' with ", compilerResult.Errors.Count.ToString(), " error(s):", Environment.NewLine, errors.ToString());

                return(false);
            }
        }
Beispiel #12
0
        /// <summary>
        /// Compiles and load scripts from a C# or VB.NET source code file.
        /// </summary>
        /// <param name="filename">The path to the code file to load.</param>
        /// <returns><c>true</c> on success, <c>false</c> otherwise</returns>
        bool LoadScriptsFromSource(string filename)
        {
            var compilerOptions = new System.CodeDom.Compiler.CompilerParameters();

            compilerOptions.CompilerOptions         = "/optimize";
            compilerOptions.GenerateInMemory        = true;
            compilerOptions.IncludeDebugInformation = true;
            compilerOptions.ReferencedAssemblies.Add("System.dll");
            compilerOptions.ReferencedAssemblies.Add("System.Core.dll");
            compilerOptions.ReferencedAssemblies.Add("System.Drawing.dll");
            compilerOptions.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            compilerOptions.ReferencedAssemblies.Add("System.XML.dll");
            compilerOptions.ReferencedAssemblies.Add("System.XML.Linq.dll");
            // Reference the oldest scripting API to stay compatible with existing scripts
            compilerOptions.ReferencedAssemblies.Add(scriptApis.First().Location);
            compilerOptions.ReferencedAssemblies.Add(typeof(ScriptDomain).Assembly.Location);

            string extension = Path.GetExtension(filename);

            System.CodeDom.Compiler.CodeDomProvider compiler = null;

            if (extension.Equals(".cs", StringComparison.OrdinalIgnoreCase))
            {
                compiler = new Microsoft.CSharp.CSharpCodeProvider();
                compilerOptions.CompilerOptions += " /unsafe";
            }
            else if (extension.Equals(".vb", StringComparison.OrdinalIgnoreCase))
            {
                compiler = new Microsoft.VisualBasic.VBCodeProvider();
            }
            else
            {
                return(false);
            }

            System.CodeDom.Compiler.CompilerResults compilerResult = compiler.CompileAssemblyFromFile(compilerOptions, filename);

            if (!compilerResult.Errors.HasErrors)
            {
                Log.Message(Log.Level.Debug, "Successfully compiled ", Path.GetFileName(filename), ".");
                return(LoadScriptsFromAssembly(compilerResult.CompiledAssembly, filename));
            }
            else
            {
                var errors = new System.Text.StringBuilder();

                foreach (System.CodeDom.Compiler.CompilerError error in compilerResult.Errors)
                {
                    errors.Append("   at line ");
                    errors.Append(error.Line);
                    errors.Append(": ");
                    errors.Append(error.ErrorText);
                    errors.AppendLine();
                }

                Log.Message(Log.Level.Error, "Failed to compile ", Path.GetFileName(filename), " with ", compilerResult.Errors.Count.ToString(), " error(s):", Environment.NewLine, errors.ToString());
                return(false);
            }
        }
Beispiel #13
0
        public AddViewDialog(AspMvcProject project)
        {
            this.project = project;
            this.Build();

            dataClassCombo = new DropDownBox();

            int w, h;

            Gtk.Icon.SizeLookup(Gtk.IconSize.Menu, out w, out h);
            dataClassCombo.DefaultIconHeight = Math.Max(h, 16);
            dataClassCombo.DefaultIconWidth  = Math.Max(w, 16);
            dataClassAlignment.Add(dataClassCombo);
            dataClassAlignment.QueueResize();
            dataClassCombo.ShowAll();

            provider = project.LanguageBinding.GetCodeDomProvider();

            ContentPlaceHolders = new List <string> ();
            string siteMaster = project.VirtualToLocalPath("~/Views/Shared/Site.master", null);

            if (project.Files.GetFile(siteMaster) != null)
            {
                masterEntry.Text = "~/Views/Shared/Site.master";
            }

            loadedTemplateList = project.GetCodeTemplates("AddView");
            bool foundEmptyTemplate = false;
            int  templateIndex      = 0;

            foreach (string file in loadedTemplateList)
            {
                string name = PP.GetFileNameWithoutExtension(file);
                templateCombo.AppendText(name);
                if (!foundEmptyTemplate)
                {
                    if (name == "Empty")
                    {
                        templateCombo.Active = templateIndex;
                        foundEmptyTemplate   = true;
                    }
                    else
                    {
                        templateIndex++;
                    }
                }
            }

            if (!foundEmptyTemplate)
            {
                throw new Exception("The Empty.tt template is missing.");
            }

            primaryPlaceholderCombo.Model = primaryPlaceholderStore;

            UpdateTypePanelSensitivity(null, null);
            UpdateMasterPanelSensitivity(null, null);
            Validate();
        }
Beispiel #14
0
 public Compiler()
 {
     this.provider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
     this.cpParams = new System.CodeDom.Compiler.CompilerParameters();
     this.cpParams.GenerateInMemory = false;
     this.cpParams.GenerateExecutable = false;
     //   this.cpParams.OutputAssembly = @"C:\" + DateTime.Now.ToString("Mdyyyy") + ".dll";
     this.sbCode = new StringBuilder();
 }
Beispiel #15
0
 public Compiler()
 {
     this.provider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
     this.cpParams = new System.CodeDom.Compiler.CompilerParameters();
     this.cpParams.GenerateInMemory   = false;
     this.cpParams.GenerateExecutable = false;
     //   this.cpParams.OutputAssembly = @"C:\" + DateTime.Now.ToString("Mdyyyy") + ".dll";
     this.sbCode = new StringBuilder();
 }
Beispiel #16
0
 protected static string ToCSharpLiteral(string input)
 {
     using (var writer = new StringWriter())
     {
         using (System.CodeDom.Compiler.CodeDomProvider provider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp"))
         {
             provider.GenerateCodeFromExpression(new System.CodeDom.CodePrimitiveExpression(input), writer, null);
             return(writer.ToString());
         }
     }
 }
Beispiel #17
0
        static void Main()
        {
            string outputFile = "c:\\temp\\test";


            //<Snippet0>
            EndpointAddress mexAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/service/mex");
            //</Snippet0>

            //<Snippet1>
            MetadataExchangeClient mexClient = new MetadataExchangeClient(mexAddress);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaSet = mexClient.GetMetadata();
            //</Snippet1>

            //<Snippet2>
            WsdlImporter importer = new WsdlImporter(metaSet);

            System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();
            //</Snippet2>

            //<Snippet3>
            ServiceContractGenerator generator = new ServiceContractGenerator();

            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }

            if (generator.Errors.Count != 0)
            {
                throw new Exception("There were errors during code compilation.");
            }
            //</Snippet3>


            // Write the code dom
            //<Snippet4>
            System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider    codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
            System.CodeDom.Compiler.IndentedTextWriter textWriter      = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
            textWriter.Close();
            //</Snippet4>


            Console.WriteLine();
            Console.WriteLine("Press <ENTER> to terminate client.");
            Console.ReadLine();
        }
Beispiel #18
0
        public string Compile(String se, String fe, String[] rdas, String[] fs, Boolean rn)
        {
            System.CodeDom.Compiler.CodeDomProvider CODEPROV = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
            ot =
                fe;

            System.CodeDom.Compiler.CompilerParameters PARAMS = new System.CodeDom.Compiler.CompilerParameters();
            // Ensure the compiler generates an EXE file, not a DLL.
            PARAMS.GenerateExecutable = true;
            PARAMS.OutputAssembly     = ot;
            PARAMS.ReferencedAssemblies.Add(typeof(System.Xml.Linq.Extensions).Assembly.Location);
            foreach (String ay in rdas)
            {
                if (ay.Contains(".dll"))
                {
                    PARAMS.ReferencedAssemblies.Add(ay);
                }
                else
                {
                    string refd = ay;
                    refd = refd + ".dll";
                    PARAMS.ReferencedAssemblies.Add(refd);
                }
            }

            System.CodeDom.Compiler.CompilerResults rs = CODEPROV.CompileAssemblyFromFile(PARAMS, fs);

            if (rs.Errors.Count > 0)
            {
                foreach (System.CodeDom.Compiler.CompilerError COMERR in rs.Errors)
                {
                    es = es +
                         "Line number: " + COMERR.Line +
                         ", Error number: " + COMERR.ErrorNumber +
                         ", '" + COMERR.ErrorText + ";" +
                         Environment.NewLine + Environment.NewLine;
                }
            }
            else
            {
                // Compilation succeeded.
                es = "Compilation Succeeded.";

                if (rn)
                {
                    System.Diagnostics.Process.Start(ot);
                }
            }
            return(es);
        }
 public SettingsSingleFileGeneratorSite(string language)
 {
     if (language == EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB)
     {
         _codeDomProvider = new Microsoft.VisualBasic.VBCodeProvider();
     }
     else if (language == EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp)
     {
         _codeDomProvider = new Microsoft.CSharp.CSharpCodeProvider();
     }
     else if (language == EnvDTE80.CodeModelLanguageConstants2.vsCMLanguageJSharp)
     {
         System.Diagnostics.Debug.Fail("Not yet implemented!");
     }
 }
Beispiel #20
0
        static void GenerateCSCodeForService(EndpointAddress metadataAddress, string outputFile)
        {
            MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaDocs = mexClient.GetMetadata();

            WsdlImporter             importer  = new WsdlImporter(metaDocs);
            ServiceContractGenerator generator = new ServiceContractGenerator();

            // Uncomment the following code if you are going to do your work programmatically rather than add
            // the WsdlDocumentationImporters through a configuration file.

            /*
             * // The following code inserts the custom WSDL programmatically adding the custom WsdlImporter without
             * // removing the other importers already in the collection.
             * System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlExtensions;
             * System.Collections.Generic.List<IWsdlImportExtension> newExts = new System.Collections.Generic.List<IWsdlImportExtension>();
             * foreach (IWsdlImportExtension ext in exts)
             * newExts.Add(ext);
             * newExts.Add(new WsdlDocumentationImporter());
             * importer = new WsdlImporter(newExts.ToArray(), metaDocs.MetadataSections);
             */

            System.Collections.ObjectModel.Collection <ContractDescription> contracts
                = importer.ImportAllContracts();
            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }
            if (generator.Errors.Count != 0)
            {
                throw new ApplicationException("There were errors during code compilation.");
            }

            // Write the code dom
            System.CodeDom.Compiler.CodeGeneratorOptions options
                = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider codeDomProvider
                = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
            System.CodeDom.Compiler.IndentedTextWriter textWriter
                = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(
                generator.TargetCompileUnit, textWriter, options
                );
            textWriter.Close();
        }
Beispiel #21
0
        private Assembly CompileInput()
        {
            string inputStr = String.Format(CompileTemplate, _input);

            _compiler        = new Microsoft.CSharp.CSharpCodeProvider();
            _compilerOptions = new System.CodeDom.Compiler.CompilerParameters();
            _compilerOptions.GenerateInMemory        = true;
            _compilerOptions.IncludeDebugInformation = true;
            _compilerOptions.ReferencedAssemblies.Add("System.dll");
            _compilerOptions.ReferencedAssemblies.Add(typeof(Script).Assembly.Location);

            foreach (Script script in ScriptDomain.CurrentDomain.RunningScripts)
            {
                if (!String.IsNullOrEmpty(script.Filename))
                {
                    _compilerOptions.ReferencedAssemblies.Add(script.Filename);
                }
            }

            System.CodeDom.Compiler.CompilerResults compilerResult = _compiler.CompileAssemblyFromSource(_compilerOptions, inputStr);

            if (!compilerResult.Errors.HasErrors)
            {
                return(compilerResult.CompiledAssembly);
            }
            else
            {
                Error(String.Format("Couldn't compile input-string: {0}", _input));

                StringBuilder errors = new StringBuilder();

                for (int i = 0; i < compilerResult.Errors.Count; ++i)
                {
                    errors.Append("   at line ");
                    errors.Append(compilerResult.Errors[i].Line);
                    errors.Append(": ");
                    errors.Append(compilerResult.Errors[i].ErrorText);

                    if (i < compilerResult.Errors.Count - 1)
                    {
                        errors.AppendLine();
                    }
                }

                Error(errors.ToString());
                return(null);
            }
        }
 private void buttonStart_Click(object sender, EventArgs e)
 {
     // создаем провайдер для генерирования и компиляции кода на C#
     System.CodeDom.Compiler.CodeDomProvider prov = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
     // создаем параметры компилирования
     System.CodeDom.Compiler.CompilerParameters cmpparam = new System.CodeDom.Compiler.CompilerParameters();
     // результат компиляции - библиотека
     cmpparam.GenerateExecutable = false;
     // не включаем информацию отладчика
     cmpparam.IncludeDebugInformation = false;
     // подключаем 2-е стандартные библиотеки и библиотеку CalcClass.dll
     cmpparam.ReferencedAssemblies.Add(Application.StartupPath + "\\CalcClass.dll");
     cmpparam.ReferencedAssemblies.Add("System.dll");
     cmpparam.ReferencedAssemblies.Add("System.Windows.Forms.dll");
     // имя выходной сборки - My.dll
     cmpparam.OutputAssembly = "My.dll";
     // компилируем класс AnalaizerClass с заданными параметрами
     System.CodeDom.Compiler.CompilerResults res = prov.CompileAssemblyFromFile(cmpparam, Application.StartupPath + "\\AnalaizerClass.cs");
     // Выводим результат компилирования на экран
     if (res.Errors.Count != 0)
     {
         richTextBox1.Text += res.Errors[0].ToString();
     }
     else
     {
         // загружаем только что скомпилированную сборку(здесь тонкий момент - если мы прото загрузим сборку из файла - то он будет заблокирован,
         // acces denied, поэтому вначале читаем его в поток, и лишь потом подключаем)
         System.IO.BinaryReader reader = new System.IO.BinaryReader(new System.IO.FileStream(Application.StartupPath + "\\My.dll", System.IO.FileMode.Open, System.IO.FileAccess.Read));
         Byte[] asmBytes = new Byte[reader.BaseStream.Length];
         reader.Read(asmBytes, 0, (Int32)reader.BaseStream.Length);
         reader.Close();
         reader = null;
         System.Reflection.Assembly assm = System.Reflection.Assembly.Load(asmBytes);
         Type[] types     = assm.GetTypes();
         Type   analaizer = types[0];
         // находим метод CheckCurrency - к счастью он единственный
         System.Reflection.MethodInfo addinfo  = analaizer.GetMethod("RunEstimate");
         System.Reflection.FieldInfo  fieldopz = analaizer.GetField("opz");
         System.Collections.ArrayList ar       = new System.Collections.ArrayList();
         ar.Add("2");
         ar.Add("2");
         ar.Add("+");
         fieldopz.SetValue(null, ar);
         richTextBox1.Text += addinfo.Invoke(null, null).ToString();
         asmBytes           = null;
     }
     prov.Dispose();
 }
		public AddViewDialog (AspMvcProject project)
		{
			this.project = project;
			this.Build ();
			
			dataClassCombo = new MonoDevelop.SourceEditor.DropDownBox ();
			
			int w, h;
			Gtk.Icon.SizeLookup (Gtk.IconSize.Menu, out w, out h);
			dataClassCombo.DefaultIconHeight = Math.Max (h, 16);
			dataClassCombo.DefaultIconWidth = Math.Max (w, 16);
			dataClassAlignment.Add (dataClassCombo);
			dataClassAlignment.QueueResize ();
			dataClassCombo.ShowAll ();
			
			provider = project.LanguageBinding.GetCodeDomProvider ();
			
			ContentPlaceHolders = new List<string> ();
			string siteMaster = project.VirtualToLocalPath ("~/Views/Shared/Site.master", null);
			if (project.Files.GetFile (siteMaster) != null)
				masterEntry.Text = "~/Views/Shared/Site.master";
			
			loadedTemplateList = project.GetCodeTemplates ("AddView");
			bool foundEmptyTemplate = false;
			int templateIndex = 0;
			foreach (string file in loadedTemplateList) {
				string name = PP.GetFileNameWithoutExtension (file);
				templateCombo.AppendText (name);
				if (!foundEmptyTemplate){
					if (name == "Empty") {
						templateCombo.Active = templateIndex;
						foundEmptyTemplate = true;
					} else
						templateIndex++;
				}
			}
			
			if (!foundEmptyTemplate)
				throw new Exception ("The Empty.tt template is missing.");
			
			primaryPlaceholderCombo.Model = primaryPlaceholderStore;
			
			UpdateTypePanelSensitivity (null, null);
			UpdateMasterPanelSensitivity (null, null);
			Validate ();
		}
Beispiel #24
0
        //int i = (int)Calc("1+2*3");
        //Console.WriteLine(i.ToString());
        public static object Calc(string expression)
        {
            string className  = "Calc";
            string methodName = "Run";

            expression = expression.Replace("/", "*1.0/");

            //  创建编译器实例。
            System.CodeDom.Compiler.CodeDomProvider _CodeDomProvider = System.CodeDom.Compiler
                                                                       .CodeDomProvider.CreateProvider("CSharp");
            //  设置编译参数。
            System.CodeDom.Compiler.CompilerParameters paras = new System.CodeDom.Compiler.CompilerParameters();
            paras.GenerateExecutable = false;          //编译成exe还是dll
            paras.GenerateInMemory   = false;          //是否写入内存,不写入内存就写入磁盘
            paras.OutputAssembly     = "c:\\test.dll"; //输出路径
            paras.ReferencedAssemblies.Add("System.dll");
            //  创建动态代码。
            StringBuilder classSource = new StringBuilder();

            classSource.Append("public  class  " + className + "\n");
            classSource.Append("{\n");
            classSource.Append("        public  object  " + methodName + "()\n");
            classSource.Append("        {\n");
            classSource.Append("                return  " + expression + ";\n");
            classSource.Append("        }\n");
            classSource.Append("}");

            //   System.Diagnostics.Debug.WriteLine(classSource.ToString());

            //  编译代码。
            System.CodeDom.Compiler.CompilerResults result = _CodeDomProvider
                                                             .CompileAssemblyFromSource(paras, classSource.ToString());

            //  获取编译后的程序集。
            System.Reflection.Assembly assembly = result.CompiledAssembly;

            //  动态调用方法。
            object eval = assembly.CreateInstance(className);

            System.Reflection.MethodInfo method = eval.GetType().GetMethod(methodName);
            object reobj = method.Invoke(eval, null);

            GC.Collect();
            return(reobj);
        }
Beispiel #25
0
        internal static IPageClassFactory GetPageClassFactory()
        {
            System.CodeDom.Compiler.CodeDomProvider    provider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
            System.CodeDom.Compiler.CompilerParameters cp       = new System.CodeDom.Compiler.CompilerParameters();
            cp.GenerateExecutable = false;
            cp.GenerateInMemory   = true;
            cp.TempFiles          = new System.CodeDom.Compiler.TempFileCollection(Xy.AppSetting.LogDir);

            for (int i = 0; i < PageClassLibrary.Assemblys.Count; i++)
            {
                cp.ReferencedAssemblies.Add(binFileDir + PageClassLibrary.Assemblys[i] + ".dll");
            }

            StringBuilder code = new StringBuilder();

            code.AppendLine("namespace Xy.Runtime.Web {");
            code.AppendLine("public class PageClassFacgory : Xy.Runtime.Web.IPageClassFactory {");
            code.AppendLine("public Xy.Web.Page.PageAbstract GetPageClass(string key) {");
            code.AppendLine("switch (key) {");
            for (int i = 0; i < PageClassLibrary.ClassFullNames.Count; i++)
            {
                code.AppendLine(string.Format("case \"{0}\": case \"{1}\": return new {1}();", PageClassLibrary.ClassFullNames[i], PageClassLibrary.ClassFullNames[i].Split(',')[1]));
            }
            code.AppendLine("default: throw new System.Exception(\"Can not found page class with key: \" + key);");
            code.AppendLine("}");
            code.AppendLine("} } }");

            System.CodeDom.Compiler.CompilerResults cr = provider.CompileAssemblyFromSource(cp, code.ToString());

            foreach (System.CodeDom.Compiler.CompilerError _error in cr.Errors)
            {
                string[] codes = code.ToString().Split(new string[] { Environment.NewLine, "\n", "\r" }, StringSplitOptions.None);
                if (_error.Line > 0)
                {
                    throw new Exception(string.Format("error:\"{0}\" on \"{1}\"", _error.ErrorText, codes[_error.Line - 1]));
                }
                else
                {
                    throw new Exception(string.Format("error:\"{0}\"", _error.ErrorText));
                }
            }
            return(cr.CompiledAssembly.CreateInstance("Xy.Runtime.Web.PageClassFacgory") as IPageClassFactory);
        }
Beispiel #26
0
        string CreateCodeFile()
        {
            var unit = capturedArgs.GeneratorResults.GeneratedCode;

            System.CodeDom.Compiler.CodeDomProvider provider = project != null
                                ? project.LanguageBinding.GetCodeDomProvider()
                                : new Microsoft.CSharp.CSharpCodeProvider();

            using (var sw = new StringWriter()) {
                provider.GenerateCodeFromCompileUnit(unit, sw, new System.CodeDom.Compiler.CodeGeneratorOptions()
                {
                    // HACK: we use true, even though razor uses false, to work around a mono bug where it omits the
                    // line ending after "#line hidden", resulting in the unparseable "#line hiddenpublic"
                    BlankLinesBetweenMembers = true,
                    // matches Razor built-in settings
                    IndentString = String.Empty,
                });
                return(sw.ToString());
            }
        }
Beispiel #27
0
        public static void GenerateViaCodeDOM(string outputFileName,
                                              System.CodeDom.Compiler.CodeDomProvider provider,
                                              System.CodeDom.CodeCompileUnit compileunit)
        {
            System.CodeDom.Compiler.ICodeGenerator     gen = provider.CreateGenerator();
            System.CodeDom.Compiler.IndentedTextWriter tw;

            try
            {
                tw = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFileName, false), "    ");
                gen.GenerateCodeFromCompileUnit(compileunit, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
                tw.Flush();
                tw.Close();
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
                throw;
            }
        }
Beispiel #28
0
        public static System.IO.Stream GenerateViaCodeDOM(Utility.OutputType outputType, System.CodeDom.CodeCompileUnit compileunit)
        {
            System.CodeDom.Compiler.CodeDomProvider    provider = null;
            System.CodeDom.Compiler.ICodeGenerator     gen;
            System.CodeDom.Compiler.IndentedTextWriter tw = null;
            System.IO.MemoryStream stream;
            System.IO.StreamWriter writer;

            switch (outputType)
            {
            case Utility.OutputType.VB:
                provider = new Microsoft.VisualBasic.VBCodeProvider();
                break;

            case Utility.OutputType.CSharp:
                provider = new Microsoft.CSharp.CSharpCodeProvider();
                break;
            }
            gen = provider.CreateGenerator();

            try
            {
                stream = new System.IO.MemoryStream();
                writer = new System.IO.StreamWriter(stream);
                tw     = new System.CodeDom.Compiler.IndentedTextWriter(writer, "   ");
                gen.GenerateCodeFromCompileUnit(compileunit, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
                tw.Flush();
                stream.Seek(0, System.IO.SeekOrigin.Begin);
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
                if (tw != null)
                {
                    tw.Flush();
                    tw.Close();
                }
                throw;
            }
            return(stream);
        }
        System.CodeDom.CodeCompileUnit GenerateCompileUnit(System.CodeDom.Compiler.CodeDomProvider provider,
                                                           System.CodeDom.Compiler.CodeGeneratorOptions options, string file, List <NSObjectTypeInfo> types)
        {
            var ccu        = new System.CodeDom.CodeCompileUnit();
            var namespaces = new Dictionary <string, System.CodeDom.CodeNamespace> ();

            foreach (var t in types)
            {
                System.CodeDom.CodeTypeDeclaration type;
                string nsName;
                System.CodeDom.CodeNamespace ns;
                t.GenerateCodeTypeDeclaration(provider, options, infoService.WrapperRoot, out type, out nsName);
                if (!namespaces.TryGetValue(nsName, out ns))
                {
                    namespaces[nsName] = ns = new System.CodeDom.CodeNamespace(nsName);
                    ccu.Namespaces.Add(ns);
                }
                ns.Types.Add(type);
            }
            return(ccu);
        }
        public AddControllerDialog(DotNetProject project)
        {
            Build();

            var ext = project.GetService <AspNetAppProjectFlavor> ();

            provider = project.LanguageBinding.GetCodeDomProvider();

            loadedTemplateList = ext.GetCodeTemplates("AddController");
            bool foundEmptyTemplate = false;
            int  templateIndex      = 0;

            foreach (string file in loadedTemplateList)
            {
                string name = System.IO.Path.GetFileNameWithoutExtension(file);
                templateCombo.AppendText(name);
                if (!foundEmptyTemplate)
                {
                    if (name == "Empty")
                    {
                        templateCombo.Active = templateIndex;
                        foundEmptyTemplate   = true;
                    }
                    else
                    {
                        templateIndex++;
                    }
                }
            }
            if (!foundEmptyTemplate)
            {
                throw new Exception("The Empty.tt template is missing.");
            }

            nameEntry.Text     = "Controller";
            nameEntry.Position = 0;

            Validate();
        }
Beispiel #31
0
        public static bool makeCompiler(string sourcePath, string name, string[] referenceAssemblies)
        {
            //  创建编译器实例。
            System.CodeDom.Compiler.CodeDomProvider _CodeDomProvider = System.CodeDom.Compiler
                                                                       .CodeDomProvider.CreateProvider("CSharp");
            //  设置编译参数。
            System.CodeDom.Compiler.CompilerParameters paras = new System.CodeDom.Compiler.CompilerParameters();
            paras.GenerateExecutable = false;                                                          //编译成exe还是dll
            paras.GenerateInMemory   = false;                                                          //是否写入内存,不写入内存就写入磁盘
            paras.OutputAssembly     = Directory.GetCurrentDirectory() + "/Compiler/" + name + ".dll"; //输出路径
            foreach (string referenceAssemblie in referenceAssemblies)
            {
                paras.ReferencedAssemblies.Add(referenceAssemblie);
            }

            //  编译代码。
            System.CodeDom.Compiler.CompilerResults result = _CodeDomProvider
                                                             .CompileAssemblyFromSource(paras, File.ReadAllText(sourcePath, Encoding.Default));

            //  获取编译后的程序集。
            System.Reflection.Assembly assembly = result.CompiledAssembly;
            return(true);
        }
Beispiel #32
0
        private static void GenerateCSCodeForServiceThread()
        {
            try
            {
                string outputFile = "WSDL-Output";

                MetadataExchangeClient mexClient = new MetadataExchangeClient(server.metaAddress, MetadataExchangeClientMode.HttpGet);
                mexClient.ResolveMetadataReferences = true;
                mexClient.OperationTimeout          = TimeSpan.FromSeconds(60);
                mexClient.MaximumResolvedReferences = 1000;

                MetadataSet metaDocs = mexClient.GetMetadata();

                WsdlImporter             importer  = new WsdlImporter(metaDocs);
                ServiceContractGenerator generator = new ServiceContractGenerator();

                // Add our custom DCAnnotationSurrogate
                // to write XSD annotations into the comments.
                object dataContractImporter;

                XsdDataContractImporter xsdDCImporter;
                if (!importer.State.TryGetValue(typeof(XsdDataContractImporter), out dataContractImporter))
                {
                    Console.WriteLine("Couldn't find the XsdDataContractImporter! Adding custom importer.");
                    xsdDCImporter         = new XsdDataContractImporter();
                    xsdDCImporter.Options = new ImportOptions();
                    importer.State.Add(typeof(XsdDataContractImporter), xsdDCImporter);
                }
                else
                {
                    xsdDCImporter = (XsdDataContractImporter)dataContractImporter;
                    if (xsdDCImporter.Options == null)
                    {
                        Console.WriteLine("There were no ImportOptions on the importer.");
                        xsdDCImporter.Options = new ImportOptions();
                    }
                }
                ////TODO: This is a customer implementation using the IDataContractSurrogate interface
                // xsdDCImporter.Options.DataContractSurrogate = new DCAnnotationSurrogate();

                // Uncomment the following code if you are going to do your work programmatically rather than add
                // the WsdlDocumentationImporters through a configuration file.

                /*
                 * // The following code inserts a custom WsdlImporter without removing the other
                 * // importers already in the collection.
                 * System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlImportExtensions;
                 * System.Collections.Generic.List<IWsdlImportExtension> newExts
                 * = new System.Collections.Generic.List<IWsdlImportExtension>();
                 * foreach (IWsdlImportExtension ext in exts)
                 * {
                 * Console.WriteLine("Default WSDL import extensions: {0}", ext.GetType().Name);
                 * newExts.Add(ext);
                 * }
                 * newExts.Add(new WsdlDocumentationImporter());
                 * System.Collections.Generic.IEnumerable<IPolicyImportExtension> polExts = importer.PolicyImportExtensions;
                 * importer = new WsdlImporter(metaDocs, polExts, newExts);
                 */

                System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();

                importer.ImportAllEndpoints();

                foreach (ContractDescription contract in contracts)
                {
                    generator.GenerateServiceContractType(contract);
                }

                if (generator.Errors.Count != 0)
                {
                    throw new Exception("There were errors during code compilation.");
                }

                // Write the code dom
                System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
                options.BracingStyle = "C";
                System.CodeDom.Compiler.CodeDomProvider    codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
                System.CodeDom.Compiler.IndentedTextWriter textWriter      = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));

                codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);

                textWriter.Close();
            }
            catch (FaultException fx)
            {
                MessageBox.Show(fx.Message + " > " + fx.Reason + " > " + fx.Action + " > " + fx.Data + " > " + fx.Code + " > " + fx.InnerException);
            }
            catch (TimeoutException tx)
            {
                MessageBox.Show(tx.Message + " > " + tx.Data + " > " + tx.InnerException);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Beispiel #33
0
        // Can add tags for substitution based on project, language or filename.
        // If overriding but still want base implementation's tags, should invoke base method.
        // We supply defaults whenever it is possible, to avoid having unsubstituted tags. However,
        // do not substitute blanks when a sensible default cannot be guessed, because they result
        //in less obvious errors.
        public virtual void ModifyTags(SolutionItem policyParent, Project project, string language,
                                       string identifier, string fileName, ref Dictionary <string, string> tags)
        {
            DotNetProject    netProject        = project as DotNetProject;
            string           languageExtension = "";
            ILanguageBinding binding           = null;

            if (!string.IsNullOrEmpty(language))
            {
                binding = GetLanguageBinding(language);
                if (binding != null)
                {
                    languageExtension = Path.GetExtension(binding.GetFileName("Default")).Remove(0, 1);
                }
            }

            //need a default namespace or if there is no project, substitutions can get very messed up
            string ns;

            if (project is IDotNetFileContainer)
            {
                ns = ((IDotNetFileContainer)project).GetDefaultNamespace(fileName);
            }
            else
            {
                ns = "Application";
            }

            //need an 'identifier' for tag substitution, e.g. class name or page name
            //if not given an identifier, use fileName
            if ((identifier == null) && (fileName != null))
            {
                identifier = Path.GetFileName(fileName);
            }

            if (identifier != null)
            {
                //remove all extensions
                while (Path.GetExtension(identifier).Length > 0)
                {
                    identifier = Path.GetFileNameWithoutExtension(identifier);
                }
                identifier        = CreateIdentifierName(identifier);
                tags ["Name"]     = identifier;
                tags ["FullName"] = ns.Length > 0 ? ns + "." + identifier : identifier;

                //some .NET languages may be able to use keywords as identifiers if they're escaped
                IDotNetLanguageBinding dnb = binding as IDotNetLanguageBinding;
                if (dnb != null)
                {
                    System.CodeDom.Compiler.CodeDomProvider provider = dnb.GetCodeDomProvider();
                    if (provider != null)
                    {
                        tags ["EscapedIdentifier"] = provider.CreateEscapedIdentifier(identifier);
                    }
                }
            }

            tags ["Namespace"] = ns;
            if (policyParent != null)
            {
                tags ["SolutionName"] = policyParent.Name;
            }
            if (project != null)
            {
                tags ["ProjectName"]     = project.Name;
                tags ["SafeProjectName"] = CreateIdentifierName(project.Name);
                var info = project.AuthorInformation ?? AuthorInformation.Default;
                tags ["AuthorCopyright"] = info.Copyright;
                tags ["AuthorCompany"]   = info.Company;
                tags ["AuthorTrademark"] = info.Trademark;
                tags ["AuthorEmail"]     = info.Email;
                tags ["AuthorName"]      = info.Name;
            }
            if ((language != null) && (language.Length > 0))
            {
                tags ["Language"] = language;
            }
            if (languageExtension.Length > 0)
            {
                tags ["LanguageExtension"] = languageExtension;
            }

            if (fileName != FilePath.Null)
            {
                FilePath fileDirectory = Path.GetDirectoryName(fileName);
                if (project != null && project.BaseDirectory != FilePath.Null && fileDirectory.IsChildPathOf(project.BaseDirectory))
                {
                    tags ["ProjectRelativeDirectory"] = fileDirectory.ToRelative(project.BaseDirectory);
                }
                else
                {
                    tags ["ProjectRelativeDirectory"] = fileDirectory;
                }

                tags ["FileNameWithoutExtension"] = Path.GetFileNameWithoutExtension(fileName);
                tags ["Directory"] = fileDirectory;
                tags ["FileName"]  = fileName;
            }
        }
Beispiel #34
0
 public static System.CodeDom.CodeCompileUnit Create(System.Collections.IDictionary resourceList, string baseName, string generatedCodeNamespace, string resourcesNamespace, System.CodeDom.Compiler.CodeDomProvider codeProvider, bool internalClassout, System.String[]& unmatchable)
 {
 }
Beispiel #35
0
 public static string VerifyResourceName(string key, System.CodeDom.Compiler.CodeDomProvider provider)
 {
 }
Beispiel #36
0
 public static System.CodeDom.CodeCompileUnit Create(string resxFile, string baseName, string generatedCodeNamespace, System.CodeDom.Compiler.CodeDomProvider codeProvider, bool internalClassout, System.String[]& unmatchable)
 {
 }