Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Dá se ve Visual Studio 2010 zapnout inkrementální building pro C#?

Zdrar,
zřejmě otázka na zdejší C# guru...:-)

Představoval bych si to jako v Eclipse, zmáčknu save a automaticky se mi buildnou změny. Podporuje VS něco jako "hot code replace"? Typicky: Mám aplikaci v debugu, dopíšu nějaký kód, dám save a debuguju dál s těmito změnami.

Díky za odpovědi.

Předmět Autor Datum
Našel jsem jen: http://connect.microsoft.com/VisualStudio/feedback /details/551848/support-increment…
MaSo 18.02.2011 10:59
MaSo
http://msdn.microsoft.com/en-us/library/bcew296c.a spx
Wikan 18.02.2011 11:01
Wikan
Pěkné, ale dost omezující a otravné, když je nutné nejdřív program breaknout (pause), napsat změny a…
siberian 18.02.2011 11:08
siberian
Dvě kliknutí snad nikoho nezabijí.
Wikan 18.02.2011 11:11
Wikan
No jo, dvě kliknutí kvůli jedné změny. Jenže když upravuješ a zkoušíš dookola, jak je často běžné, t…
siberian 18.02.2011 11:15
siberian
Dík. Vyzkouším. Koukal jsem na limitace a např. tyhle věci mi přijdou jako dost hrozné: Debugging m…
MaSo 18.02.2011 11:15
MaSo
Debuggování staré verze kódu poté, co nová verze nemohla být kvůli chybám přeložena.
Wikan 18.02.2011 11:18
Wikan
Přeložit si to umím...:-) Mám si to představit tak, že debuguju, breaknu program, dopíšu nějaký kód…
MaSo 18.02.2011 11:22
MaSo
Nevím, zkus to ;-)
Wikan 18.02.2011 11:24
Wikan
Nie, ak dopíšeš nejaký kód, v ktorom je chyba, tak v ladení môžeš pokračovať až potom, ako tú chybu…
los 20.02.2011 10:44
los
Někdo něco k tomu inkrementálnímu buildingu?
MaSo 19.02.2011 12:37
MaSo
Inkrementálny build a Hot Code Replace sú dve rozdielne veci. Inkrementálny build robí Visual Studio…
los 19.02.2011 13:32
los
Inkrementálny build robí Visual Studio automaticky. No určitě ho ale nespouští při uložení změn. Ko…
MaSo 19.02.2011 13:39
MaSo
Napríklad: http://www.coderanch.com/t/518046/vc/Eclipse-Debug ger-Hot-Code-Replacement No určitě ho…
los 19.02.2011 13:44
los
Napríklad: http://www.coderanch.com/t/518046/vc/Eclipse-Debug ger-Hot-Code-Replacement No to ale v…
MaSo 19.02.2011 13:50
MaSo
Dosť otravné obmedzenie, nemyslíš? Ďalšie obmedzenie je, že keď krokuješ program a nájdeš v ňom chyb…
los 19.02.2011 14:24
los
Dosť otravné obmedzenie, nemyslíš? No nevím, debugovat main metodu jsem jestě nepotřeboval, ty moje…
MaSo 19.02.2011 14:38
MaSo
Keď chceš krokovať a za behu dolaďovať zložitejší algoritmus, tak je nemysliteľné, aby ťa debugger p…
los 19.02.2011 18:30
los
Ach jo, tak updatuj na poslední verzi...
MaSo 19.02.2011 19:59
MaSo
Prostredie som dostal predinštalované a že nemám aktuálnu verziu mi nenapadlo - vďaka za radu, určit…
los 20.02.2011 10:00
los
Tak to s tím Find the Breakpoint, to je naprosto kritická věc, která musí každého trápit strašně čas…
siberian 19.02.2011 20:49
siberian
Nehledě na to, že je to rok a půl starý "problém", který je dávno opravený...:-) (mluvím o tom Find…
MaSo 19.02.2011 20:56
MaSo
Ten Find the Breakpoint je problém, ktorý vo Visual Studiu nebol ani pred desiatimi rokmi. Pri laden…
los 20.02.2011 10:22
los
Run to Line (Ctrl+R) je niečo úplne iné - pomocou neho nemôžeš vrátiť vykonávanie programu o pár ria…
MaSo 20.02.2011 11:25
MaSo
S Find the Breakpoint problémem jsem se vážně nikdy nesetkal (teď když jsem to taklhe naspal, je jas…
siberian 20.02.2011 11:38
siberian
To s dlhým reťazcom som myslel taký prípad, kedy pri ladení vidím v Expressions len časť reťazca, kt…
los 20.02.2011 12:04
los
Expression View je v Eclipse rozděleno na tři části. Ve třetí části je možné text vidět zalomený a c…
siberian 20.02.2011 16:24
siberian
Hmmm, tú tretiu časť som zrejme nejako prehliadol... Áno, môžeš aj preskakovať časti metódy bez toh…
los 20.02.2011 17:22
los
Bez Ctrl+Alt+LMB si dokážu představit život, ale občas je to pěkná zkratka. Když VS umí přeskakovat…
siberian 20.02.2011 19:07
siberian
Ešte aby som sa vrátil k tvojej otázke, či ide VS2010 nastaviť tak, aby sa choval ako Eclipse - nejd…
los 20.02.2011 10:58
los
Visual Studio je několik let po zadu téměř ve všem za klasickým triem Java IDE a dlouho tomu tak bud…
siberian 19.02.2011 16:01
siberian
Naozaj skvelý dôkaz - ak používaš Eclipse, tak si určite všimneš, že to Building sa v stavovom riadk…
los 19.02.2011 18:57
los
My ho tam právě nemáme, jen jsem kdysi zkoušel trialku na 30 dní (ještě ve VS2008). Teďka dělám denn…
MaSo 19.02.2011 19:12
MaSo
Moje zkušenosti asi nejsou moc relevantní, protože v Eclipse jsem dělal naposled někdy před 2 roky,…
Wikan 19.02.2011 19:58
Wikan
Neviem presne, na akom hardvéri to beží, ale má to 4GB RAM a procesor je i3 alebo i5. S výkonom som…
los 20.02.2011 10:37
los
Já mám právě jen 2GB, nějake C2D na 2.0 GHz, WXP. A je to dost pomalé, Eclipse se mi na tomto HW zdá…
MaSo 20.02.2011 11:30
MaSo
Eclipse, verze JDT 3.6.1: Při uložení souboru *.java,*.aj občas problikne Building workspace. Při sp…
siberian 19.02.2011 20:21
siberian
Takže to uzavřeme. Shrnutí: - Inkrementální build jako v Eclipse ve VS2010 není. - obdoba Hot Code… poslední
MaSo 21.02.2011 12:28
MaSo

Dík. Vyzkouším. Koukal jsem na limitace a např. tyhle věci mi přijdou jako dost hrozné:

Debugging managed code when the target is a 64-bit application. If you want to use Edit and Continue, you must set the target to x86. (Project Properties, Compile tab, Advanced Compiler setting.)

Debugging an application that has Attach to instead of running the application by choosing Start from the Debug menu.

Tomuhle nerozumím, co že to vlastně nejde.

Debugging an old version of your code after a new version failed to build because of build errors.

Přeložit si to umím...:-)

Mám si to představit tak, že debuguju, breaknu program, dopíšu nějaký kód a bude v něm chyba. Pustím debug dál, vyhodí mi to error a přijdu o celou debug session? ::)

