Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 项目集合生成错误记录器_C#_Logging_Build - Fatal编程技术网

C# 项目集合生成错误记录器

C# 项目集合生成错误记录器,c#,logging,build,C#,Logging,Build,我想知道在运行时构建C#项目之后,如何获得BuildResult的错误 在上午,我有一个: string projectFileName = @"C:\Users\Inspire\Documents\Mono Projects\Library\Library\Library.csproj"; FileLogger fileLogger = new FileLogger(); fileLogger.Parameters = @"logfile=" + @"C:\Users\Inspire\Docu

我想知道在运行时构建C#项目之后,如何获得
BuildResult
的错误

在上午,我有一个:

string projectFileName = @"C:\Users\Inspire\Documents\Mono Projects\Library\Library\Library.csproj";
FileLogger fileLogger = new FileLogger();
fileLogger.Parameters = @"logfile=" + @"C:\Users\Inspire\Documents\Mono Projects\Library\Library\log.text";

ProjectCollection projectCollection = new ProjectCollection();
projectCollection.RegisterLogger(fileLogger);

Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();       
GlobalProperty.Add("Configuration", "Debug");       
GlobalProperty.Add("Platform", "x86");

BuildRequestData buildRequest = new BuildRequestData(projectFileName, GlobalProperty, null, new string[] { "Build" }, null);
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(new BuildParameters(projectCollection), buildRequest);
projectCollection.UnregisterAllLoggers();
Console.WriteLine(buildResult.OverallResult.ToString());

                    /* TODO: handle errors */
string projectFileName=@“C:\Users\Inspire\Documents\Mono Projects\Library\Library.csproj”;
FileLogger FileLogger=新的FileLogger();
fileLogger.Parameters=@“logfile=“++”C:\Users\Inspire\Documents\Mono Projects\Library\Library\log.text”;
ProjectCollection ProjectCollection=新建ProjectCollection();
projectCollection.RegisterLogger(文件记录器);
Dictionary GlobalProperty=新字典();
添加(“配置”、“调试”);
添加(“平台”、“x86”);
BuildRequestData buildRequest=新建BuildRequestData(projectFileName,GlobalProperty,null,新字符串[]{“Build”},null);
BuildResult BuildResult=BuildManager.DefaultBuildManager.Build(新的BuildParameters(projectCollection),buildRequest);
projectCollection.UnregisterAllLoggers();
WriteLine(buildResult.OverallResult.ToString());
/*TODO:处理错误*/
我想知道错误,以便在构建之后处理它们(这里是“处理错误”的注释部分),我添加了一个
FileLogger
文件,如您所见,但该文件始终为空(有错误或无错误)


谢谢

在这一点上有点晚了,但是对于其他试图这样做的人来说,我也有同样的问题。出于某种原因,当您向ProjectCollection注册记录器时,它不会通过构造函数传递到BuildParameters对象中-检查后,新的BuildParameters(pc)。记录器为空。这感觉像是黑客攻击,但我只是在BuildParameter对象上手动设置logger集合,如下所示:

FileLogger fl = new FileLogger() { Parameters = @"logfile=somepath" };

Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
GlobalProperty.Add("Configuration", "Debug");
GlobalProperty.Add("Platform", "x86");

BuildRequestData BuildRequest = new BuildRequestData(slnPath, GlobalProperty, null, new string[] { "Build" }, null);

BuildParameters bp = new BuildParameters();
bp.Loggers = new List<Microsoft.Build.Framework.ILogger> { fl }.AsEnumerable();

BuildResult buildResult = BuildManager.DefaultBuildManager.Build(bp, BuildRequest);
FileLogger fl=newfilelogger(){Parameters=@“logfile=somepath”};
Dictionary GlobalProperty=新字典();
添加(“配置”、“调试”);
添加(“平台”、“x86”);
BuildRequestData BuildRequest=新建BuildRequestData(slnPath,GlobalProperty,null,新字符串[]{“Build”},null);
BuildParameters bp=新的BuildParameters();
bp.Loggers=新列表{fl}.AsEnumerable();
BuildResult BuildResult=BuildManager.DefaultBuildManager.Build(bp,BuildRequest);

如果使用此方法,请确保不要调用pc.RegisterLogger,否则会出现多个进程试图访问日志文件的错误。

检查详细信息。尝试使用此-new FileLogger(){Parameters=@“logfile=d:\somelog.txt”,Verbosity=LoggerVerbosity.Detailed})