Я пытаюсь написать простую IDE для C #.Я реализовал проекты Building следующим образом:
var path = ProjectPath;
var props = new Dictionary<string, string>
{
{"Configuration", "Debug"},
{"Platform", "AnyCPU"},
{"OutputPath", ProjectPath}
};
var pc = new ProjectInstance(path, props, "14.0");
var logger = new ConsoleLogger();
logger.Verbosity = LoggerVerbosity.Diagnostic;
var buildParams = new BuildParameters()
{
DetailedSummary = true,
Loggers = new List<ILogger> { new ConsoleLogger() },
DefaultToolsVersion = "14.0"
};
var targets = new List<string> { "PrepareForBuild", "Build" };
var reqData = new BuildRequestData(pc, targets.ToArray());
BuildManager.DefaultBuildManager.BeginBuild(buildParams);
var buildResult = BuildManager.DefaultBuildManager.BuildRequest(reqData);
В моем XAML-файле есть TextBox, который я хотел бы связать с сообщениями ConsoleLogger.Однако объект ConsoleLogger работает совсем не так, как Control
объекты в WPF.Моя первоначальная интуитивная идея заключалась в том, чтобы просто написать обработчик событий для обработки ошибок и сообщений, но ConsoleLogger
не позволяет мне это делать.Как бы я решил эту проблему?
Примечание: в .NET существует множество классов ConsoleLogger
, о которых я говорю конкретно: Microsoft.Build.BuildEngine.ConsoleLogger