Inkrementálny build a Hot Code Replace sú dve rozdielne veci. Inkrementálny build robí Visual Studio automaticky.

Ekvivalentom pre Hot Code Replace vo Visual Studiu je Edit and Continue. Oproti Hot Code Replace funguje intuitívnejším spôsobom v tom, že umožňuje upravovať kód, ktorý programátor práve krokuje - na rozdiel od Hot Code Replace, ktorý v takomto najbežnejšom prípade zlyháva.

Inkrementálny build robí Visual Studio automaticky.

No určitě ho ale nespouští při uložení změn. Kolikrát se totiž dozvím, že mám chybu v kódu až po zmáčknutí F5.

Oproti Hot Code Replace funguje intuitívnejším spôsobom v tom, že umožňuje upravovať kód, ktorý programátor práve krokuje - na rozdiel od Hot Code Replace, ktorý v takomto najbežnejšom prípade zlyháva.

Jak zlyhává? V Eclipsu můžu klidně upravovat kód, který právě debuguju. Kdyby tohle nešlo, tak si ani nedokážu představit, k čemu by Hot Code Replace bylo dobré...

Napríklad: http://www.coderanch.com/t/518046/vc/Eclipse-Debug ger-Hot-Code-Replacement

No to ale vyplývá z limitace Hot Code Replace, ten totiž neumí měnit kód metody main(). Tady nelze mluvit o selhání. Edit and Continue zas nefunguje při Attach to..., což Hot Code Replace umí a to dokonce i při remote debuggingu.

