예제 #1
0
        protected Configuration CreateConfigurationBlock(Config ConfigBlock, string AssemblyName, string OuputType)
        {
            Configuration ConfObj = new Configuration();
            CodeGeneration CodeGenObj = new CodeGeneration();
            Execution ExecutionObj = new Execution();
            Output OutputObj = new Output();

            ConfObj.runwithwarnings = "False";
            ConfObj.name = ConfigBlock.Name;

            // CodeGenObj member population
            CodeGenObj.runtime = "MsNet";
            CodeGenObj.compiler = "Csc";
            CodeGenObj.warninglevel = ConfigBlock.WarningLevel;
            CodeGenObj.nowarn = "";
            CodeGenObj.includedebuginformation = (ConfigBlock.DebugSymbols == true) ?
                CodeGenerationIncludedebuginformation.True :
                CodeGenerationIncludedebuginformation.False;

            CodeGenObj.optimize = (ConfigBlock.Optimize == true) ? "True" : "False";

            if (ConfigBlock.AllowUnsafeBlocks == true)
            {
                CodeGenObj.unsafecodeallowed = CodeGenerationUnsafecodeallowed.True;
            }
            else
            {
                CodeGenObj.unsafecodeallowed = CodeGenerationUnsafecodeallowed.False;
            }
            if (ConfigBlock.CheckForOverflowUnderflow == true)
            {
                CodeGenObj.generateoverflowchecks = "True";
            }
            else
            {
                CodeGenObj.generateoverflowchecks = "False";
            }

            CodeGenObj.mainclass = "";
            CodeGenObj.target = OuputType;
            CodeGenObj.generatexmldocumentation = "False";
            CodeGenObj.win32Icon = "";

            // ExecutionObj member population
            ExecutionObj.commandlineparameters = "";
            ExecutionObj.consolepause = "True";

            // OutputObj member population
            OutputObj.directory = ConfigBlock.OutputPath.Replace("\\", "/");
            OutputObj.assembly = AssemblyName;
            OutputObj.executeScript = "";
            OutputObj.executeBeforeBuild = "";
            OutputObj.executeAfterBuild = "";

            ConfObj.CodeGeneration = CodeGenObj;
            ConfObj.Execution = ExecutionObj;
            ConfObj.Output = OutputObj;

            return ConfObj;
        }
		protected SolutionItemConfiguration CreateConfigurationBlock (MonoDevelop.Projects.DotNetProject project, Config ConfigBlock, string AssemblyName, string OuputType, IProgressMonitor monitor)
		{
			DotNetProjectConfiguration confObj = project.CreateConfiguration (ConfigBlock.Name) as DotNetProjectConfiguration;

			confObj.RunWithWarnings = false;
			confObj.DebugMode = ConfigBlock.DebugSymbols;
			project.CompileTarget = (CompileTarget) Enum.Parse (typeof(CompileTarget), OuputType, true);
			
			string dir = MapPath (project.BaseDirectory, ConfigBlock.OutputPath);
			if (dir == null) {
				dir = Path.Combine ("bin", ConfigBlock.Name);
				monitor.ReportWarning (string.Format (GettextCatalog.GetString ("Output directory '{0}' can't be mapped to a local directory. The directory '{1}' will be used instead"), ConfigBlock.OutputPath, dir));
			}
			confObj.OutputDirectory = dir;
			confObj.OutputAssembly = AssemblyName;
			
			CSharpCompilerParameters compilerParams = new CSharpCompilerParameters ();
			compilerParams.WarningLevel = ConfigBlock.WarningLevel;
			compilerParams.NoWarnings = "";
			compilerParams.Optimize = ConfigBlock.Optimize;
			compilerParams.DefineSymbols = ConfigBlock.DefineConstants;
			compilerParams.UnsafeCode = ConfigBlock.AllowUnsafeBlocks; 
			compilerParams.GenerateOverflowChecks = ConfigBlock.CheckForOverflowUnderflow;
			
			return confObj;
		}