Пример #1
0
        private void CompileCU(bool console, string resourceFile, CodeCompileUnit cu)
        {
            CSharpCodeProvider p       = new CSharpCodeProvider();
            ICodeCompiler      cc      = p.CreateCompiler();
            CompilerParameters options = new CompilerParameters();

            options.ReferencedAssemblies.Add(genData.ZipDllName);
            // required
            options.ReferencedAssemblies.Add("System.dll");
            if (!console)
            {
                options.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            }
            options.GenerateExecutable = true;
            options.OutputAssembly     = OutDirMan.MakeOutFileName(genData.ExeFileName);
            options.CompilerOptions   += "/res:\"" + resourceFile + "\"";
            if (!console)
            {
                options.CompilerOptions += " /target:winexe";
            }
            if (genData.XPlatform != null)
            {
                options.CompilerOptions += " /platform:" + genData.XPlatform;                 //"x86";
            }
            if (genData.IconFile != null)
            {
                options.CompilerOptions += MakeIconArg(true);
            }
            if (genData.LicenseResourceFile != null)
            {
                options.CompilerOptions += MakeLicArg(true);
            }
            CompilerResults cr = cc.CompileAssemblyFromDom(options, cu);

            if (cr.Errors.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                Logger.Log("\r\n# NetzStarter compilation errors:\r\n");
                foreach (CompilerError err in cr.Errors)
                {
                    string t = err.ErrorNumber + " " + err.ErrorText + " " + err.FileName + " L:" + err.Line + " C:" + err.Column;
                    sb.Append(t).Append(Environment.NewLine);
                    Logger.Log("  " + t);
                }
                sb.Append(Environment.NewLine);
                sb.Append(((CodeSnippetCompileUnit)cu).Value);
                if (sb.Length > 0)
                {
                    try
                    {
                        string errFile = "error.txt";
                        sb.Append(Environment.NewLine).Append(".NETZ Version: ").Append(System.Reflection.Assembly.GetExecutingAssembly().FullName);
                        sb.Append(Environment.NewLine).Append(".NET  Version: ").Append(Environment.Version.ToString());
                        sb.Append(Environment.NewLine).Append(netz.InputParser.GetInnerTemplatesFingerPrint(this.genData.CompressProviderDLL));
                        sb.Append(Environment.NewLine).Append(Environment.StackTrace);
                        sb.Append(Environment.NewLine).Append(DateTime.Now.ToString());
                        sb.Append(Environment.NewLine);

                        Utils.WriteTextFile(errFile, sb.ToString());
                        Logger.Log(string.Empty);
                        errFile = OutDirMan.MakeOutFileName("error.txt");
                        ColorConsole c = null;
                        try
                        {
                            c = new ColorConsole();
                            c.SetColor(ColorConsole.FOREGROUND_RED | ColorConsole.FOREGROUND_INTENSITY);
                        }
                        catch {}

                        Logger.Log("! Please email the error file: " + errFile);
                        Logger.Log("! To: " + Help.EMAIL);



                        Logger.Log(string.Empty);
                        Logger.Log("! To help locate better the errors add the -v option to");
                        Logger.Log("! your current netz command-line and email also the screen output!");
                        Logger.Log("! No support is provided for custom startup and compress templates!");
                        Logger.Log("! Check http://madebits.com/netz/ for more help on how to report a bug!");

                        try
                        {
                            if (c != null)
                            {
                                c.Reset();
                            }
                        }
                        catch {}
                        //TODO send email
                    }
                    catch {}
                }
            }
        }
		private void CompileCU(bool console, string resourceFile, CodeCompileUnit cu)
		{
			CSharpCodeProvider p = new CSharpCodeProvider();
			ICodeCompiler cc = p.CreateCompiler();
			CompilerParameters options = new CompilerParameters();
			options.ReferencedAssemblies.Add(genData.ZipDllName);
			// required
			options.ReferencedAssemblies.Add("System.dll");
			if(genData.IsService)
			{
				//options.ReferencedAssemblies.Add("System.Configuration.dll");
				options.ReferencedAssemblies.Add("System.Configuration.Install.dll");
				options.ReferencedAssemblies.Add("System.ServiceProcess.dll");
			}
			if(!console)
			{
				options.ReferencedAssemblies.Add("System.Windows.Forms.dll");
			}
			options.GenerateExecutable = true;
			options.OutputAssembly = OutDirMan.MakeOutFileName(genData.ExeFileName);
			options.CompilerOptions += "/res:\"" + resourceFile + "\"";
			if(!console)
			{
				options.CompilerOptions += " /target:winexe";
			}
			if(genData.XPlatform !=  null)
			{
				options.CompilerOptions += " /platform:" + genData.XPlatform; //"x86";
			}
			if(genData.IconFile != null)
			{
				options.CompilerOptions += MakeIconArg(true);
			}
			if(genData.LicenseResourceFile != null)
			{
				options.CompilerOptions += MakeLicArg(true);
			}
			if((genData.OtherCompOptions != null) && (genData.OtherCompOptions.Length > 0))
			{
				options.CompilerOptions += " " +  genData.OtherCompOptions;
			}
			CompilerResults cr = cc.CompileAssemblyFromDom(options, cu);
			if(cr.Errors.Count > 0)
			{
				StringBuilder sb = new StringBuilder();
				Logger.Log("\r\n# NetzStarter compilation errors:\r\n");
				foreach(CompilerError err in cr.Errors)
				{
					string t = err.ErrorNumber + " " + err.ErrorText + " " + err.FileName + " L:" + err.Line + " C:" + err.Column;
					sb.Append(t).Append(Environment.NewLine);
					Logger.Log("  " + t);
				}
				sb.Append(Environment.NewLine);
				sb.Append(((CodeSnippetCompileUnit)cu).Value);
				if(sb.Length > 0)
				{
					try
					{
						string errFile = "error.txt";
						sb.Append(Environment.NewLine).Append(".NETZ Version: ").Append(System.Reflection.Assembly.GetExecutingAssembly().FullName);
						sb.Append(Environment.NewLine).Append(".NET  Version: ").Append(Environment.Version.ToString());
						sb.Append(Environment.NewLine).Append(netz.InputParser.GetInnerTemplatesFingerPrint(this.genData.CompressProviderDLL));
						sb.Append(Environment.NewLine).Append(Environment.StackTrace);
						sb.Append(Environment.NewLine).Append(DateTime.Now.ToString());
						sb.Append(Environment.NewLine);

						Utils.WriteTextFile(errFile, sb.ToString());
						Logger.Log(string.Empty);
						errFile = OutDirMan.MakeOutFileName("error.txt");
						ColorConsole c = null;
						try
						{
							c = new ColorConsole();
							c.SetColor(ColorConsole.FOREGROUND_RED | ColorConsole.FOREGROUND_INTENSITY);
						}
						catch{}

						Logger.Log("! Please email the error file: " + errFile);
						Logger.Log("! To: " + Help.EMAIL);

						

						Logger.Log(string.Empty);
						Logger.Log("! To help locate better the errors add the -v option to");
						Logger.Log("! your current netz command-line and email also the screen output!");
						Logger.Log("! No support is provided for custom startup and compress templates!");
						Logger.Log("! Check http://madebits.com/netz/ for more help on how to report a bug!");

						try
						{
							if(c != null) c.Reset();
						}
						catch{}
						//TODO send email
					}
					catch{}
				}
			}
		}