Áno, nespúšťa ho pri uložení zmien - prečo by mal?

Jsem na to zvyklý z Eclipse. :-) Jen mě zajímá, jestli jde docílit stejného chování. Dělat něco automaticky a dělat něco na stisk klávesy, je podstatný rozdíl. :-)

Dosť otravné obmedzenie, nemyslíš? Ďalšie obmedzenie je, že keď krokuješ program a nájdeš v ňom chybu, ktorú opravíš, tak pri Hot Code Replace "pokračuješ" v ladení od začiatku metódy, zatiaľ čo pri Edit and Continue pokračuješ tam, kde si mal program zastavený. Celkovo ladenie vo Visual Studiu je oveľa pohodlnejšie ako v Eclipse.

K tomu automatickému spúšťaniu buildu: Ja keď odchádzam z práce, tak chcem len uložiť zmeny - určite nemám záujem čakať na build, o ktorý nestojím, a potom ešte čakať na vypnutie Eclipse... :-)

Dosť otravné obmedzenie, nemyslíš?

No nevím, debugovat main metodu jsem jestě nepotřeboval, ty moje mívájí většinou jen jeden řádek. :-)

Ďalšie obmedzenie je, že keď krokuješ program a nájdeš v ňom chybu, ktorú opravíš, tak pri Hot Code Replace "pokračuješ" v ladení od začiatku metódy, zatiaľ čo pri Edit and Continue pokračuješ tam, kde si mal program zastavený.

To sice jo, ale zdrží to tak na dvě sekundy. Do místa změny si dáš breakpoint a začátek metody přeskočíš.

Celkovo ladenie vo Visual Studiu je oveľa pohodlnejšie ako v Eclipse.

S tímhle já nikdy souhlasit nebudu...:-) Pokud jde o debug, tak VS neumí ani polovinu toho, co Eclipse.

K tomu automatickému spúšťaniu buildu: Ja keď odchádzam z práce, tak chcem len uložiť zmeny - určite nemám záujem čakať na build, o ktorý nestojím.

To je možná tím, že ve VS musíte na ten build čekat. V Eclipse zmáčku save a ani nepostřehnu, že se něco někde buildovalo. Pokud jsem udělal nějakou botu, hned vídím kde.

Mimochodem, vy v práci nepoužíváte TFS? Protože při odchodu z práce se většinou dělá check-in a ten je bez předchozího (up to date) buildu krajně nebezpečný.

...a potom ešte čakať na vypnutie Eclipse...

K tomu se vyjadřovat nehodlám, snad jen, že na mém pracovním PC se Eclipse vypíná tak 10x rychleji, než VS2010. :-)

