c# - Visual Studio 2015 - EnvDTE Read ErrorList -


i'm create small build tool. things should do: try build solution , output errors. not have following problem: in case build fails cannot read errorlist. program gets stuck , waits until forever.

i've created small test class nothing else creating instance of visual studio 2015, build given solution , read out errorlist on build fail.

class class1 {     dte2 dte = (dte2)system.activator.createinstance(system.type.gettypefromprogid("visualstudio.dte.14.0", true));      public void test()     {         int id = dte.localeid;         //dte.mainwindow.visible = true;          dte.events.buildevents.onbuilddone += new _dispbuildevents_onbuilddoneeventhandler(buildevents_onbuilddone);          string solutionfile = @"c:\myprojects\solutionwithbuilderrors.sln";          dte.solution.open(solutionfile);          while (!dte.solution.isopen)             system.threading.thread.sleep(100);          console.writeline("start build");         dte.solution.solutionbuild.build(true);         console.writeline("finished build");          dte.quit();     }      private void buildevents_onbuilddone(vsbuildscope scope, vsbuildaction action)     {         console.writeline("buildevents_onbuilddone called");          int buildinfo = dte.solution.solutionbuild.lastbuildinfo;         switch (buildinfo)         {             case 0:                 console.writeline("build erfolgreich");                 break;             case 1:                 console.writeline("build fehlerhaft");                  geterrorlist();                 break;         }     }      private void geterrorlist()     {         //dte.executecommand("view.errorlist", " ");          console.writeline("lade tool windows");         toolwindows tw = dte.toolwindows;         console.writeline("geladen, tool windows");          console.writeline("lade errorlist");         errorlist el = tw.errorlist;         console.writeline("geladen, errorlist");          el.showerrors = true;          console.writeline("lese error liste");          //dte.executecommand("view.errorlist", " ");         //erroritems errors = dte.toolwindows.errorlist.erroritems;         console.writeline("#errors: " + dte.toolwindows.errorlist.erroritems.count);         (int = 1; <= dte.toolwindows.errorlist.erroritems.count; i++)         {             erroritem ei = dte.toolwindows.errorlist.erroritems.item(i);             string errorlevel = "n/a";             errorlevel = ei.errorlevel.tostring();              string desc = "n/a";             if (ei.description != null)                 desc = ei.description.tostring();              string file = "n/a";             if (ei.filename != null)                 file = ei.filename.tostring();              string line = "n/a";             line = ei.line.tostring();              string error = string.format("{0}: {1}, file: {2}, line: {3}", errorlevel, desc, file, line);              console.writeline(error);         }     } } 

for testing purposes, create console application. in main:

class1 c1 = new class1(); c1.test();  console.readline(); 

necessary imports: envdte envdte80

i've tried run visual studio in visible-mode , in case visual studio instance gets focus while in "wait errorlist read" errorlist can read. if visual studio never gets focus (because running invisible or never click while running visible) not possible receive errorlist.

maybe there way read out errorlist? found solution i'm using =(

maybe can me out or verify there troubles errorlist.

this way @ errorlist - if that's problem:

        envdte.window window = this.dte.windows.item(envdte80.windowkinds.vswindowkinderrorlist);         envdte80.errorlist sel = (envdte80.errorlist)window.selection; 

but both ways should equivalent. microsoft did re-write error list window implementation vs 2015 - introducing issues in process, i'd suggest trying code against earlier versions.


Comments

Popular posts from this blog

javascript - How to get current YouTube IDs via iMacros? -

c# - Maintaining a program folder in program files out of date? -

emulation - Android map show my location didn't work -