czwartek, 6 maja 2010

Visual Stutdio ShortCuts

1. Record and play temporary macro

Ctrl+Shift+R to record a new temporary macro. Press Ctrl+Shift+R to stop recording. Ctrl+Shift+P to play the recorded macro.

This works similar to *recording* in Vim. If you think you are going to be repeating a set of keyboard keys, then record them once and play them each time after.

2. Multiple copy/pastes

Ctrl+Shift+V cycles through the clipboard ring. You can copy/cut multiple times from one area of code, then go to another area and paste them one after another.

3. Drag and drop code snippets

The Toolbox (Ctrl+Alt+X) window has multiple tabs. You can drag and drop code onto this window and copy it elsewhere. Some tabs do not allow dropping code into them; those that allow will have the appropriate icon. The General tab works for me.

4. Previous cursor positions

Ctrl+- i.e. Ctrl + Hyphen. This cycles you through the code positions you visited.

Ctrl+Shift+- to navigate in the opposite direction.

5. Incremental search

To incrementally search for text as you type, first press Ctrl+i. Then type the word you want to search. Hit backspace to clear a character and enter to finish. Pressing F3 after this will work as usual, i.e. search for the next occurrence of previous search.

Ctrl+i - Ctrl+i works like F3.

6. Matching brace/comment/region/quote

Ctrl+] takes you to the matching brace. It also takes you to the matching comment, region or quote depending on what is at the cursor now.

7. Vertical block selection

Press Alt and then select the area you want with your mouse.

8. Closing/Showing support windows

There are a bunch of necessary/useful windows in the Visual Studio IDE like Properties (F4), Solution Explorer (Ctrl+Alt+L), Output Window (Ctrl+Alt+O), Task List (Ctrl+Alt+K) etc. However, they take up a lot of space. An easy way around this is to use the auto hide feature.

Open the window you want. Right click on its title and choose Auto Hide. The window will dock in whenever your mouse is not hovering over it.

9. Tab groups - group code editor windows

If you have many source code windows open, you can group them logically using tab groups. Right click the tab of the code window and choose New Horizontal Tab Group. This will move the window into a split window, allowing you to see both files. You can add more files to this new tab group and also move files back to the previous group by choosing Move To Previous Tab Group.

10. Track things you have to do with Task List

The Task List window (Ctrl+Alt+K) allows you to keep track of the things you have to do. Right click on the Task List window and choose Show Tasks|All to see a list of tasks. Ctrl+Shift+F12 to cycle through your list of tasks.

By default, comments marked with a TODO will appear in the task list.

11. Edit Task List Comment Tokens

You can add your own set of comment tokens (like the TODO comment token). Goto Tools|Options|Environment|Task List|Comment Tokens and make your changes. You can change the priority appearance of each comment token too.

12. Add Task List Shortcut

Add a shortcut to the task list with Ctrl+K, Ctrl+H. This will add the current line to the task list.

13. Auto-complete

Press Ctrl+Space or Alt+RightArrow to auto-complete the word. Intellisense suggestions may pop up a window if there is more than one possibility.

14. Intellisense suggestions window

Press Ctrl+Shift+Space to bring up the intellisense suggestions window. When giving parameters for functions, I often need to escape the suggestions window to check another part of code. To bring it back, I used to delete a comma and then type it again; but this is easier.

15. Word wrap

Ctrl+R Ctrl+R

or

Tools|Options|Text Editor|All Languages|General|Word Wrap

If you want to set this option for only one language, then choose the appropriate language instead of All Languages.

16. Line numbering

Tools|Options|Text Editor|All Languages|General|Line numbers.

If you want to set this option for only one language, then choose the appropriate language instead of All Languages.

17. Customizing Visual Studio's Code Generation Templates

Customizing Visual Studio's Code Generation Templates.

18. Default Shortcut keys

MSDN.

19. Favorites window

Your IDE also functions as a browser. To see your list of favorites, press Ctrl+Alt+F or choose View|Other Windows|Favorites.

20. Bookmarks

Bookmarks are available through Edit|Bookmarks. Bookmarks allow you to mark places in your code that you would want to come back to.

  • Create/Remove Bookmark - Ctrl+K, Ctrl+K
  • Move to next bookmark - Ctrl+K, Ctrl+N
  • Move to previous bookmark - Ctrl+K, Ctrl+P
  • Clear all bookmarks - Ctrl+K, Ctrl+L