Jinak nechtěl jsem z tohoto threadu dělat flame VS2010 vs. Eclipse. Jen chci vědět jestli jde nastavit tak, aby se choval stejně. Bez instalace doplňků třetích stran. Když si nainstaluju ReSharper, tak tohle všechno bude chodit, ale ten je bohužel placený a firma je vychcaná.

Keď chceš krokovať a za behu dolaďovať zložitejší algoritmus, tak je nemysliteľné, aby ťa debugger premiestnil na iné miesto, než na ktorom sa práve nachádzaš - aspoň vo Visual Studiu. Keď si uprostred cyklu, za niekoľkými rozhodovacími podmienkami v nejakom konkrétnom stave objektu, ktorý sa mení, tak nie že stratíš dve sekundy, ale taký Hot Code Replace môžeš hodiť za psom.

Ladiace nástroje od Microsoftu patria ku špičke - majú s tým bohaté skúseností a zdá sa mi zbytočné o tom diskutovať. V Eclipse mi napríklad veľmi chýba možnosť presunúť ukazovateľ, ktorý riadok sa má vykonať ako nasledujúci. Ďalej nemám rád, keď musím vo svojom IDE hrať hru Find the Breakpoint - toto je moderné vývojové prostredie?

Do CVS/SVN/TFS-ka commitujeme len funkčný kód - nie vždy to vyjde na koniec dňa. Ale to s pomalým vypínaním Eclipse bola len sarkastická poznámka, pretože Eclipse je tým preslávený. :-D

Tak to s tím Find the Breakpoint, to je naprosto kritická věc, která musí každého trápit strašně často. Jasný důvod změnit IDE na nějaké moderní. Třeba na Visual Studio. Tam takový problém není. Sice neumí skoro žádný refaktoring, ale to přece není tak důležité...

V Eclipse mi napríklad veľmi chýba možnosť presunúť ukazovateľ, ktorý riadok sa má vykonať ako nasledujúci.

Mně to nechybí, používám k tomu Ctrl+R. No a to pomalé vypínání je fakt hrozné. Skoro nehoráznou JEDNU SEKUNDU trvá na mém super děle AMD 5050e!!! 3-[

Ten Find the Breakpoint je problém, ktorý vo Visual Studiu nebol ani pred desiatimi rokmi. Pri ladení programu to naozaj dosť prekáža, ináč by to asi neopravovali.

Run to Line (Ctrl+R) je niečo úplne iné - pomocou neho nemôžeš vrátiť vykonávanie programu o pár riadkov vyššie. Toto Eclipse naozaj nevie, pričom vo Visual Studiu sa to používa úplne bežne.

Ďalšia vec, na ktorú som v Eclipse narazil, je napríklad zobrazenie dlhého reťazca počas ladenia programu. Vo Visual Studiu si ho môžem jednoducho zobraziť a to nielen ako text na viacero riadkov, ale aj ako XML (ak obsahuje XML). Dá sa to v Eclipse?

Doba vypínania mi v skutočnosti neprekáža - našťastie nemusím byť pri počítači až dovtedy, kým sa vypne. :-)

Run to Line (Ctrl+R) je niečo úplne iné - pomocou neho nemôžeš vrátiť vykonávanie programu o pár riadkov vyššie. Toto Eclipse naozaj nevie, pričom vo Visual Studiu sa to používa úplne bežne.

Neumí to přímo, ale můžeš dát "drop to frame" a pak měnit hodnoty proměnných, takže se skoro stejného chování dá dosáhnout...

Ďalšia vec, na ktorú som v Eclipse narazil, je napríklad zobrazenie dlhého reťazca počas ladenia programu. Vo Visual Studiu si ho môžem jednoducho zobraziť a to nielen ako text na viacero riadkov, ale aj ako XML (ak obsahuje XML). Dá sa to v Eclipse?

Zkus označit proměnnou a dát Ctrl+Shift+D

