NAnt.MSBuild.NAntLogger.Create C# (CSharp) Method

Create() static private method

static private Create ( NAnt framework, NAnt.Core.Task task, NAntLoggerVerbosity verbosity, NAnt engine ) : NAntLogger
framework NAnt
task NAnt.Core.Task
verbosity NAntLoggerVerbosity
engine NAnt
return NAntLogger
        internal static NAntLogger Create(NAnt.Core.FrameworkInfo framework, Task task, NAntLoggerVerbosity verbosity, NAnt.MSBuild.BuildEngine.Engine engine)
        {
            CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("C#");
            CompilerParameters par = new CompilerParameters();
            AssemblyName msbuildFrameworkName = engine.Assembly.GetName();
            msbuildFrameworkName.Name = "Microsoft.Build.Framework";
            Assembly msbuildFramework = Assembly.Load(msbuildFrameworkName);

            par.ReferencedAssemblies.Add(msbuildFramework.Location);
            par.ReferencedAssemblies.Add(typeof(NAnt.Core.Task).Assembly.Location);
            par.ReferencedAssemblies.Add(typeof(NAntLogger).Assembly.Location);
            CompilerResults res = codeDomProvider.CompileAssemblyFromSource(par, _impl);
            if (res.Errors.HasErrors) {
                return null;
            }

            Type t = res.CompiledAssembly.GetType("NAntLoggerImpl");
            return (NAntLogger)Activator.CreateInstance(t, task, verbosity);
        }

Usage Example

示例#1
0
        public static NAnt.MSBuild.BuildEngine.Engine CreateMSEngine(NAnt.VSNet.Tasks.SolutionTask solutionTask)
        {
            if (_msbuild != null)
            {
                return(_msbuild);
            }

            try {
                _msbuild = NAnt.MSBuild.BuildEngine.Engine.LoadEngine(solutionTask.Project.TargetFramework);
            } catch (Exception e) {
                throw new BuildException(
                          String.Format(
                              "MSBuild v{0} can't be found. It is needed for building MSBuild projects. VS2005 and later is using MSBuild projects for C# and VB",
                              solutionTask.Project.TargetFramework.Version),
                          Location.UnknownLocation, e);
            }
            _msbuild.UnregisterAllLoggers();

            NAntLoggerVerbosity _verbosity = solutionTask.Verbose ? NAntLoggerVerbosity.Normal : NAntLoggerVerbosity.Minimal;
            NAntLogger          _logger    = NAntLogger.Create(solutionTask.Project.TargetFramework, solutionTask, _verbosity, _msbuild);

            if (_logger != null)
            {
                _msbuild.RegisterLogger(_logger);
            }

            solutionTask.Log(Level.Verbose, "Using MSBuild version {0}.", FileVersionInfo.GetVersionInfo(_msbuild.Assembly.Location).ProductVersion);

            return(_msbuild);
        }
NAntLogger