21. Code Formatting

  • Auto-format selection - Ctrl+K, Ctrl+F
  • Convert to lower case - Ctrl+U
  • Convert to upper case - Ctrl+Shift+U
  • Comment selection - Ctrl+K, Ctrl+C
  • Uncomment selection - Ctrl+K, Ctrl+U

22. Outlining

I like this feature that allows me to hide code that is irrelevant to what I'm currently working on.

  • Fold/Unfold the current code block - Ctrl+M, Ctrl+M
  • Unfold all - Ctrl+M, Ctrl+L
  • Stop outlining - Ctrl+M, Ctrl+P
  • Fold all - Ctrl+M, Ctrl+O

23. Build and Debug

  • Build - Ctrl+Shift+B
  • Run - Ctrl+F5
  • Debug - F5
  • Cycle through build errors - F8

czwartek, 22 kwietnia 2010

Porady

  • Co sprawdzić w hipotece?
  • Czy musimy iść do gminy?
  • Formalności i dokumenty.
  • Zanim kupimy działkę.
  • Przeznaczenie terenu.
  • Warunki zabudowy i zagospodarowania terenu.
  • formularz wniosku
  • odbitka z mapy zasadniczej
  • wypis z rejestru gruntów
  • Przed zamówieniem projektu
  • Mapa do celów projektowych
  • Media
  • Zatwierdzenie projektu i pozwolenie na budowę
  • Projekt gotowy
  • Projekt powtarzalny
  • Projekt na indywidualne zamówienie
  • Etapy pracy nad projektem
  • Czy musimy iść do gminy?
    Co sprawdzić w hipotece?

    Przed zakupem ziemi należy sprawdzić jej stan prawny: kto jest właścicielem (użytkownikiem wieczystym), jak nabył do niej prawo (kupno, spadek, darowizna, dzierżawa wieczysta), czy zaciągał kredyty lub pożyczki hipoteczne pod jej zastaw.

    W księdze wieczystej działki wyczytamy też, czy nie są z nią związane jakieś prawa, np. służebność drogi koniecznej. Taki wpis to poważna niedogodność, ponieważ wtedy przez naszą działkę będą przechodzić obcy ludzie, a gdy ją ogrodzimy, klucz do bramy będą musieli mieć także sąsiedzi.

    Czy musimy iść do gminy?

    To odwiedziny obowiązkowe. W gminie dowiemy się bowiem, co na wybranej działce można wybudować. Z miejscowych planów zagospodarowania przestrzennego wyczytam też, czy w pobliżu przewidziana, np. budowa autostrady albo spalarni śmieci. To nie tylko utrudni życie, ale obniży cenę nieruchomości, gdy zechcemy ją w przyszłości sprzedać.

    Najlepiej wystąpić o decyzję o warunkach zabudowy i zagospodarowania terenu.....................

    Formalności i dokumenty.

    Przy kupowaniu działki, zamawianiu projektu domu, a następnie przy składaniu wniosku o zatwierdzenie projektu budowlanego i pozwolenie na budowę, potrzebne będą nam liczne dokumenty. Większość z nich uzyskamy w urzędzie miasta lub gminy. Pewne formalności możemy tam załatwiać sami, inne powinien załatwić sprzedający działkę; niektóre możemy scedować na upoważnionego przez nas projektanta.

    Zanim kupimy działkę.

    Nie wszędzie można postawić dom. Jak najwcześniej sprawdźmy, czy upatrzony przez nas kawałek ziemi nadaje się pod budowę. Przed kupnem warto ocenić zalety i wady działki - obejrzeć sąsiedztwo oraz okolicę. Może się na przykład okazać, że teren, na którym leży działka, jest gruntem rolnym lub został objęty ochroną konserwatora przyrody, albo będzie w przyszłości tędy przebiegać trasa szybkiego ruchu.

    Przeznaczenie terenu.

    Dotychczasowy właściciel powinien mieć aktualny wypis i wyrys z miejscowego planu zagospodarowania przestrzennego, zawierający krótką informację o statusie działki (budowlana, rolna, leśna) oraz przeznaczeniu terenu (dokument ten będzie potrzebny przy kupowaniu działki, podczas zawierania umowy notarialnej). Jeśli sprzedający nie ma takiego dokumentu, w wydziale architektury w urzędzie gminy możemy obejrzeć plan, na którym różnymi kolorami i symbolami oznaczono przeznaczenie terenu. Musimy dokładnie znać położenie działki, żeby móc ją na planie zlokalizować. Plan z częścią opisową udostępnia się do wglądu każdemu ( art.29 ustawy o zagospodarowaniu przestrzennym). Na podstawie legendy zorientujemy się, co oznacza symbol oraz kolor, którymi jest oznaczona działka (o pomoc w odczytaniu tych informacji można poprosić pracownika wydziału).

    Pamiętajmy jednak, że jest to wstępne rozeznanie, a informacją wiążącą będzie dopiero dokument wypis i wyrys z plany, który uzyskamy po złożeniu wniosku (może go złożyć każdy, nie tylko właściciel danego terenu). Do wniosku musimy dołączyć kopię tzw. Mapy zasadniczej terenu - kupujemy ją w składnicy map i dokumentów geodezyjnych we właściwym terytorialnie wydziale geodezji i gospodarki gruntami. Za wypis i wyrys z planu jest pobierana opłata skarbowa w wysokości kilku złotych. Mapa zasadnicza kosztuje kilkadziesiąt złotych, ale przyda nam się przy załatwianiu kolejnych formalności.

    Warunki zabudowy i zagospodarowania terenu.

    Zanim zostaniemy właścicielami działki, możemy wystąpić do właściwego urzędu gminy z wnioskiem o wydanie decyzji o warunkach zabudowy i zagospodarowania terenu. W decyzji oprócz potwierdzenia, że na działce można wybudować dom, będą określone warunki dotyczące m.in. sposobu użytkowania działki, przyłączenia się do zewnętrznych sieci oraz wielkości domu.

    Formularz wniosku dostaniemy w wydziale architektury urzędu gminy. Składamy go w tym samym urzędzie wraz z koniecznymi załącznikami (określa to art. 41 ust. 2 ustawy z dnia 7 lipca 1994 r. o zagospodarowaniu przestrzennym, DzU nr89, poz. 415 ze zmianami):

    formularz wniosku - powinniśmy mieć już wstępną wizję domu, gdyż w formularzu określamy przybliżony sposób zagospodarowania działki (np. czy oprócz domu chcemy na niej postawić wolno stojący garaż albo warsztat) i czy będzie to miało wpływ na środowisko przyrodnicze (ile drzew zamierzamy wyciąć, jakie zagrożenia może stworzyć warsztat - poziom hałasu, ilość i rodzaj ścieków, emisja spalin itp.). Musimy też określić wielkość budynku i jego program (rodzaj i liczbę pomieszczeń) oraz potrzebne - w przybliżeniu - ilości wody, energii cieplnej i elektrycznej (w czasie budowy i kiedy już zamieszkamy w domu), ilość ścieków i odpadków. Na podstawie tych informacji urząd wstępnie oceni, czy istniejące sieci są w stanie obsłużyć naszą inwestycję.

    odbitka z mapy zasadniczej - są na niej naniesione m.in. granice działek. Mapa powinna obejmować teren większy od naszej działki o 30 metrów w każdą stronę. Na odbitce obrysowujemy granice naszej działki.

    wypis z rejestru gruntów - zawiera informację, czy w granicach działki są grunty rolne lub leśne. Wypis zamawia się w wydziale geodezji urzędu gminy. Na jego podstawie urzędnik wydający decyzję stwierdza, czy teren wymaga wyłączenia spod produkcji rolnej lub leśnej.

    Wypełnienie formularza i przygotowanie wymienionych dokumentów bywa kłopotliwe, dlatego warto poprosić o pomoc architekta, któremu zamierzamy zlecić projektowanie.

    Przed zamówieniem projektu

    Urząd zatwierdzi tylko projekt opracowany i podpisany przez uprawnionego architekta (dotyczy to wszystkich projektów, również gotowych z katalogu). Dlatego musimy zatrudnić projektanta. Aby mógł rozpocząć swoją pracę, trzeba skompletować wiele dokumentów i uzgodnień.

    Mapa do celów projektowych

    Jej opracowanie zlecamy uprawnionemu geodecie, który na podstawie pomiarów w terenie oraz dokumentacji nanosi aktualny stan zagospodarowania działki, zmiany w konfiguracji terenu (np. nasypy, doły), istniejące sieci uzbrojenia terenu oraz rosnące drzewa.

    Media

    Przed przystąpieniem do wykonania projektu trzeba uzgodnić (robimy to sami lub zlecamy architektowi) warunki podłączenia i eksploatacji mediów. Potrzebne więc są wstępne uzgodnienia (będą załącznikami do projektu budowlanego), które zawiera się z różnymi jednostkami organizacyjnymi, dotyczące:

    • energii elektrycznej - z zakładem energetycznym;
    • wody - z zakładem gospodarki komunalnej (jeżeli jest wodociąg) lub z innym dostawcą;
    • ścieków - z zakładem gospodarki komunalnej (jeżeli jest kanalizacja) lub z odbircą ścieków ze szczelnego zbiornika - szamba;
    • wywozu odpadków - z zajmującą się tym firmą;
    • warunków dojazdu lub wjazdu na działkę - z zarządem dróg (wjazd z drogi publicznej) lub z właścicielem drogi (wjazd z drogi prywatnej);
    • gazu - z zakładem gazownictwa (jeśli jest gazociąg) lub dostawcą gazu w butlach;
    • energią cieplną w celach grzewczych - z odpowiednim dostawcą, np. SPEC-em lub dostawcą gazu ciekłego albo ropy;
    • telefonizacji - z zakładem telekomunikacji lub innym operatorem istniejącej sieci telefonicznej;
    • okablowania telewizyjnego, sygnalizacji alarmowej itp. - z odpowiednimi organizacjami.

    Zatwierdzenie projektu i pozwolenie na budowę

    Projekt budowlany złożony do zatwierdzenia musi być kompletny - powinien zawierać wszystkie wymagane części. Wniosek o zatwierdzenie projektu budowlanego i wydanie pozwolenia na budowę składamy w urzędzie rejonowym ( w wydziale nadzoru architektoniczno - budowlanego). Wzór wniosku (odpowiedni blankiet) otrzymamy w urzędzie rejonowym. Do wniosku musimy dołączyć:

    • projekt budowlany;
    • dokument potwierdzający nasze prawo do dysponowania nieruchomością (tytuł do władania terenem), czyli np. akt notarialny kupna, w którym jesteśmy wymienieni jako właściciele;
    • decyzję o warunkach zabudowy i zagospodarowania terenu. Jeżeli działka była gruntem leśnym lub rolnym, musimy przedstawić dokument potwierdzający zmianę jej przeznaczenia;
    • inne opinie i uzgodnienia wynikające ze specyfiki zamierzenia budowlanego (stosownie do potrzeb). Są to np. uzgodnienia z zespołem uzgadniania dokumentacji (ZUD) dotyczące podłączeń do sieci miejskich, z konserwatorem zabytków lub konserwatorem przyrody, jeżeli działka jest położona np. w rejonie podlegającym ochronie konserwatorskiej. Przeprowadzenie tych uzgodnień możemy zlecić architektowi (musi otrzymać od nas pełnomocnictwo).

    Budowę możemy rozpocząć dopiero po uprawomocnieniu decyzji - mniej więcej po miesiącu od otrzymania pozwolenia na budowę. Wydanie pozwolenia umożliwi nam również staranie się o kredytowanie inwestycji.

    Pozwolenie na budowę jest ważne 3 lata. Jeśli w ciągu trzech lat od dnia otrzymania decyzji nie zaczniemy budowy albo przerwiemy ją na dłużej niż trzy lata (wszelkie prace na budowie należy zapisywać w dzienniku budowy), to pozwolenie na budowę straci ważność i trzeba będzie wystąpić o nie ponownie. Jeśli chcemy wydłużyć czas przygotowania się do rozpoczęcia budowy (np. ze względów finansowych), możemy wystąpić z wnioskiem o zatwierdzenie projektu budowlanego - decyzja taka jest ważna rok - a dopiero później o pozwolenie na budowę.

    Projekt gotowy

    Jest to projekt architektoniczno - budowlany, którego dokumentacja jest powielana i rozpowszechniana.

    Prezentowany jest w licznie wydawanych katalogach. Projekt gotowy może stanowić część projektu budowlanego (zamiast projektu architektoniczno - budowlanego wykonanego na zamówienie). W skład projektu budowlanego wchodzi również opracowany indywidualnie projekt zagospodarowania działki oraz wymagane uzgodnienia i opinie (projekt budowlany składamy z wnioskiem o wydanie decyzji o pozwoleniu na budowę).

    Projekt powtarzalny

    Jest to projekt architektoniczno - budowlany, na podstawie którego buduje się wiele takich samych domków. Najczęściej projekty powtarzalne powstają na zlecenia spółdzielni lub firm, które realizują osiedla domków jednorodzinnych. Projektuje się wtedy kilka typów domków, a ich dokumentację przedstawia zainteresowanym jako ofertę handlową.

    Chcąc uatrakcyjnić swoją ofertę, firmy realizujące osiedla proponują klientom współuczestnictwo w procesie projektowania ich domu. Umożliwiają wprowadzanie zmian i ulepszeń, które będą pełniej odpowiadać potrzebom poszczególnych rodzin (podejście reklamowane w ofertach jako tzw. Indywidualizacja mieszkań). Jednak może to dotyczyć tylko podziałów wewnętrznych i takich elementów, które nie wpłyną na zmianę podstawowych rozwiązań architektoniczno - budowlanych zatwierdzonego już projektu.

    Projekt na indywidualne zamówienie

    Jeśli nie uda się nam znaleźć projektu gotowego, który spełniałby warunki zabudowy dla naszej działki, powinniśmy zamówić projekt indywidualny. Jeżeli mamy działkę tzw. trudną - o nietypowym kształcie, ze spadkami, mocno zadrzewioną - to zamówienie indywidualnego projektu może się okazać koniecznością.

    Wykonanie projektu zlecamy architektowi, z którym współpracujemy na wszystkich etapach jego pracy - tylko wtedy dom będzie naprawdę nasz.

    Etapy pracy nad projektem

    Program

    Architekt ustala z nami (przyszłymi użytkownikami domu), jakie będą nam potrzebne pomieszczenia (w tym gospodarcze), ich liczbę (np. ile sypialni, łazienek), orientacyjną powierzchnię, a także relacje między nimi (np. pokój dzienny połączony z jadalnią i kuchnią, łazienka i garderoba dostępne z holu lub bezpośrednio z sypialni). Powinniśmy również określić inne nasze potrzeby i oczekiwania - np. czy chcemy mieć tarasy i przy których pomieszczeniach, jak duży ma być garaż (na jeden czy na dwa samochody).

    Warto dobrze się przygotować do spotkania, na którym będziemy ustalać program domu - powinniśmy wcześniej uzgodnić w gronie rodzinnym swoje potrzeby.

    Koncepcja

    Architekt przygotowuje koncepcję domu zgodnie z naszymi oczekiwaniami oraz warunkami zabudowy i zagospodarowania terenu. Prezentuje ją w formie planów, elewacji i szkiców perspektywicznych, niekiedy nawet makiet roboczych. Na tym etapie projektowania warto w wyniku dyskusji i wspólnych ustaleń wprowadzić ostatnie korekty do programu.

    Zrozumienie rysunków ułatwią nam wizualizacje komputerowe, dzięki którym jak na zdjęciach możemy obejrzeć dom ze wszystkich stron, a także jego wnętrze. Pamiętajmy jednak, że sporządzanie wizualizacji jest czasochłonne i wiąże się z dodatkowymi kosztami. Uzgodnijmy z architektem, czy w cenę projektu jest wliczony również taki rodzaj prezentacji.

    Ta faza projektowania może trwać od jednego do kilku miesięcy

    Projekt budowlany

    Po zaakceptowaniu przez nas koncepcji projektant sporządza projekt budowlany. Praca ta trwa około dwóch miesięcy i zwykle dzieli się na następujące etapy:

    1. wykreślenie i zwymiarowanie planów, przekrojów i elewacji (na tym etapie można jeszcze dokonać niewielkich korekt, np. przesunąć drzwi, zmienić kierunek ich otwierania, zmienić ustawienie urządzeń w łazience)
    2. przygotowanie rysunków konstrukcyjnych i obliczeń statycznych
    3. przygotowanie pozostałej dokumentacji projektowej oraz skompletowanie dokumentów potrzebnych do zatwierdzenia projektu budowlanego.

    Prawo autorskie

    W opisie projektu architekt zastrzega sobie, że inwestor i wykonawca nie mogą bez jego zgody wprowadzać zmian zniekształcających zamysł architektoniczny. Projekt architektoniczny jest dziełem twórczym, a zatem również przedmiotem prawa autorskiego. Autor zbywa jedynie prawo do jednorazowej realizacji dzieła - nie możemy więc wykorzystać projektu po raz drugi, w innym miejscu.

    Zakończenie budowy

    Wykonawca może zakończyć budowę dopiero po wykonaniu i odebraniu przez inspektora nadzoru wszystkich prac, które były wymienione w umowie. Kierownik budowy musi dopilnować, by wykonawca sporządził dokumentację powykonawczą. Jeśli w czasie budowy zmiany w stosunku do zatwierdzonego projektu były niewielkie, wystarczy nanieść je (po uzgodnieniu z projektantem) na kopie rysunków zatwierdzonego projektu. Niekiedy trzeba również uzupełnić opis.

    Kierownik budowy musi również dopilnować wykonania inwentaryzacji geodezyjnej (obejmuje usytuowanie domu i innych obiektów budowlanych oraz podłączeń instalacji) i uporządkowania placu budowy.

    W dzienniku budowy jest miejsce na oświadczenie kierownika budowy, że budowa została wykonana zgodnie z projektem budowlanym i warunkami pozwolenia na budowę, że teren budowy został doprowadzony do należytego stanu i że budynek nadaje się do użytkowania.

    Zawiadomienie o zakończeniu budowy i wniosek o pozwolenie na użytkowanie budynku składamy w urzędzie nadzoru architektoniczno - budowlanego w terminie 14 dni od dnia zakończenia robót. W zgłoszeniu podajemy powierzchnie: zabudowy, całkowitą, użytkową i mieszkalną oraz kubaturę domu. Do zgłoszenia dołączamy dziennik budowy z wpisem o zakończeniu robót, dokumentację powykonawczą, protokóły badań i sprawdzeń oraz inwentaryzację geodezyjną powykonawczą.

    Jako właściciele budynku jesteśmy zobowiązani do przechowywania dokumentacji powykonawczej wraz z książką obiektu tak długo, jak istnieje dom.

    Czy musimy iść do gminy?

    To odwiedziny obowiązkowe. W gminie dowiemy się bowiem, co na wybranej działce można wybudować. Z miejscowych planów zagospodarowania przestrzennego wyczytam też, czy w pobliżu przewidziana, np. budowa autostrady albo spalarni śmieci. To nie tylko utrudni życie, ale obniży cenę nieruchomości, gdy zechcemy ją w przyszłości sprzedać.

    Najlepiej wystąpić o decyzję o warunkach zabudowy i zagospodarowania terenu lub jesli teren posiada aktualny plan miejscowy o wypis i wyrys z planu miejscowego.

  • piątek, 5 marca 2010

    Debugging Assembly Loading Failures

    Debugging Assembly Loading Failures

    So...you're seeing a FileNotFoundException, FileLoadException, BadImageFormatException or you suspect an assembly loading failure? Try the steps below to start your debugging process.

    First, get the Message property from the exception. If the exception's InnerException property is set, get the Message property from that. If the message is generic, also get the hresult by calling System.Runtime.InteropServices.Marshal.GetHRForException(), passing in the Exception object. If that info is not readily available, you may need to attach a debugger and set it to catch managed exceptions. Then, get the hresult by retrieving the private _HResult field of the managed Exception object.

    Retrieving the Fusion log

    If the exception message isn t enough for you to determine what the problem is, try getting the Fusion log. It will describe the binding failure (if this is due to an assembly binding failure, instead of a loading failure after the file is found). The exception may already include the log. If not, to get it, run fuslogvw.exe. If you don't have fuslogvw.exe already, install the Framework SDK.

    • For pre-v2.0: click on "Log Failures." If this is an ASP.NET or .NET Windows service app, select the Custom option and using regedit, set [HKLM\Software\Microsoft\Fusion\LogPath] to point to an existing directory (like c:\mylogs, not c:\). If you need to log all binds, not just failing ones, set [HKLM\Software\Microsoft\Fusion\ForceLog] as a DWORD value to 1.
    • For v2: click on "Settings," then choose "Log bind failures to disk" if you only care about the failures or "Log all binds to disk" if you want to see all binding requests.
    • To turn on failure logging during a test run instead of by hand, have your script set [HKLM\Software\Microsoft\Fusion\LogFailures] as a DWORD value to 1 using regedit.

    Then, click "OK." Now, re-run the process. Next, click "Refresh" in fuslogvw, and a line should appear for each binding failure (or for each bind, if ForceLog is set). Now, double-click on the line in the "Application" column for the interesting bind, and a web page should come up with the Fusion log.

    If the file was found, it was loaded from the last path probed in the log (or from the GAC, if there is no probed path shown).

    Note: Unless you are explicitly debugging the failure of a resource to load, you will likely want to ignore failures to find assemblies with the ".resources" extension with the culture set to something other than "neutral". Those are expected failures when the ResourceManager is probing for satellite assemblies.

    Troubleshooting Fusion logging

    Keep in mind that there may not be any entries if there were no binds or if there were no binding failures (when logging failures only). (And don't forget to restart your application's process after changing logging settings.) If there are not as many entries as you expect, you may need to clear your download cache to make room for them. To do that, in Internet Explorer, choose “Tools“, “Internet Options“, “Delete Files”, “OK“, then re-run your app and finally click “Refresh“ again in fuslogvw.

    There is only one Fusion log saved per display name/codebase. So, if the same exact reference is requested twice in the same process, it will only show up once in fuslogvw. To see the duplicate logs, you'll need to stop execution (for example, with breakpoints in your debugger) and then get the log at that time.

    For FileNotFoundException:
    At the bottom of the log will be the paths that Fusion tried probing for this assembly. If this was a load by path (as in Assembly.LoadFrom()), there will be just one path, and your assembly will need to be there to be found. Otherwise, your assembly will need to be on one of the probing paths listed or in the GAC if it's to be found.

    You may also get this exception if an unmanaged dependency or internal module of the assembly failed to load. Try running depends.exe on the file to verify that unmanaged dependencies can be loaded. Note that if you re using ASP.NET, the PATH environment variable it's using may differ from the one the command line uses. If all of them could be loaded, try ildasm.exe on the file, double-click on "MANIFEST" and look for ".file" entries. Each of those files will need to be in the same directory as the manifest-containing file.

    For BadImageFormatException:
    Try running peverify.exe on the file. That will give a more specific description about why it s considered a bad image. Keep in mind that modules built against v2 can not be loaded by a pre-v2 CLR.

    For SecurityException:
    You need Execute permission for loading any assembly. Also, if a codebase was used to load this file, you would need both FileIOPermission.Read and FileIOPermission.PathDiscovery or else WebPermission to the location (depending on whether this is a local file or a URL). Try caspol.exe to check your managed security settings.

    For FileLoadException:

    For an "Access is denied" message (for hresult E_ACCESSDENIED, 0x80070005):
    Run tlist -m on the file to see if another process has the file locked and without share-read access. If not, check the ACLs for the file and its dependencies (especially if you're using impersonation).

    For a "The located assembly's manifest definition with name [yourAssembly] does not match the assembly reference" message (for hresult FUSION_E_REF_DEF_MISMATCH, 0x80131040):
    The Fusion log will say which part of the assembly reference failed to match what was found. It will be the assembly name, culture, public key (or token) or version (if the found assembly was strongly-named).

    For "Unverifiable image [yourAssembly] can not be run" or "Can not run executable [yourAssembly] because it contains relocations" messages (for hresult COR_E_FIXUPSINEXE, 0x80131019):
    That image must be run as the process exe or else be compiled as a dll. This is because MC++ has made optimizations for you in your image, based on the assumption that it will be the process exe. If it's not the process exe, it won t be loaded at the expected location, so the assumed offsets will be incorrect. When the CLR sees such a file loaded as a non-process exe, it will reject the load.

    Published Thursday, May 29, 2003 2:09 PM by Suzanne Cook Filed under:

    AppDomain and Shadow Copy

    AppDomain and Shadow Copy

    .Net Framework has a feature called Shadow Copy. When shadow copy is enabled on an appdomain, assemblies loaded in that appdomain will be copied to a shadow copy cache directory, and will be used from there. This is great because the original file is not locked. So it can be changed at will. ASP.NET uses this extensively. Actually, shadow copy is enabled on every appdomain created by ASP.NET.

    This feature is implemented by fusion.

    Unfortunately the documentation for shadow copy is rather poor. MSDN has documentation on various things affecting shadow copy. But it does not discuss the detail of shadow copy feature. This post is an attempt to discuss in detail how shadow copy works.

    All the discussion is based on AppDomainSetup class unless specified.

    There are three things affecting shadow copy:

    1. How to enable shadow copy?
    2. What will be shadow copied?
    3. Where do shadow copied bits go?

    1. How to enable shadow copy?

    MSDN says it all. Set AppDomainSetup.ShadowCopyFiles to true will enable shadow copy.

    2. What will be shadow copied?

    AppDomainSetup.ShadowCopyDirectories controls what will be shadow copied. It is a list of directory names, separated by a semicolon. Each directory name should be absolute directory path. Assemblies loaded from those directories will be shadow copied. If ShadowCopyDirectories is null, all assemblies will be shadow copied. (An interesting corner case is what if ShadowCopyDirectories is empty string. I’ll leave this as an exercise for the readers. What do you think the behavior will be?)

    3. Where do shadow copied bits go?

    AppDomainSetup.CachePath + AppDomainSetup.ApplicationName control where shadow copied bits go. If both CachePath and ApplicationName are set, shadow copied bits will go to CachePath\ApplicationName. Otherwise shadow copied bits will go to your download cache (which is stored in %userprofile%\local settings\application data\assembly). The combination of CachePath and ApplicationName is really handy for ASP.NET, because they can set a common CachePath, and have each application shadow copy to a different location.

    You are responsible to clean up the shadow copy cache if you set CachePath+ApplicationName. In the case of download cache as shadow copy cache, it is automatically managed by fusion.

    On the default appdomain you cannot change its AppDomainSetup. But you can use AppDomain’s API to change the properties. The relevant APIs are:

    SetCachePath, SetShadowCopyFiles, SetShadowCopyPath (the name of this one is not consistent with AppDomainSetup.ShadowCopyDirectories). The ApplicationName is set to the name of the application on default domain.


    http://blogs.msdn.com/junfeng/archive/2004/02/09/69919.aspx


    piątek, 9 października 2009

    English

    unfettered - nieskrępowany, swobodny
    aware - świadomy
    deflate - wypusczać
    affect - oddziałowywać, wpływać
    desire - pragnienie
    emergence - pojawienie się, wyłonienie się
    provide - zaspokajać potrzeby, umożliwać
    presence - obecność
    foist - narzucać
    regardless - bez względu, niezależnie
    effort - staranie, wysiłek

    poniedziałek, 24 sierpnia 2009

    Best Practices for Speeding Up Your Web Site

    http://developer.yahoo.com/performance/rules.html

    poniedziałek, 17 sierpnia 2009

    Kiedy ViewState jest zapisywany, a kiedy odtwarzany

    Kiedy ViewState jest zapisywany, a kiedy odtwarzany

    ViewState zapisywany jest zawsze po zdarzeniu Page_Load (i ewentualnym wykonaniu wszystkich zdarzeń postbacku), przed fazą Render. Oznacza to, że ostatnim miejscem, w którym możemy dokonać zmiany wartości zapisywanych w ViewState jest zdarzenie Page_PreRender. Przed zrenderowaniem strony rekurencyjnie zapisywany jest stan wszystkich kontrolek na stronie, tak aby mógł zostać przesłany jako ukryte pole.

    Odtwarzanie ViewState’u występuje tylko przy postbacku, zaraz po inicjalizacji (Page_Init) – dzięki temu w Page_Load mamy już zawsze odtworzony stan strony z ostatniego żądania. Należy pamiętać, że w zdarzeniu Page_Init nie można odczytywać ani wpisywać niczego do ViewState’u – nie jest on jeszcze odtworzony.