S Find the Breakpoint problémem jsem se vážně nikdy nesetkal (teď když jsem to taklhe naspal, je jasné, že se mi to brzy stane =D). Zato třeba jsem si vzpomněl, jak mě ve VS jeden čas dost žralo, že záložka threads nic nezobrazí do doby, než se zmáčkne Pause. Žádné live view na činnost vláken. Dost omezující.

S tím Ctrl+R, to má být něco jako step back jo... Hm, tak to je fakt pěkné. To si v pondělí vyzkouším. V Eclipsu nehrozí. Jedině způsobem drop to frame + run to line.

S tím dlouhým řetězcem, nevím, jestli chápu. Dlouhý String při zobrazování si zalomit samozřejmě jde, jestli to má být tohle.

Jinak, co se mi v Eclipse při debugu líbí za funkce a občas se dost hodí je force return. Ještě užitečnější je zkratka Ctrl+Alt+mouse_click, kdy se při debugu vleze rovnou do metody, na které je nastaven myší kurzor. Jsou tyhle věci taky ve VS?

To s dlhým reťazcom som myslel taký prípad, kedy pri ladení vidím v Expressions len časť reťazca, ktorý je ukončený tromi bodkami, pretože je príliš dlhý. Viem, že sa mi nakoniec nejak podarilo získať celú hodnotu premennej, ale už si nepamätám presný postup - zapamätal som si iba to, že to bolo komplikovanejšie, než na čo som zvyknutý z VS. Vyskúšam to Ctrl+Shift+D, môj život bude od pondelka možno o niečo krajší. :-)

Force return tam nie je a keď tak teraz nad tým rozmýšľam, tak mi nechýba práve kvôli možnosti presúvania ukazovateľa na nasledujúcu inštrukciu. Skrátka si v takých prípadoch presuniem vykonávanie tam, kde chcem, aby pokračovalo.

Ctrl+Alt+LMB neviem čo je - možno Go To Definition (F12)? Ale to asi nemáš na mysli, lebo to je v Eclipse F3...

Expression View je v Eclipse rozděleno na tři části. Ve třetí části je možné text vidět zalomený a celý.

Jen pro jistotu: force return funguje tak, že při návratu z metody se zbytek metody nevykoná, případně navíc metoda vrátí jinou zvolenou návratovou hodnotu. To se hodí v situacích, kdy je dobré vědět, co se stane při nevykonání části kódu. Ve VS je možné přeskakovat kroky bez jejich vykonání?

To Ctrl+Alt+LMB funguje jenom při debugu a to tak, že se myší klikne na volání metody (kdekoliv v kódu, nemusí to být v těle metody, ve které právě debugger je) a debugger se rozjede a zastaví až ve chvíli, co do této metody vklouznul.

Hmmm, tú tretiu časť som zrejme nejako prehliadol...

Áno, môžeš aj preskakovať časti metódy bez toho, aby sa vykonali. Stačí chytiť žltú šípku, ktorá ukazuje na miesto, v ktorom sa program nachádza, a pomocou drag&drop presunúť na iné miesto.

No a to posledné vo VS nie je, zatiaľ mi to ani nechýba.

Visual Studio je několik let po zadu téměř ve všem za klasickým triem Java IDE a dlouho tomu tak bude. Já vím, že z obrázku to tak nemusí vypadat, ale je to tak. Jinak třeba tady: http://www.infoworld.com/d/infoworld/infoworlds-20 11-technology-the-year-award-winners-285&current=1 6&last=14#slideshowTop

Our division of IDEs into Java and non-Java products might seem like a gross form of language favoritism, but in fact it reflects a long-standing reality. That is, Java IDEs -- a product segment in which there is intense competition -- are profoundly more advanced, feature for feature, than their non-Java counterparts. This division has historical roots in the tool vendors' deep exploitation of Java reflection (the ability of language objects to describe themselves). Java IDEs have long had the features that garnered praise for Visual Studio in its current release: IntelliSense, TDD support, and so on.

