HAVIT Knowledge Base

Vývoj webových aplikací, .NET, SQL, návrh
Welcome to HAVIT Knowledge Base Sign in | Join | Help
-
Home Články Forums Obrázky Soubory

Vývojářské nástroje

Visual Studio, WDE, utility, tools

  • Windows Live Sync (ex-Mesh): Synchronizace nastavení Visual Studia, ale i Office (Outlook podpisů, auto-correct, atp.)

    Poměrně krátce si hraju s Windows Live Sync Beta (dříve Live Mesh) a už mě zaujali dvě příjemné možnosti:

    • synchronizace Office-nastavení - včetně Outlook podpisů, nastavení auto-correct options a dalších věcí, které mě vždy vytáčí do běla, že je musím znovu a znovu nastavovat na čistých instalacích. Synchronizace Office je ve Windows Live Sync vestavěná, stačí ji jen zapnout
    • synchronizace nastavení Visual Studia - stačí použít synchronizaci souborů - nastavení Visual Studia se ukládá do souboru, který určíte v Options / Import and Export Settings / Automatically save my settings to this file: [...]. Nasměrujte si soubor do samostatné složky a tu synchronizujte mezi počítači.

    Live Sync Beta mi přijde nějaká chudší, než byl Mesh, ale svůj účel snad splní stejně a možná časem i lépe.

  • WinDbg a SOS.dll - analýza obsahu .NET heapu z memory dumpu

    Nemám teď prostor se široce rozepisovat, takže spíš jenom rychlé poznámky z mého postupu analýzy obsahu .NET heapu z memory dumpu.

    Memory dump vytvoříme např. z Task Manageru, pravým tlačítkem na proces a "Create Dump File". Získaný soubor .dmp si přeneseme na vývojářskou mašinu, kde máme nainstalováno WinDbg (a .NET Framework, jehož součástí je SOS.dll extenze pro WinDbg).

    Po otevření dumpu ve WinDbg (File / Open Crash Dump...) používáme následující příkazy:

    Zavedení SOS.dll extenzí:

    .loadby sos.dll mscorwks

    Základní statistika heapu, zejména výpis jednotlivých datových typů a objem paměti, kterou zabírají.

    !dumpheap -stat

    Výpis objektů z dané MethodTable (objekty daného typu), adresu získáme ze sloupce MT z předchozího příkazu (první sloupec):

    !dumpheap -mt <MethodTableAddress>

    Dump objektu (výpis jeho hodnot, atp.), adresu získáme z předchozího příkazu (první sloupec):

    !do <ObjectAddress>

    Vypsání všech referencí na objekt (od rootových), tj. proč nám objekt visí v paměti na není čištěn GC:

    !gcroot <ObjectAddress>

    Velikost objektu včetně všech jeho podstromu (toho, co referencuje):

    !objsize <ObjectAddress>

    Help pro určitý příkaz SOS.dll

    !help <příkaz>

     

    Odkazy, které se mohou hodit:

    http://blogs.msdn.com/b/cclayton/archive/2010/06/22/basic-analysis-of-a-managed-memory-dump-net.aspx

    http://www.codeproject.com/KB/dotnet/Memory_Leak_Detection.aspx

    http://blogs.msdn.com/b/tess/

    http://msdn.microsoft.com/en-us/library/bb190764.aspx

  • VS2010 - Lokalizace do češtiny ke stažení

    V rámci snahy o zpřístupnění vývojářských nástrojům "širokým masám" uvedl dnes Microsoft další ztřeštěnost -Jazykovou sadu pro češtinu, která Vám umožní přepnout prostředí Visual Studia 2010 Professional do češtiny. Lokalizační sada je ke stažení ze stránek MSDN.cz.

    Tož přeji hodně štěstí těm, co se při svém prvním sestavení řešení (build solution) dostanou až k sestavení (assembly). Osobně odmítám komunikovat s kýmkoliv, kdo by na mě zkoušel tento kryptojazyk použít a důrazně vyzývám všechny, aby si před komunikací se mnou zjistili anglickou podobu, chtějí-li se vyhnout mému podezření, že jsou marťani.

    Osobně mi jako výrazně lepší nápad pro jazykově méně vybavené přišel nástroj CLIP (Captions Language Interface Pack) pro VS2008, který zobrazoval překlady až na najetí myši na danou část UI.

  • Notes on VS2010 Advanced Debugging

    Koukám na zajímavou session (sérii) na téma Techniques on Advanced Debugging a nedá mi to, abych si z toho neudělal pár "účastnických" poznámek pro mé kolegy. No a když už si je píšu, tak je dávám k dispozici, třeba to někomu přijde vhod:

    Doporučuje se

    • Vypnout přepínač "Just my code" v Options/Debugging (umožní ladit i Release code a spoustu dalších věcí, které jinak nejsou možný)
    • Vypnout přepínač "Enable the Visual Studio hosting process" (= MyApp.vshost.exe, slouží ke zrychlení zavádení procesu, ale má i nepříjemné side effecty)

    Triky

    • pomocí Open Project/Solution se dá otevřít .EXE (!!) soubor a následně ho debuggovat (až už F5 nebo Attach to process)
      • chce to mít .PDB soubory symbolů
      • v Properties od solution se dá nastavit v Debug Source Files, kde jsou zdrojáky, pokud nenastavím a nenajde je v původní cestě dle PDB souboru, tak se zeptá na cestu během ladění (pokud mu ji nedám, udělá disassembly do MSIL)
    • v Call Stacku lze nastavit Break Point (F9), který se nastaví při návratu na dané místo
    • lze nastavit Break Pointy pouze na některou část řádku (např. v cyklech for/foreach/do-while zvlášť na vstup do cyklu, zvlášť na inicializaci, zvlášť na vyhodnocení podmínek, atp.); stačí pravým/F9 kliknout na danou část řádku a vložit BP tam
    • Pokud dělám in-line watch (data tip) a zobrazené hodnoty mi překrývají kód, který chci vidět, stačí zmáčknout Ctrl a dokud ho držím, potom watch-box zprůhlední
    • v in-line watch-boxu (data tip) se dá pravým tlačítkem vyvolat contextové menu a třeba tak přidávat do Watch Window zanořená pole, která chci sledovat
    • v in-line watch-boxu (data tip) se dají hodnoty editovat (měnit za běhu hodnoty proměnných), stejnětak ve Watch panelu 
    • do Watch Window se dají přidávat řádky (výrazy) drag&dropem z kódu
    • v Immediate Window se dá během přerušení debuggeru spouštět vlastní kód, vyhodnocovat metody, atp., zahájíme-li řádek otazníkem, dostáváme hodnotu výrazu
    • Make Object ID (pravým na data tip/watch) - objekt dostává referenční číslo (např. "1#") a je pak možné sledovat jeho hodnotu i mimo původní scope viditelnosti a třeba udělat i instanční podmínku "this == 1#" do Breakpoint Condition, nebo se dozvědět o tom, že byl garbage-collected (stále observuji určitou referenci v paměti, něco jako WeakReference)
    • ve Watch Window můžu používat pseudo-variables
      • $user - aktuální identita threadu + processu
      • $exception - aktuální výjimka
    • Set Next Statement - pokud debuguji, tak mi žlutě svítí řádek, který se má jako další vykonat, vlevo od něj je žlutá šipka, pokud tuhle šipku přetáhnu na jiný řádek, přesune se mi vykonávaný kód tam (aniž by mezi tím bylo cokoliv spuštěno, prostě takový jump do neznáma, obvykle se může hodit, pokud chceme něco přeskočit); skákat se dá nejenom dopředu, ale i dozadu
    • Remote Debugging je stále omezen na tutéž doménu nebo two-way trust

    Tipy

    • pokud Visual Studio dělá ptákoviny, padá na určitém projektu, nechce ho debuggovat, nebo ignoruje Break Pointy, potom stojí za zkoušku smazat (nebo alespoň na zkoušku někam přesunout) soubor .suo (uživateské nastavení solution, hidden file ve stejné složce jako .sln), nemusí to být ono, ale občas se stane, že se tenhle soubor poruší a pak se může dít výše uvedené (nejdřív samozřejmě zkusit restart VS, popř. PC)

     

  • MSBuild na x64 nepracuje správně s Code Contracts + how to fix (Updated)

    Máte-li samostatný build-server na x64 platformě, na něm nainstalované Code Contracts a pouštíte 64-bitový MSBuild, potom rychle zjistíte, že takový build ignoruje Code Contracts.

    Problém je v tom, že do msbuildu se nanaimportují targets pro Code Contracts (C:\Program Files (x86)\Microsoft\Contracts\MsBuild\v3.5\Microsoft.CodeContracts.targets), protože Code Contracts se nainstalují do "Program Files (x86)" složky, kdežto 64-bitový MSBuild si nastaví property MSBuildExtensionsPath na "Program Files" a tam Code Contracts nainstalované nejsou.

    Microsoft.CodeContracts.targets se dostávají do MSBuildu přes Custom.After.Microsoft.Common.targets, které se linkují z Microsoft.Common.targets - tam je však cesta k nim sestavena přes property MSBuildExtensionsPath a ta má pro 64-bitový MSBuild hodnotu "C:\Program Files\MSBuild\" a ne "C:\Program Files (x86)\MSBuild\".

    Problém se dá vyřešit buď používáním 32-bitového MSBuildu, nebo násilným přepsáním hodnoty MSBuildExtensionsPath na "C:\Program Files (x86)\MSBuild\" v souboru c:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.CodeContracts.targets takto:

    <PropertyGroup>

        <!-- HAVIT: Workaround oprava ConnectID 109232 -->
        <MSBuildExtensionsPath>C:\Program Files (x86)\MSBuild\</MSBuildExtensionsPath>
        <!-- HAVIT: end -->

    <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)'==''">$(MSBuildExtensionsPath)\v3.5\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
    <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)'==''">$(MSBuildExtensionsPath)\v3.5\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
    <ReportingServicesTargets Condition="'$(ReportingServicesTargets)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets</ReportingServicesTargets>
    </PropertyGroup>
    Problém samozřejmě může nastat, až jiné build-extense než Code Contracts použijí C:\Program Files\MSBuild\ a celé se to rozjede.

    Dle hlášeného bugu na Connectu však stejný problém je i s WCF, takže si myslím, že soudruzi v Microsoftu někde přecijenom dělají chybu.

    Web Deployment Project + Update

    Prakticky identický problém jsem řešil s beta verzí Web Deployment Projectu pro VS2010, nakonec jsem se vykašlal na úpravy souborů a prostě jsem sesynchronizoval obsah C:\Program Files\MSBuild\ se složkou C:\Program Files (x86)\MSBuild (překopíroval jsem jedno přes druhé a vice versa).

    Nyní s vydáním RTW verze Web Deployment Projectu jsem si všimnul, že je toto již řešeno použitím propert $(MSBuildExtensionsPath32), která vede do správného místa. V Code Contracts by tedy mělo stačit změnit "všechny" $(MSBuildExtensionsPath) na $(MSBuildExtensionsPath32), ale nezkoušel jsem to zatím.

  • TransformXml - MSBuild task pro transformaci XML souborů ála web.config transformace (XDT)

    Uff, dalo mi hodně práce vymyslet titulek tohoto článku, aby alespoň trochu vyjadřoval, co článek popisuje - tedy jak pomocí nové techniky Visual Studia 2010 pro web.config transformace, tedy pomocí transformačních XDT souborů (XML Document Transformation Engine), transformovat libovolný jiný XML soubor jako součást běžného buildu.

    Pokud nevíte, jak fungují ve Visual Studiu 2010 transformace web.config souborů při deploymentu, podívejte se na můj screencast na MSTV (12:48 minut) nebo na materiály z prezentací (vč. demokódu). Pokud Vás zajímá, jak tímto způsobem transformovat libovolný jiný XML soubor (ať už .config, .sitemap, nebo jakýkoliv jiný .xml), potom čtěte dále.

    TransformXml MSBuild task

    Celé kouzlo spočívá ve využití připraveného TransformXml MSBuild tasku, který je použit i v připraveném targetu TransformWebConfig používaném při deploymentu webových aplikací (vytváření Package). Task TransformXml je prostý, má tři parametry a vypadá takto:

    <TransformXml Source="path/original.xml" Transform="path/transformation.xml" Destination="path/transformed.xml" />

    Abyste však tento task mohli použít v libovolném projektovém (.csproj, .vbproj, ...) souboru (nejenom tedy webu, ale i ConsoleApplication, ClassLibrary, či čehokoliv jiného mimo WebSite), musíte jej importovat instrukcí using z assembly webového deploymentu:

    <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

    No použít task můžete samozřejmě v rámci libovolného targetu, celé to pak může v .csproj souboru vypadat takto:

    <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
    <Target Name="AfterBuild">
        <TransformXml Source="Menu\default.xml" Transform="Menu\MyTransform.xml" Destination="Menu\MyMenu.xml" />
    </Target>

    Target AfterBuild je připravený a automaticky spouštěný po základním buildu projektu. Znáte-li fungování projektových souborů a MSBuildu, dále číst nemusíte.

    Editace projektových souborů (.csproj/.vbproj/.*proj)

    Projektové soubory, jak je znáte z Visual Studia, nejsou ve skutečnosti nic jiného, než MSBuild instrukční soubory, které nejenom drží pohromadě konfiguraci Vašeho projektu, ale představují především zadání pro MSBuild, jak má Vás projekt v různých situacích buildovat.

    Nebojte se tedy s těmito soubory pracovat a editovat je! Nejedná se o žádné hackování Visual Studia, ale o zamýšlený způsob ovládání Microsoftího build-procesu. Visual Studio pro Vás tyto soubory typicky založí, během práce s projektem je aktualizuje, nicméně je nepřegenerovává, ale pouze edituje a je opravdu na Vás, pokud chcete buildování Vašeho projektu nějak obohatit, abyste s těmito XML soubory pracovali.

    Podrobnější popis fungování těchto souborů je mimo rozsah tohoto článku, pro začátek Vám však značí znát pojmy jako target a task.

    MSBuild task je primitivní úkon, který má MSBuild během své práce vykonat. Např. něco zkompilovat, smazat, zkopírovat, založit složku, zkomprimovat do ZIP souboru, transformovat XML, atp. V projektovém souboru se zapisuje jako XML emelent a jeho nastavení se provádí pomocí atributů, viz např. výše uvedený TransformXml task. Základní sada tasků je v MSBuild integrována, další lze připojit jako doplňky (viz výše uvedený Using, který zavádí task TransformXml z .NET assembly).

    MSBuild target je něco jako procedura, sada tasků nebo jiných targetů, které se mají vykonat. Pokud např. Visual Studio builduje Váš projekt, volá target "Build", při publishingu webových aplikací se používají targety jako "CreatePackage" nebo "TransformWebConfig". Výchozí konfigurace zahrnuje speciální template-targety "BeforeBuild", "AfterBuild" a podobné, kam se snadno můžete zapojit se svými tasky při běžných buildech.

    No a to co my ve skutečnosti při výše uvedených transformacích XML souborů děláme, je ve skutečnosti to, že do targetu AfterBuild přidáme task TransformXml (před tím zavedený pomocí Using), který v patřičné fází buildu transformaci provede.

    Jak na editaci projektových souborů z Visual Studia:

    1. Projekt, do jehož projektového souboru budete zasahovat, je zpravidla potřeba "unloadovat" (jen málokterý projektový soubor lze editovat, pokud je projekt zaveden, např. u .wdproj Web Deployment Projectu to lze). V Solution Exploreru tedy pravým tlačítkem klikneme na projekt a dáme "Unload project" (unloadovaný project se sbalí a zašedne).
    2. Nyní můžeme v Solution Exploreru pravým tlačítkem na projekt a dát "Edit project file"
    3. V typickém projektovém souboru najdete targety AfterBuild a BeforeBuild jako připravené zakomentované XML elementy (odkomentujte!), obvykle někde ke konci souboru (na začátku je zpravidla nastavení projektu, uprostřed používané soubory, ke konci buildové věci):
      <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
      Other similar extension points exist, see Microsoft.Common.targets.
      <Target Name="BeforeBuild">
      </Target>
      <Target Name="AfterBuild">
      </Target>
      -->
    4. Po potřebných úpravách souboru a jeho uložení stačí opět dát pravým na projekt v Solution Exploreru a "Reload Project".
    5. Nyní můžete buildovat...

    Pokud zapomenete udělat Reload Project, projekt se Vám bude při buildu ignorovat, což nemusí být hned zjevné.

  • Po instalaci Microsoft Office 2010 tuhne Visual Studio 2008

    Po odinstalovaání Microsoft Office 2007 a nainstalování 64bitových Microsoft Office 2010 nám začlo na několika počítačích docházet k tuhnutí Visual Studia. Při práci s HTML kódem se VS zaseklo a přestalo jakkoliv odpovídat.
    Některým počítačům pomohl restart nebo dva, na několika počítačích nikoliv. Tak jsme vygooglovali návod na opravu:

    1. Spustit (Run as admin) C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\Office Setup Controller\SETUP.EXE
    2. Zvolit "Repair" (oprava Visual Studio Web Authoring Component)
    3. Restart
  • No files were found to look in. Find was stopped in progress. (Hledání v souborech, VS 2008)

    Při pokusu o hledání v souborech se mi zobrazuje hláška: No files were found to look in. Find was stopped in progress.
    Říkám si hmm, asi bug. Restartuju Visual Studio a bude vyřešeno.
    Restart nepomohl.

    Chvilku googluju a nacházím návod, který (stejně jako autor článku) zařazuji kategorie "Kdybych to neviděl, tak bych tomu nevěřil." Cože? Zmáčknout Ctrl+ScrollLock a začne to fungovat? Skutečně! Neuvěřitelné. Co to je? Jak na to někdo přišel? Smekám...

  • Visual Studio 2010 RC a .NET Framework 4 RC (Release Candidate) ke stažení z MSDN

    Visual Studio 2010 RC a .NET Framework 4 RC (Release Candidate) jsou ode dneška ke stažení z MSDN.
  • VS2008 nejde nainstalovat po instalaci Office 2010 CTP

    Tak jsem přes noc šíleným tempem stáhnul Windows 7 RTM z MSDN (objevilo se tam někdy kolem sedmé hodiny) a dneska jsem se pustil do instalace.

    Windows 7 x64 Ultimate RTM v pohodě (jedu na SSD disku OCZ Summit 128GB, stroj i7 920, 6 GB RAM a je to fakt hoooodně rychlý).

    Office 2010 CTP instalace v pohodě.

    Následná instalace VS2008 lehala na instalaci Web Authoring Component.

    Pomohlo až odinstalovat Office 2010 CTP, instalovat VS2008 a nainstalovat zpět Office.

    Co jsem se tak různě dočetl, tak kdyby se mi objevil problém s VS2008 (hang na ASPX), tak pomáhá Repair instalace Office 2010.

  • TechEd CZ 2009: Web Deployment na Dev10 (VS2010, .NET 4.0) - prezentace a soubory ke stažení

    Včera jsem měl prezentaci na českém TechEdu na téma "Web Deployment na Dev10 (VS2010, .NET 4.0)".

    Hlavními body programu byly:

    • web.config transformace
    • Web Packages (MSDeploy - Web Deployment Tool, VS2010 Publish Web)

    V příloze dávám ke stažení prezentaci PowerPoint a další soubory. Bohužel se mi nedaří připojit k postu více souborů, takže dávám do jednoho zipu s následujícím obsahem:

    • Haken - Web Deployment.pptx - prezentace
    • TechEd-WebConfigTransformation-VS2008+WDP-Sample.zip - VS2008 Solution s ukázkou Web Deployment Projectu a web.config transformací
    • TechEd-WebConfigTransformation-VS2010SampleProject.zip - VS2010 Solution s ukázkou web.config transformací
    • TechEdSamplePackage.zip - balíček vytvořený Web Deployment Toolem (MSDeploy) - obsahuje web a DB

     

  • Moje oblíbené vývojářské nástroje (Robert Haken) - aktualizováno

    Protože velmi často na kurzech i jinde dostávám otázku na vývojářské nástroje, které používám, rozhodl jsem se sumarizovat své nejoblíbenější vývojářské nástroje a utility:

    Microsoft Visual Studio 2005, 2008

    Základem veškeré vývojářské práce je samozřejme Visual Studio. Projekty už máme jenom .NET 2.0+, takže si vystačím bohatě se samotným VS2008, s jeho refaktoringem a snippety. Žádné doplňky typu ReSharper už nepoužíváme.

    Používáme Web Application Project (WAP) a Web Deployment Project (WDP). První je již součástí  součástí VS2008, druhý je ke stažení z Microsoftu.

    Na webových projektech pracuji výhradně v režimu source-view, design-view používám jen na kurzech, kde to laby/cvičení/dema vyžadují. V zásadě nevyužívám ani drtivou většinu wizzardů a jiných RAD pomůcek Visual Studia, vše si dělám ručně. Pro Visual Studio jsem si sehnal/udělal pár maker, které usnadňují práci, např. ExpandAll, či CollapseAll pro outlining, či vypisování <br/> na Ctrl+Enter, atp. Mám i vlastní snippety a vytvořil jsem i vlastní solution template (Guidance Automation Extensions + Toolkit).

    Visual Studio je pro mně v zásadě velmi chytrým notepadem.

    SQL Server - Server Management Studio, Profiler, Database Tuning Wizzard

    Pro úplnost uvádím, že pro práci s SQL Serverem používám mimo samotného Visual Studia i běžné nástroje, s kterými SQL Server přichází.

    Neocenitelným pomocníkem je zejména SQL Server Profiler, který umožňuje přesně monitorovat veškerý provoz, který se na SQL serveru odehrává (zejména veškeré T-SQL příkazy). Je to v podstatě obdoba Fiddleru pro SQL provoz, i když Fiddler monitoruje stranu klienta, kdežto Profiler monitoruje server.

    Database Tuning Wizzard je nástupcem starého známého Index Tuning Wizzardu a při správném použití je velmi dobrou inspirací pro ladění výkonu databází.

    Pro běžnou práci s SQL si vystačím s Microsoft nástroji. Žádné IDE či designer třetí strany nepoužívám.

    Red Gate SQL Compare, SQL Data Compare

    SQL Compare a SQL Data Compare jsou dvě utility od Red Gate, které velmi usnadňují synchronizaci databází, např. mezi vývojářskou databází a produkční databází, včetně možnosti uložení updatovacích skriptů. SQL Compare porovnává a synchronizuje databázová schémata, SQL Data Compare porovnává a synchronizuje data. Použití je velmi snadné. Red Gate má i několik dalších užitečných nástrojů pro práci s databázemi, nicméně tyto dva mi zatím prokazují největší službu.

    RedGate .NET Reflector

    Nástroj, který umožňuje prohlížet a analyzovat zdrojový kód jednotlivých assembly, včetně samotného .NET Frameworku (decompiler).

    Neocenitelný je pro mě zejména v situacích, kdy .NET dokumentace není přesná, nebo úplně chybí. V situacích, kdy se chci podívat, jak ta která konkrétní funkčnost v .NET Frameworku konkrétně pracuje, kdy se co přesně děje v life-cycle controlu či stránky, či v situacích, kdy se chci inspirovat, jak kterou funkčnost implementují v Microsoftu.

    Někdy bohužel člověk dospěje i k nějakému tomu bugu v samotném .NET Frameworku. Je pak samozřejmě ideální takový bug co nejlépe lokalizovat a reportovat.

    .NET Reflector je zdarma ke stažení.

    Microsoft Internet Explorer Developer Toolbar (DevToolBar)

    Doplněk do Internet Exploreru, který zahrnuje např. DOM Inspector, outlining, validaci, resize, čištění cache či cookies, či pravítko. Prostě spousta užitečných pomůcek, které usnadňují práci se samotným HTML kódem a designem stránek, bez přímé vazby na ASP.NET.

    Microsoft Internet Explorer Developer Toolbar (DevToolBar) je zdarma ke stažení, Internet Explorer 8 ho již v sobě zahrnuje pod pojmem Vývojářské nástroje.

    Microsoft Fiddler

    Fiddler je "HTTP Debugging Proxy" - v podstatě tedy po spuštění monitoruje veškerý HTTP provoz na Vašem počítači a v plných detailech ho relativně přehledně zobrazuje, každý jednotlivý request. Fiddler se mi hodí vždy, když chci ověřit, jaké přesně hlavičky či formulářová data se posílají při jednotlivých requestech, při ladění problémů s cookies, s client/proxy cachingem, atp. Hodí se pro ladění HttpWebRequest/HttpWebResponse, pro ladění webových služeb, atp.

    Microsoft Fiddler je zdarma ke stažení a lze ho doplňovat o spoustu plug-inů.

    Viz též článek Fiddler: Zachytávání lokálního ASP.NET Web Development Serveru.

    Subversion (SVN) - TortoiseSVN, VisualSVN

    Pro správu zdrojových kódů používáme Subversion, konkrétně TortoiseSVN (Open Source) s doplňkem VisualSVN ($49/lic), který usnadňuje použití z prostředí Visual Studia.

    Oproti SourceSafe přináší SVN například atomické operace, kdy verzí v repository je vždy konzistentní snapshot celé solution, nikoliv jen změť jednotlivých verzovaných souborů. Dále se pak pracuje principem Update/Commit namísto Check Out/Check In. Update zaktualizuje lokální kopii solution o změny, které jsou v SVN (vyvolává se ručně) a Commit naopak publikuje mé změny do repository. Soubory, které měním, se nikde nezamykají, v případě konfliktů je v 95% úspěšný automatický Merge, výjimečně je nutno řešit konflikty ručně pomocí nějakého vizuálního merge-nástroje (sestavit z dvou konfliktních verzí jeden soubor).

    Microsoft Team Foundation Server nepoužíváme, protože nám bohatě stačí se starat o Exchange a skákat kolem dalšího kolosu se nám už nechce.

    CruiseControl.NET, MSBuild

    Pro řízení continuous-integration procesu používáme CruiseControl.NET, pro který máme vytvořené skripty tak, že přidání nového projektu je otázkou Copy+Paste asi 4 konfiguračních řádek v XML souboru. CC.NET si pak sám vyzvedává nové revize ze Subversion, provádí build (používáme MSBuild) a výsledek dává do složek, odkud jej nasazujeme ručně (k přímému deploymentu jsme se zatím neodvážili).

    CruiseControl.NET je bezplatný.

    axosoft OnTime

    OnTime je jednoduchý a přehledný feature/bug/task-tracking systém, tedy systém pro správu požadavků, bugů a úkolů na softwarových projektech. Osobně mě přesvědčil zejména jednoduchým ovládání a hierarchickým členěním projektů, nechybí ale ani webové rozhraní, custommer portal, VS-integrace atp.

    Oproti Microsoft Team Foundation Serveru je samozřejmě o mnoho jednodušší a prostší, nicméně právě pro jeho jednoduchost jsem si ho oblíbil. Pokud máte tedy menší vývojářský tým a TFS je pro Vás drahý kanón na vrabce, pak dávám OnTime ke zvážení.

    OnTime je placený, nicméně verze pro jednoho uživatele je k volnému užití a i s tou se dá v malém týmu udělat hodně muziky. Přesněji řečeno - jakákoliv evidence je zde lepší než žádná evidence. Koukal jsem, že existuje nyní i edice Express, která za pár korun (akce je tuším $5) taky umí hodně.

    EC Software Help & Manual

    Pro tvorbu uživatelských příruček používám aplikaci Help & Manual. Sice jsem původně toužil po on-line editoringu, ale nakonec se tento nástroj ukázal jako nejlepší.

    Z jedněch zdrojových dat v podobě XML, které lze navíc pohodlně verzovat v SVN, se generují výstupy do různých podob. Aktivně používám výstup do HTML a PDF (příklad viz manual.goran.cz), zvládá ale mnohod dalších (HLP, CMH, WebHelp, e-Book, atp.). Připravené šablony dávají rozumnou formu výstupu, kterou lze následně modifikovat. S aplikací se pracuje pohodlně a rychle.

    nDoc & Microsoft Sandcastle

    nDoc je legendární generátor dokumentace, který na základě XML komentářů ve Vašem zdrojovém kódu vytvoří vývojářskou dokumentaci Vašeho projektu v podobě prakticky identické s SDK dokumentací .NET Frameworku.

    nDoc je zdarma ke stažení, bohužel však jeho autoři vývoj ukončili, a tak je spolehlivě použitelný jen pro .NET 1.1 projekty. Pro .NET 2.0 projekty existují sice určité úpravy nadšenců, kteří už to bez něj nemohli vydržet a pro .NET 2.0 úpravy udělali, nicméně příliš spolehlivé to není a nepodoruje to ani některé nové vlastnosti .NET 2.0 jazyků (např. generika).

    Naštěstí tlak vývojářské komunity nevydržel ani Microsoft, a tak uvolnil k volnému použití svůj vlastní interní nástroj pro generování dokumentace - codename Sandcastle. Sandcastle je zdarma ke stažení, a i když je to jen command-line utilita, hned pro něj vzniklo několik GUI prostředí, které celou práci se Sandcastlem usnadňují. Není to zatím tak jednoduché, jak to bylo s nDoc, nicméně konečně vzniká něco, co mezeru po nDoc zaplní.

    Microsoft Visio, Enterprise Architect

    Ač je z hlediska vývojářského Microsoft Visio na úpadku a modelování se postupně přesouvá do Visual Studia (Class Designer, atp.), přesto je pro mě stále příjemným nástrojem pro vytváření různých diagramů a podobných vizuálních vyjádření vývojářské problematiky.

    Pro UML modelování používám Enterprise Architect od SPARX Systems, který je v této oblasti zřejmě nepřekonatelným leaderem.

    Ostatní drobnosti

    S vyhledáváním souborů ve WindowsXP jsem se moc neskamarádil, po několika neúspěšných dotazech jsem nainstaloval Agent Ransack a ten používám dodnes. Je rychlý a podporuje i regulární výrazy.

    Jako link-validator používám většinou http://validator.w3.org/checklink, nicméně ani Web Link Validator od REL Software není k zahození, jenom škoda, že neplacená verze je omezena na 500 odkazů, takže je použitelný jen pro menší site, nebo části větších.

    Pro generování kódu základní business-vrstvy jsme dříve používali CodeSmith, nakonec jsme přešli na generátor zcela vlastní.

  • Fiddler: Zachytávání lokálního ASP.NET Web Development Serveru (aktualizováno)

    Fiddler je výborný nástroj pro zachytávání HTTP provozu - zobrazí Vám přesnou podobu HTTP requestu a responsu, kterou Váš počítač dělá vůči webovým serverům.

    Ve skutečnosti Fiddler funguje jako proxy-server. Při spuštění se nastaví v Internet Options jako proxy a veškeré běžné požadavky tak jdou přes něj. Problém je v tom, že ne zas tak úplně veškeré, Innternet Explorer i .NET Framework natvrdo směřují veškeré požadavky na "localhost" a "127.0.0.1" mimo proxy, přestože je proxy zapnutý i pro intranet.

    První podmínkou pro zachytávání Fiddlerem je tedy používat pro browsing adresu v podobě http://mujpocitac:1234/MyPage.aspx, čímž jdou takové požadavky přes proxy a dostane je Fiddler.

    Další problém je však v tom, že ASP.NET Web Development Server (Visual Studio, Web Developer Express, ...) přijímá požadavky pouze na "localhost" a ostatní zamítá.

    Řešením je překlad adresy ve Fiddleru. Fiddleru můžeme přidat pravidlo, aby požadavky na "mujpocitac" převáděl na podobu "localhost". Do CustomRules.js (Rules ~ Customize rules...) přidáme na začátek události BeforeRequest:

    static function OnBeforeRequest(oSession:Fiddler.Session)
    {
        oSession.host = oSession.host.replace("mujpocitac", "localhost");

    ...a je to.

    (Samozřejmě ten překlad by se dal udělat i odolnější, aby fungovaly i adresy http://mujpocitac/mujpocitac/mujpocitac.aspx a nebylo z nich http://localhost/localhost/localhost.aspx)

    Update pro Windows Vista

    Ve Windows Vista je mimo výše uvedeného potřeba ještě ve Fiddleru v Options vypnout volbu "Enable IPv6".

  • Mrznoucí Visual Studio 2008 po instalaci SP1 při otevření souboru z WebSite

    Mordovali jsme se s tím dneska na kolegovo počítači, možná to někomu pomůže:

    Symptomy
    • Visual Studio 2008, čerstvě instalovaný SP1
    • po otevření ASPX souboru z WebSite VS zamrzlo; solutions s Web Application Projectem bez nejmenších problémů
    • při odstranění web.configu se problém neprojevil
    • při zakomentování sekce <controls> z web.configu se problém neprojevil
    • nakonec byly problém jen určité řádky z <controls>, ale nepoznali jsme, proč zrovna ty které
    Řešení
    • pomohlo nám vymazat *.dll ze složky /bin a nechat je tam založit znovu (pomocí .refresh souborů)
    Závěr
    • nesnáším režim WebSite ještě víc než kdykoliv předtím, bůh nás chraň před takovými projekty, a žehnej Web Application Project
  • Visual Studio Gallery - katalog doplňků pro VS

    Microsoft připravil nový web, Visual Studio Gallery (http://visualstudiogallery.com), který má být katalogem všech možných doplňků pro Visual Studio, extenzí, add-inů, maker a podobných vylepšení. Zaregistrovat se můžete i se svými doplňky.

    Znali jste například následující zajímavé bezplatné nástroje?

More Posts Next page »