Ben*_*ins 42 .net c# visual-studio-2010 visual-studio
{rant} 首先我想说这不是重复的.我之前已经问过这个问题,但是当它不是时,它会被重复关闭.这个问题是针对VS 2010的特定问题以及VS 2008中所谓的重复工作的答案,而不是VS 2010中的答案(至少不适合我或我认识的任何人).因此,在您将某些内容视为重复内容之前,请仔细阅读该问题并亲自尝试答案,看看它是否真的有效.为咆哮道歉,但没有明显的方式联系SO警察关闭问题或重新开放.{/咆哮}
在工作中,我们有一个包含80多个项目的C#解决方案.在VS 2008中,我们使用宏来在解决方案中的项目无法构建时立即停止编译(请参阅此问题以获取VS 2005和VS 2008的几个选项:首次编译错误时自动停止Visual C++ 2008构建?).
是否有可能在VS 2010中做同样的事情?我们发现在VS 2010中,宏不起作用(至少我无法使它们工作),因为看起来环境事件不会在VS 2010中触发.
默认行为是尽可能继续并在错误窗口中显示错误列表.一旦遇到错误(文件级)或项目无法构建(项目级别),我很高兴它能够立即停止.
仅限VS 2010的答案.如果宏确实有效,那么可以理解如何为VS 2010配置它们的详细说明.
谢谢.
Noa*_*rds 28
(您现在可以将其作为扩展名下载,如果您不想自己构建它)
这个答案仅适用于VS2010(似乎公平:]).我把源代码放在我的github页面上.在构建之前,您需要安装SDK.完成后,只需从github(包括项目文件)中获取完整的源代码并构建它.您可以通过在构建输出中找到VSIX并打开它来将输出安装到正常的VS实例中.
重要的是:
public void TextViewCreated(IWpfTextView textView)
{
var dte = GlobalServiceProvider.GetService(typeof(DTE)) as DTE;
textView.TextBuffer.Changed += (sender, args) =>
{
//Output window is friendly and writes full lines at a time, so we only need to look at the changed text.
foreach (var change in args.Changes)
{
string text = args.After.GetText(change.NewSpan);
if (BuildError.IsMatch(text))
dte.ExecuteCommand("Build.Cancel");
};
}
}
Run Code Online (Sandbox Code Playgroud)
... BuildError上面定义的正则表达式可以调整.如果您对修改代码有任何疑问,请与我们联系.
| 归档时间: |
|
| 查看次数: |
5901 次 |
| 最近记录: |