如何挂钩到msbuild输出

时间:2018-04-17 08:14:24

标签: msbuild output vsix

我希望挂钩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是我最好的选择。

0 个答案:

没有答案