“Gdybym wiedzial, ze tak bedzie, to bym tak nie zrobil“… czasem mozna powtarzac to jak mantre. Ktos kiedys, podejmuje jakas decyzje, ktora w danym momencie wydaje sie byc dobra (lub jest niedokonca przemyslana :)), decyzje ktora rozwiazuje pewien problem i dziala… dopoki nie pojawi sie inny, nowy 😉 wtedy podejmujemy nowa decyzje, ktora rozwiazuje stary problem, ten nowy i inny..potencjalny (jesli poswiecilismy chwile czasu na zastanowienie sie nad takim). I wszystko dziala… rzecz jasna… do momentu az nie pojawi sie kolejny problem X :). Dzis o jednej z takich decyzji podjetych w odpowiedzi na problem X…
VS
Improve your debugging with OzCode
Wczoraj pod wpisem Jarka na temat AutoMappera – kolega Łukasz Kurzyniec – umiescil link do ciekawej wtyczki do Visual Studio wspomagajacej programiste w procesie (jakze zmudnym czasami) debuggowania.
“OzCode” bo o niej mowa, jest dzielem izraelskiej firmy CodeValue i poki co dostepna za darmo z racji wersji “beta”.
Pobawilem sie nia troszeczke i musze przyznac ze prezentuje sie naprawde ciekawie. Ponizej kilka ciekawych funkcji jakie oferuje:
Problems with debugging in Silverlight
Ostatnio zdarzylo sie u nas w firmie, ze jedna osoba (pracujaca na Windows 8) nagle przestala moc debuggowac aplikacje w Silverlight‘cie – co dziwne na pozostalych komputerach (z Windows 7) wszystko dzialalo w porzadku.
Jeden problem – ze miala problemy z uruchomieniem aplikacji (Visual Studio rzucal info “Unable to start program http://localhost…aspx“) pod IE, drugi – ze nie byla w stanie debuggowac aplikacji, nawet jesli ta byla np uruchomiona na innej przegladarce.
Probowalismy wszystkich znanych nam rozwiazan, sprawdzajac co moze byc nie tak … oraz rozne inne (czasami dziwne) rozwiazania zaproponowane w Internecie… jednak bez rezultatu.
Skonczylo sie na ticket’cie w Microsofcie i tu musze przyznac chlopaki z Microsoftu z Münich spisali sie naprawde fajnie i nastepnego dnia mielismy juz rozwiazanie na ten problem. Powod? W sumie zabawny… co ciekawe dziala rowniez na Windows 7 ale o tym ponizej.
ReSharper i Visual Studio 2012 (Update 2)
Kilka dni temu Micorosft wypuścił Update 2 dla Visual Studio 2012. Kilka dni minęło, więc można instalować, pomyślałem sobie. Instalacja przeszła raz dwa, myślę .. musi działać 🙂
Wziąłem się do dalszej pracy i pech chciał, że akurat jeden UnitTest zapalił się na czerwono. Uzbrojony w ReSharper’a namierzyłem trefny test, klikam na zielone kółeczko obok testu “Debug”, czekam ….
TFS: Checked-out identical files
Okazuje się, że w tak zarąbistym narzędziu jakim jest TFS, można łatwo i bez trudu wykluczyć wszystkie pliki, których nie tknęliśmy, ale nasz wspaniały source control tool potraktował je jako zawierające “nasze zmiany”. Mimo, że jeśli tylko spróbujemy porównywać ów plik, z tym na serwerze, to sam przyzna, że są one identyczne.
Zasadzka na wyjątka!
Czasami zdarza sie, że aplikacja wraca z testów bo tester popsuł aplikację i gdzieś leci mu wyjątek.
Czasami zdarza się, że sami popsujemy naszą aplikację i gdzieś nagle leci wyjątek.
Czasami od razu wiemy, które miejsce “przecieka”, kiedy indziej musimy chwilę poszukać.
Niestety, również czasami zdarza się, że pomimo tego, że wiemy gdzie jest dziura, ciężko nam jest namierzyć konkretny moment gdy dziad jest rzucany (np. dana metoda wykorzystywana jest w wielu różnych przypadkach).. no zdarza się..szukanie i gdybanie sprawia, że zadanie jest coraz mniej przyjemne.
Okazuje się, że w Visual Studio mamy możliwość na zasadzenie się na konkretny typ wyjątka.
Przy pomocy skrótu klawiszowego “Ctrl+Alt+E” ( tudzież Debug->Exceptions ), możemy wywołać okienko “Exceptions“, które pozwala nam na zasadzenie się na konkretny, bądź wszystkie rodzaje wyjątków w naszej aplikacji.
Taka fajna opcja, niby jest tam od zawsze, a czasem wogóle nie wykorzystywana.
Wykrzaczajaca sie kontrolka w designerze.
Przy okazji ostatniego spotkania Wroclawskiej Grupy .NET przypomnial mi się jeden myk, który swego czasu ułatwił mi znacząco życie.
Czasami zdarza sie, ze projektując kontrolkę tudzież formularz wykorzystujący różne nasze kontrolki, ta z różnych tylko sobie znanych powodów się nam czasem wykrzacza gdy chcemy ją podejrzeć w designerze.
W znalezieniu błędu może pomóc nam prosty trik:
Otwieramy drugie Visual Studio (#B#) z tą samą solucją i podłączamy się pod proces pierwszego Visual Studio (#A#) (w okienku “Attach to process” będziemy widzieć proces drugiego visual studio, więc nie podłączymy się sami pod siebie 🙂 )
Następnie w Visual Studio #A# otwieramy jeszcze raz naszą formatkę z kontrolka i przechodzimy do podglądu designera.
W momencie, gdy kontrolka rzuca obrzydliwym wyjątkiem, Visual Studio #B# zatrzymuje się nam dokładnie w miejscu, z którego leci wyjątek 🙂
Voilà!
CodeRun – IDE w przeglądarce :)
Ostatnio jeden ze znajomych podesłał mi ciekawego linka do strony stworzonej przez Izraelskich kolegów – CodeRun.com – darmowe IDE w przeglądarce, które uroczo przypomina Visual Studio.
Wg informacji zawartych na stronie możemy wyczytać że CodeRun pozwala na tworzenie aplikacji w:
- c# (asp.net, silverlight, wcf i wpf),
- php,
- javascript,
- HTML
- i CSS
SQLite & VS 2010
Ostatnio, do jednego ze swoich projekcików potrzebowałem małej bazy danych. Po małych poszukiwaniach natrafiłem na SQLite. – małą bibliotekę napisaną w języku C implementujcej silnik bazy danych (parokrotnie wspominano o niej chociażby na .netomaniaku), oraz na odpowiedni data provider do niej pod .net – System.Data.SQLite.
Wraz z instalowaniem biblioteki dostajemy malutką shell’ową aplikację, która pomimo swej prostoty jest średnio wygodna w używaniu. Jak się okazuje, istnieją też już programy o bardziej przystępnej formie (choć nie tak przystępnej jak MS SQL Manager 😀 ) do zarządzania naszą bazą danych, jak np. SQLite Administrator.
I voilla, możemy działać…ale.. nie tak szybko. Aby móc skorzystać z tej biblioteczki pod aplikacja pisaną w .net 4.0 potrzebny jest jeszcze mały zabieg.
Ponieważ wrapper został stworzony w wersji niższej niż 4.0, podczas próby uruchomienia naszej aplikacji dostaniemy następujący błąd:
Mixed mode assembly is built against version ‘v2.0.50727’ of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
Lekiem na zło, jest mała zmiana w pliku konfiguracyjnym aplikacji. Otóż musimy ustawić atrybut useLegacyV2RuntimeActivationPolicy na ‘true’ w sekcji <startup>:
1 2 3 4 |
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> </configuration> |