2lis/110Debugowanie Visual Studio Dziś postaram się przybliżyć rzadko stosowaną technikę wyszukiwania błędów w kodzie. Polega ona na użycia drugiej instancji Visual Studio do znalezienia błędów w pierwszej. Patrząc na ostatnie zdanie można zacząć się zastanawiać jak szukanie błędów w Visual Studio może pomóc w znalezieniu błędów w naszym programie. Należy zdać sobie sprawę, że tak naprawdę Visual Studio zawiera w sobie nasz kod. I naszym celem jest prześledzenie działania tego kodu. Sztandarowym przykład...
W poprzednim poście wspomniałem o mojej walce w Mono Cecil, dzisiaj chciałbym się podzielić moimi wrażeniami i doświadczeniem. Dodam tylko, że o Mono usłyszałem na spotkaniach wrocławskiej grupy .net, wykład prowadził Paweł Łukasik, slajdy z wykładu dostępne są na jego blogu: http://pawlos.blogspot.com. Jak zwykle zapraszam na spotkania i wykłady. Źródła które pokaże, są tylko prostym przykładem, zamysłem tego co chciałem zrobić w docelowym rozwiązaniu. Powinny jednak wystarczyć by ukazać jak działa Mon...
Co należy zrobić, by pobawić się Roslyn syntax visualizer: Pobrać i zainstalować RoslynCTP http://www.microsoft.com/download/en/details.aspx?id=27746, Start -> Microsoft Codename Roslyn CTP -> Getting Started, Otworzyć i uruchomić (F5) solucję Syntax Visualizer Extension, W nowej instancji, która się otworzy Visual Studio wybrać Edit -> Other Windows -> Roslyn Syntax Visualizer, Stworzyć dowolny nowy projekt, na przykład aplikację konsolową, Teraz można podglądać drzewo składni p...
Na wstępie chciałbym przeprosić, że to tak długo trwało , ale ciężkie życie programisty nie zawsze pozwala mi znaleźć czas na częste blogowanie.W tej części mojego tutoriala zajmiemy się samą konfiguracją usługi log4net. Zasadniczo istnieją dwa możliwe podejścia do konfiguracji. Można stworzyć osobny plik konfiguracyjny i nazwać go np. log4net.config lub dodać sekcję do głównego pliku konfiguracyjnego aplikacji. Pierwszym przypadku należy samodzielnie odczytać plik za pomocą api konfiguracyjnego platform...
Wiele osób zna zapewne CodeDOM – bibliotekę, która pozwala generować kod źródłowy przez budowanie go z „klocków” opisujących każdy element kodu: deklarację metody, przypisanie wartości do zmiennej, itp. Nie dało się jednak w łatwy sposób wykonać operacji odwrotnej, tj. zamiany tekstu na drzewo obiektów, które można by łatwo i wygodnie analizować. Problem ten doprowadził to powstania kilku parserów kodu napisanego w C# – na potrzeby kompilatora, środowiska...
RightHand DataSet Visualizer to aplikacja (wizualizator) do podglądu danych i struktury obiektów DataSet podczas debugowania kodu w Visual Studio. Narzędzie posiada wiele przydatnych możliwości, które pokrótce opiszę w tym artykule.
Częstym problemem moim jak i kilku innych w VS jest to, że nie od razu wiadomo jak zwinąć poszczególne fragmenty kodu w Visual Studio. W tej notce chciałbym przedstawić możliwości Visual Studio w tym względzie...
Dawno dawno temu było…Reflector i długo długo nic (de facto na początku był jest ildasm ale nie o nim dziś). Na szczęście pewnego lutowego dnia pojawiła się informacja, że już niedługo nie będzie on dostępny za darmo i się zaczęło. Flame’y, groźby i krzyki :). Stało się też sporo dobrego bo o to na rynku pojawiły się alternatywy. Ilspy, dotPeek oraz JustDecompile. Przyjrzyjmy się im z bliska i zobaczmy co mają do zaoferowania. Reflector - umarł król...Reflector to zdecydowanie n...
W każdej szanującej się aplikacji powinien być mechanizm logowania. Dobry to taki, który pozwala łatwo kontrolować poziomy logowania i wyrzucać wiadomości do wielu źródeł jednocześnie. Biblioteka log4net jest taką biblioteką. Jest łatwa w konfiguracji i obsługuje multum poziomów i targetów. Log4net ma trzy główne compomenty: loggery,appendery i layouty. Najprościej mówiąc appendery zajmują się wyrzucaniem wiadomości do konkretnego miejsca jak np. plik,albo baza. Layouty definiują format wyświetlania wi...
Podczas prezentacji “Future directions for C# and Visual Basic” Anders Hejlberg odpowiedzialny za rozwój całej linii języków zarządzanych wskazał kluczowe kierunki rozwoju C# i VB.NET. Najpoważniejszą zmianą, jaka ma nastąpić w nowy programach na platformę .NET jest przeniesienie kierunku tworzenia aplikacji w stronę programowania asynchronicznego, efektem czego ma silna responsywność aplikacji na nowej platformie Windows 8. Odbywa się to za pomocą rozszerzeń językowych w postaci słów kluczowych asy...
Kolejny z serii postów odnośnie sesji pojawiających się na konferencji BUILD. Z sesji dowiadujemy się, co ciekawego przygotował dla nas Microsoft w najnowszej wersji narzędzia. Na początek prezentacja nowego UI - MetroUI, którego będziemy mogli użyć w wersji 11 Visual Studio. Dostępne będą szablony, które w prosty sposób pozwolą utworzyć nam wspomniane wyżej aplikacje. Nie będzie znaczenia, który język wybierzemy. Dostępne będą one zarówno w VB, C#, C++ oraz HTML5/JS. Dodatkowo będzie można tworzyć opro...
Kilka lat temu (będzie już niedługo 5!) napisałem dla WSS tekst 'Admin czy nie admin' o narzędziach Sysinternals, dzięki którym można dosyć sprawnie poradzić sobie ze standardowymi problemami związanymi z ograniczonym dostępem do systemu. Linka nie podaję, ponieważ lada moment wss.pl przenosi się i zapewne stare sznurki pourywają się, więc ‘google is your friend’ :). Już wówczas były to potężne narzędzia diagnostyczne dające bardzo wiele informacji o tym co się aktualnie dzieje w systemie. Od tamtej chwi...
autor: Jakiś czas temu pracując z IntelliTrace próbowałem zdefiniować zdarzenie diagnostyczne dla pewnej metody. Dla ustalenia uwagi niech jej sygnatura wygląda tak, jak poniżej. string Flip(string s) Moim celem było, aby opis zdarzenia zawierał wynik zwrócony przez metodę oraz wartość argumentu s. Inaczej mówiąc, aby w oknie IntelliTrace Events View w Visual Studio 2010 zdarzenie zarejestowane dla wywołania metody z argumentem s="Hello" i wynikiem "olleH" wyglądalo tak: "olleH" Flip("Hello") O defin...
Tytuł zajeżdża nieco komerchą, ale jest to ogólnie dość użyteczny wpis dla osób, które poszukują wydajnego, użytecznego i mocno funkcjonalnego edytora tekstu dedykowanego dla programistów. Postanowiłem zebrać w jednym miejscu moje doświadczenia z poniżej prezentowaną alternatywą dla takich programów jak Notepad++, Notepad2 a nawet Visual Studio oraz przedstawić jego możliwości. Wpis powstał na bazie kilkumiesięcznego użytkowania programu i idealnie się sprawdza jako stand-alone editor oraz jako dodatek d...
autor: Swego czasu w postach Własne zdarzenia IntelliTrace! oraz Własne zdarzenia IntelliTrace 2 opisałem jak zmodyfikować plik CollectionPlan.xml zawierający plan działania IntelliTrace (historycznego debuggera) tak, aby zdefiniować swoje własne zdarzenie IntelliTrace (ważny punkt w historii działania programu kiedy IntelliTrace nagrywa stan aplikacji). Ostatnio wróciłem do tego zagadnienia i "bawię się" testując różne możliwości IntelliTrace. Niestety czasami, po zmodyfikowaniu pliku Collect...
autor: Napiszę teraz trochę o nowym Windows Phone SDK 7.1 RC. Zacznę od dwóch elementów, które na pewno występowały już w niepublicznym Beta 2 Refresh. Są to: Screenshot tool Oprócz narzędzia do screenshotów z Windows 7 możemy teraz używać dedykowanego narzędzia dostarczanego z emulatorem. Marketplace Test Kit Zbiór testów, którymi są poddawane aplikacje wrzucane na Marketplace. Dzięki temu znacznie spada prawdopodobieństwo “niespodzianki” po wysłaniu aplikacji, developer może poddać weryfikacji swoją ...
Dzisiaj chciałbym przedstawić działanie narzędzia do mockowania Telerik JustMock. Dostępne są dwie wersje tego narzędzia: darmowa JustMock Free Edition oraz komercyjna, pełne porównanie można znaleźć tutaj: http://www.telerik.com/products/mocking/free.aspx. Główną motywacją do napisania tego postu było to, że czytając posta Macieja Aniserowicza (oczywiście polecam Macieja serię postów o testowaniu: http://www.maciejaniserowicz.com/post/2011/08/08/UT-0-Zapowiedz-minicyklu-o-testach.aspx) zauważyłem w kome...
Analizując problem z działaniem aplikacji w środowisku produkcyjnym, czasami przydałoby się mieć możliwość sprawdzanie jakie argumenty są przesyłane do wywoływanych metod, zwłaszcza, w przypadku aplikacji desktopowych, gdzie nie mamy dostępu do pełnego zbioru danych, na którym pracuje użytkownik i musimy opierać się jedynie na informacjach zawartych w logach. Rozwiązaniem tego problemu jest dołączenie interceptora do kontenera IoC, który przy wywołaniu metody zapisywałby informacje o przesłanych argument...
Kiedyś puściłem cały cykl postów o testowaniu z wykorzystaniem Rhino Mocks, pełna lista postów zebrana jest tutaj. Jednak aby zachować ciągłość aktualnej serii, należy o mockach kilka słów wspomnieć. Mocki służą do symulowania zachowania środowiska zewnętrznego względem testowanej klasy/metody. Pisząc testy jednostkowe sprawdzające logikę biznesową nie powinniśmy skupiać się na tym, czy mamy poprawnie skonfigurowaną bazę danych. Albo czy komunikacja z systemem plików przebiega tak jak powinna. Lub, co ...
Programiści .NET nie mogą narzekać na brak narzędzi i bibliotek wspomagających pisanie testów jednostkowych. Zanim przejdziemy jednak do zerkania w ich kierunku, zobaczymy jak można samemu, bez zewnętrznych zależności, rozpocząć pisanie testów. Testować będziemy taką banalną klaskę, której zadaniem jest obliczenie "ile złotych polskich dostanie polski hydraulik Waldek za przywiezione zza zachodniej granicy jełro"...