Chce si to udržovat trochu přehled. No jinak inkrementální build VS neumí, jak už se MS vyjádřil v odkaze od Masa. Důkaz: při jakékoliv změně zdrojáku a následném (i nenásledném) spuštění aplikace se ve stavové liště objeví: building... (co se jako builduje, pokud umí inkremental build?) a pak se musí čekat a čekat a čekat... V minulém století možná ještě omluvitelné. Co se týká debugování, když se neklikne na tu ikonu pause, tak ani nejde editovat zdrojáky :-D Neskutečné. Dále při debugu stačí, jak do metody vleze víc než jedno vlákno a VS je v <|>. O rychlosti krokování už ani nemá cenu mluvit.

Naozaj skvelý dôkaz - ak používaš Eclipse, tak si určite všimneš, že to Building sa v stavovom riadku objaví tiež. Áno, inkrementálny build nie je vo Visual Studiu na takej úrovni ako v Eclipse, ale skompilovanie jedného projektu je otázka maximálne pár sekúnd.

Niekedy mám pocit, že rýchlosť a stabilita Visual Studia vo vašej práci je ovplyvnená nejakým rozšírením (ReSharper?), lebo v porovnaní s Eclipse mám opačnú skúsenosť.

My ho tam právě nemáme, jen jsem kdysi zkoušel trialku na 30 dní (ještě ve VS2008). Teďka dělám denně ve VS2010 nebo Eclipse. Vždy když se musím přepnout z Eclipse do VS2010 je to jako návrat o 10let zpět...

Smím malý dotaz? Na jakém HW používáš VS2010?

Moje zkušenosti asi nejsou moc relevantní, protože v Eclipse jsem dělal naposled někdy před 2 roky, ale i na malém projektu jsem měl pocit, že mi Eclipse říká: "klid, nespěchej, dej si třeba kafe". Kdežto VS2008 na stejném stroji (tenkrát Dell D600) běhalo mnohem svižněji.
Současné Eclipse ani VS2010 neznám tolik, abych mohl soudit.

Neviem presne, na akom hardvéri to beží, ale má to 4GB RAM a procesor je i3 alebo i5. S výkonom som problém nemal ani na notebooku.

Eclipse používam na výrazne menej výkonnom stroji, kde VS 2010 ani nenainštalujem (kvôli operačnému systému). :-D

Na tom istom stroji mám ale VS 2005 a namiesto Eclipse by som ho bral hocikedy, ak by sa to dalo. Ale zatiaľ to beriem len ako vec zvyku, veď ako sa hovorí, človek si zvykne aj na Eclipse. :-)

Já mám právě jen 2GB, nějake C2D na 2.0 GHz, WXP. A je to dost pomalé, Eclipse se mi na tomto HW zdá o dost rychlejší. A když si musím pustit dvě nebo nedej bože tři instance VS2010, tak se s tím už skoro nedá dělat. :-) Se starším VS než 2008 jsem nikdy nedělal, takže na to nemám názor...:-)

Ale zatiaľ to beriem len ako vec zvyku, veď ako sa hovorí, človek si zvykne aj na Eclipse.

Právě, a až si zvykneš, tak nebudeš chtít VS ani vidět...:-)

Eclipse, verze JDT 3.6.1: Při uložení souboru *.java,*.aj občas problikne Building workspace. Při spuštění aplikace se ve stavovám řádku objeví pouze: Launching jméno_aplikace. Co se týká rychlosti, tak VS se spouští o dost rychleji než Eclipse, ale zase o mnoho déle trvá, než se vypne.

Takže to uzavřeme.

Shrnutí:
- Inkrementální build jako v Eclipse ve VS2010 není.
- obdoba Hot Code Replace ve VS2010 (Edit and Continue) je a funguje. Vlastnoručně odzkoušeno.

Děkuli losovi za tip na funkci "Set Next Statement", super věc. :beer: Doufám, že bude co nevidět i v Eclipse...:-)

Zpět do poradny Odpovědět na původní otázku Nahoru