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

  • Když wsdl.exe/VS hlásí "WSDL: error WSDL1: Item has already been added. Key in dictionary: '[45]:http://my.url.com/path:Negotiate'

    Pokud používáte wsdl.exe (nebo Add Web Reference ve VS) pro vygenerování proxy tříd(y) k webovým službám a dostáváte hlášku:

    WSDL: error WSDL1: Item has already been added. Key in dictionary: '[45]:http://my.url.com/path:Negotiate' Key being added'[45]:http://my.url.com/path:Negotiate'

    Tak je to nejspíš tím, že se v definičním XML souboru (parameters pro wsdl.exe) odkazujete na více WSDL dokumentů s authentizací

    Mně pomohlo authentizační parametry z XML vyhodit, protože WSDL byla přístupná i anonymně. Pokud v takové situaci nejste, pak pomůže stáhnout WSDL soubory na disk (např. pomocí disco.exe) a odkázat se na ně přes file://

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

    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í (pozor na 32 vs. 64-bir verzi):

    .load c:\Windows\Microsoft.NET\Framework64\v2.0.50727\SOS.DLL

    popř.

    .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

    Pokud dostáváte chybu ve stylu "Unable to load DLL mscordacwks", tak se hodí níže uvedený příkaz, který zapne podrobné hlášky o načítání DLL, kde se hledají a jaké, dostanete tak informaci, jakou verzi je potřeba sehnat. Většinou je potřeba stáhnout knihovny ze stroje, ze kterého pochází dump a na DLL pak cestu nastavit nastavit přes File/Symbols Path...

    .cordll -ve -u -l

    Výpis velikosti managed-heapu(-ů):

    .eeheap -gc

    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>

    Filtrováno na určitý název typu (zadat stačí jakýkoliv substring názvu typu)

    !dumpheap -stat -type <TypeNameQuery>

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

    !do <ObjectAddress>

    Dump pole (abychom nemuseli jít po jednotlivých prvcích)

    !dumparray <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

    http://blogs.msdn.com/b/alejacma/archive/2009/06/30/sos-cheat-sheet-net-2-0-3-0-3-5.aspx

    PSSCOR2.dll, resp. PSSCOR4.dll - nástupce SOS.dll

    Z webu Microsoftu si můžete stáhnout též PSSCOR2.dll nebo PSSCOR4.dll, nástupce knihovny SOS.dll. Původní možnosti SOS.dll jsou podstatně rozšířeny.

    Po stažení jsou k dispozici různé verze, je potřeba zavést tu verzi, podle toho jaký dump budete analyzovat:

    .load D:\Temp\amd64\psscor2.dll

    Statistiku heapu dostaneme např.

    !heapstat [-inclUnrooted]

    nebo též

    !CLRUsage

    V !dumpdomain lze například použít přepínač -stat k získání statistik načtených assemblies a jejich velikosti v paměti

    !dumpdomain -stat

    Výpis všech výjimek

    !DumpAllExceptions

    Výpis aktivních HttpContextů

    !ASPXPages

    a také další užitečné věci, kde název mluví za všechno

    !DumpASPNETCache

    !DumpHttpRuntime

    !DumpXmlDocument <ObjectAddress>

    Velmi užitečné mohou být i příkazy pro nalezení assemblies zkompilovaných v DEBUG-modu

    !FindDebugTrue

    !FindDebugModules

    Existuje téř pár nedokumentovaných

    !FindInterestingStrings

    !SaveSnapshot

    !LoadSnapshot

    !dumpconfig

    !GCUsage

    !VerifyDAC

    DebugDiag

    Dalším zajímavým nástrojem pro analýzu memory-dumpu je DebugDiag a jeho "Analysis mode". Předhodíte mu .dmp a vypadne z něj HTML report, v kterém se toho opět spoustu dozvíte.

  • TF400917: The current configuration is not valid for this feature. This feature cannot be used until you correct the configuration.

    Po změně procesní šablony TFS (změna šablony work item type), se při zobrazení backlogu nebo boardu v tfs web accessu začne zobrazovat chybová zpráva "TF400917: The current configuration is not valid for this feature. This feature cannot be used until you correct the configuration." V našem konkrétním případě se problém začal vyskytovat po zavedení nového stavu New k bugu, stav byl nastaven jako výchozí pro nové bugy.

    Problém spočívá v chybějícím mapování v Common Process Configuration, které je třeba doplnit.

    To se realizuje vyexportováním Common Process Configuration, doplněním potřebných stavů, a importem. Export a import se provede přes witadmin.exe exportcommonprocessconfig/importcommonprocessconfig.

  • PerfView - ladění v 64-bit prostředí - NGen

    PerfView je zajímavý nástroj od Microsoftu, který umožňuje neinvazivní profiling stroje, např. produkčního serveru, tím, že se přihlásí k odběru ETW událostí Windows.

    Nevýhodou je, že .NET call-stacky jsou nepoužitelné, pokud profilujeme 64-bit .NET process.

    Pomoci se tomu dá zkompilováním assembly/-ies pomocí NGenu:

    D:\WebApp\bin>"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen" install MyAssembly.dll /nodependencies /verbose...NGenovat je potřeba všechny assembly, které nás ve vyhodnocení call-stacku zajímají.

    U webového kontextu je potřeba recyklovat AppPool.

    Pokud by NGen hlásil chybějící dependencies, lze to dohledat pomocí FusLogVw.exe.

  • Visual Studio: *.sqlproj is not supported by this version of application

    Při otevírání solution ve Visual Studiu (2010 i 2012) s databázovým projektem (myšleno *.sqlproj) se zobrazuje hláška, že projekt nelze otevřít, protože není podporován aplikací.

    Z SQL Serveru je třeba doinstalovat komponentu SQL Server Data Tools.

     

    Instaloval jsem z SQL Serveru 2012, při příštím otevření Visual Studia se mi zobrazila nabídka ke stažení a instalace SQL Server Data Tools z internetu, kterou bylo třeba provést (a vypnout VS, jinak instalace neprojde).

    Poté již lze pracovat se *.sqlproj projekty.

     

  • "StanPackage package did not load correctly" při porovnání souborů ve Visual Studiu 2012

    Stačí jednou otevřít (a zase zavřít) okno View - Other Windows - Code Analysis.

     

    UPDATE: Problém se po pár týdnech vrátil. Zdá se, že problém způsobovala jedna z verzí Code Contracts, provedl jsem reinstalaci (repair) Visual Studia a reinstalaci Code Contracts na nejnovější verzi, problém opět zmizel.

  • Diff Visual Studio 11 z příkazové řádky + použití s TortoiseSVN

    Krásný nový Diff-tool z Visual Studio 11 se dá vyvolávat i externě z příkazové řádky a dá se tak použít například i přímo z TortoiseSVN.

    Obecná syntaxe je:

    devenv /diff sourceFile targetFile [sourceDisplayName] [targetDisplayName]

    Pokud již nějaká instance Visual Studia běží, použije se, jinak se spustí nové.

    TortoiseSVN

    Pro TortoiseSVN v Settings/Diff Viewer stačí přepnout na "External" a použít:

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe /diff %base %mine %bname %yname(Cestu si samozřejmě upravte podle sebe.)

     

    ...teď už jenom zajistit, jestli se dá takhle vyvolat i merge. Z výpisu devenv /? to zatím nevypadá.

     

  • NuGet - poznámky z přednášky

    Pár mých poznámek z přednášky o NuGet (Package Manager ve VS od Microsoftu), které zřejmě nebudu dále zpracovávat.

    (Microsoft MVP Summit 2012 Seattle)

    Links

    Tvorba vlastního package

    • NuGet Command Line (ke stažení přes samotný NuGet)
    • VS / New Project / Class Library
      • NuGet.exe pack <.csproj file>
        • vznikne .nupkg
        • je to zip ála .docx
      • NuGet.exe push <.nupkg file>
    • [global: AssemblyInformationVersion("any string")]
      • pre-release = číslo verze obsahuje podtržítko

    Nastavení vlastního NuGet feedu ve VS11

    • Tools / Library Package Manager / Package Manager Settings / Package Sources
    • dá se tam nastavit FilePath, kde mám své packages
    • nebo použít package "NuGet.Server"
      • Install-Package NuGet.Server
      • stáhne SLN s jednoduchým servříkem
  • Visual Studio 11 Beta a Windows 8 Consumer Preview ke stažení

    Dnes bylo (zatím přes MSDN) uvolněno Visual Studio 11 (s .NET Frameworkem 4.5 a TFS 11) ke stažení ve verzi Beta.

    Stejnětak Windows 8 Consumer Preview.

  • .NET Framework 4.5 a Visual Studio 11 Developer Preview ke stažení

    Visual Studio 11 a .NET Framework 4.5 byly uvolněny ke stažení jako "Developer Preview". Zatím přes MSDN, během pár dnů bude i pro ostatní.
  • Debug ve VS2010: Načítání symbolů velmi pomalé

    Po konverzi aplikace z .NET 3.5 na .NET 4.0 jsem v jednom případě zpozoroval výrazné zpomalení spouštění aplikace v debugu přímo z Visual Studia 2010. Stavový řádek zobrazoval načítání symbolů, 1-2 sekundu na assembly, což bylo velmi zpomalující.
    Problém vyřešilo smazání všech breakpointů v okně Breakpoints.

  • HTML5 & CSS3 support for Visual Studio 2010

    Microsoft minulý týden bez většího humbuku uvolnil update pro Visual Studio 2010 přinášející podporu HTML5 a CSS3. Podporována je validace, IntelliSense, atp.

    Více si můžete přečíst na Visual Web Developer Team Blogu, ke stažení je z Visual Studio Gallery pod názvem Web Standards Update for Microsoft Visual Studio 2010 SP1.

  • Internet Explorer 9 vydán a je ke stažení (RTW)

    Stahovat můžete přímo z http://ie.microsoft.com, k dispozici je i verze v Češtině.
  • Visual Studio 2010 Service Pack 1 (VS2010 SP1) RTM vydán

    Service Pack 1 pro Visual Studio 2010 byl vydán (RTM) a je ke stažení na MSDN. Těm, kdo nemají MSDN, by měl být pravděpodobně k dispozici dnes během nočních hodin (např. přes Web Platform Installer, pokud se nemýlím, ale zejména klasicky na Microsoft Download Center).

    Mimo oprav chyb a všech možných optimalizací obsahuje zejména:

    • IIS Express Support
    • HTML 5 + CSS 3
    • SQL Server CE 4 Support
    • IntelliTrace pro 64-bit
    • Razor Support
    • Web Platform Installer Integration
    • Unit Testing pro .NET 3.5
    • Silverlight 4 Support + Performance Wizzard
    • Help Viewer 1.1
    • Software Rendering Support
    • Add Deployable Dependencies

    Podrobněji viz http://support.microsoft.com/kb/983509/en-us.

  • Code Contracts Editor Extensions - konečně contracty v Intellisense tooltipech

    Samotné Code Contracts se díky pomalému rewritingu (a ještě pomalejší statické analýze, ale u té je to logické) v praxi stávaly problémem, kdy nejeden vývojář pochyboval, jestli je ochoten obětovat své pohodlí rychlosti buildů na oltář Code Contractů.

    Microsoft konečně přichází s dalším logickým krokem, na který všichni tak dlouho čekají, a který by mohl pomyslné váhy opět lehce převážit ve prospěch Code Contracts - po instalaci Code Contracts Editor Extensions (doplňku do Visual Studia 2010) se Vám contracty budou zobrazovat v tooltipových nápovědách IntelliSense.

More Posts Next page »