我希望挂钩msbuild(和/或dotnet build)的输出。
我找到了一种在Visual Studio中将文本传递给输出窗口的方法。我可以编写一个包含IClassifier的Visual Studio扩展(VSIX)。如果我像这样添加IClassifierProvider
:
[ContentType("output")]
[Export(typeof(IClassifierProvider))]
public class MyClassifierProvider : IClassifierProvider
{
public IClassifer GetClassifier(ITextBuffer textBuffer)
{
return new MyClassifer();
}
}
然后在MyClassifier
:
public class MyClassifier : IClassifier
{
public IList<ClassificationSpan> GetClassificationSpans(SnapshotSpan span)
{
// I will get the build output here, line by line
}
public event EventHandler<ClassificationChangedEventArgs> ClassificationChanged;
}
所以我可以在GetClassificationSpans
方法中获得构建输出,但这意味着我需要返回该行的分类。我对此不感兴趣。我只想捕获构建输出并用它做其他事情。例如,我可能想要将所有警告写入文件。
这让我想知道IClassifier
路线是否可行。
我以为我可以挂钩一些Roslyn API,但从我读到的内容来看,这对分析代码非常有用。我想要的是获得完整的构建输出,包括所有语句(即您在“输出”窗口中看到的内容)。
所以现在我正在考虑编写一个VSIX,但不要认为IClassifier
是我最好的选择。