Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.
NET Framework
Platforma .NET Framework automatyzuje możliwie dużą część zadań i w wielu przypadkach skutecznie ukrywa przed programistą szczegóły stosowanych rozwiązań. Istnieją jednak sytuacje, w których interwencja programisty jest absolutnie konieczna. Odpowiednie działania mogą wymagać doskonałej znajomości szczegółów funkcjonowania zestawu oraz doświadczenia w przygotowywaniu aplikacji do wdrożenia. Podczas pracy z technologią .NET
odkryliśmy wiele przykładów tego rodzaju zadań. Udział programisty będzie nieodzowny podczas realizacji następujących zadań:
n dodawania pliku do zestawu,
n przeglądania zawartości zestawu,
n przeglądania szczegółowych informacji o konkretnej klasie,
n generowania pary kluczy publicznych i prywatnych celem utworzenia silnie nazwanego zestawu,
n edycji plików konfiguracyjnych.
Wiele z tych zadań bardziej lub mniej szczegółowo omówimy w kolejnych rozdziałach.
Warto jednak mieć świadomość istnienia narzędzi, które ułatwiają wykonywanie odpowiednich działań — sztukę efektywnego korzystania z części tych narzędzi (szczególnie tych wspierających przeglądanie klas i zestawów) należy opanować już na wczesnych etapach poznawania technologii .NET.
W tabeli 1.3 wymieniono i krótko opisano kilka najbardziej przydatnych narzędzi platformy .NET Framework, które ułatwiają wytwarzanie i wdrażanie aplikacji. Trzy narzędzia, Ildasm.exe, wincv.exe i .NET Framework Configuration szczegółowo omówimy w dalszej części tego rozdziału.
Wiele spośród opisanych powyżej katalogów znajduje się w następującym podkatalogu zestawu narzędzi .NET Framework SDK:
c:\Program Files\Microsoft.NET\SDK\v2.0\Bin
Uruchamianie wymienionych przed chwilą narzędzi w wierszu poleceń systemu operacyjnego Windows (z dowolnego katalogu) wymaga w pierwszej kolejności dopisania ścieżki do odpowiednich plików wykonywalnych w zmiennej systemowej Path. Aby to zrobić, należy wykonać następujące kroki:
1. Kliknij prawym przyciskiem myszy ikonę Mój komputer i z wyświetlonego menu kontekstowego wybierz opcję Właściwości.
2. Kliknij zakładkę Zaawansowane i przycisk Zmienne środowiskowe.
3. Zaznacz zmienną Path i dodaj do niej ścieżkę do odpowiedniego podkatalogu zestawu narzędzi SDK.
Rozdział 1. n Wprowadzenie do technologii .NET i języka C#
47
Tabela 1.3. Wybrane narzędzia platformy .NET Framework
Narzędzie
Opis
Al.exe
Narzędzia Assembly Linker można używać do tworzenia zestawów
Assembly Linker
złożonych z modułów wygenerowanych przez różne kompilatory.
Assembly Linker jest wykorzystywany także do budowy zestawów
obejmujących same zasoby (tzw. zestawów satelickich).
Fuslogvw.exe
Narzędzie Assembly Binding Log Viewer jest wykorzystywane
Assembly Binding Log Viewer
najczęściej wtedy, gdy w procesie wczytywania zestawów wystąpią
jakieś problemy. Pozwala skutecznie śledzić kroki składające się
na próby wczytania zestawu.
Gacutil.exe
Narzędzie jest wykorzystywane do instalowania lub usuwania
Narzędzie Global Assembly
zestawów z globalnej pamięci podręcznej zestawów (GAC).
Cache
Ildasm.exe
Narzędzie MSIL Disassembler służy do przeglądania zestawów,
MSIL Disassembler
w tym kodu języka pośredniego (IL) oraz metadanych.
Mscorcfg.msc
Dołączone narzędzie Microsoft Management Console (MMC)
Narzędzie .NET Framework
zaprojektowano z myślą o konfigurowaniu zestawów bez konieczności
Configuration
samodzielnego wprowadzania zmian w plikach konfiguracyjnych
aplikacji. Dodatkowy składnik tego narzędzia, Framework Wizards,
stworzono przede wszystkim dla administratorów, choć jest
wykorzystywany także przez programistów.
Ngen.exe
Kompiluje język pośredni zestawu do postaci odpowiedniego kodu
Native Image Generator
maszynowego. Generowany w ten sposób obraz jest następnie
umieszczany w pamięci podręcznej rdzennych obrazów.
Sn.exe
Generuje klucze, które są następnie wykorzystywane do tworzenia
Narzędzie Strong Name
silnie nazwanych (podpisanych) zestawów.
wincv.exe
Interfejs graficzny wyświetlający i umożliwiający przeszukiwanie
Windows Forms Class Viewer
informacji o klasie.
Wsdl.exe
Generuje opisowe informacje o usłudze sieciowej (Web Service)
Narzędzie Web Services
— informacje mogą być wykorzystywane przez klienta uzyskującego
Description Language
dostęp do danej usługi.
Jeśli masz zainstalowane środowisko Visual Studio, dużo prostszym rozwiązaniem będzie użycie prekonfigurowanego wiersza poleceń tego środowiska. Wiersz poleceń środowiska VS.NET automatycznie inicjalizuje informacje o ścieżkach, które są niezbędne do uzyskiwania dostępu do narzędzi wiersza poleceń.
Ildasm.exe
Narzędzie Intermediate Language Disassembler (Ildasm), które jest częścią zestawu narzę-
dzi .NET Framework SDK, zwykle znajduje się w podkatalogu Bin w katalogu, w którym zainstalowano ten zestaw narzędzi. Narzędzie Ildasm jest bezcenną pomocą podczas analizy środowiska zestawów platformy .NET i jako takie będzie jednym z pierwszych narzędzi, z którym będziesz się musiał zaznajomić już na początku swojej przygody z zestawami .NET.
48
Część I n Podstawy programowania w języku C# i wprowadzenie do technologii .NET
Najprostszym sposobem użycia narzędzia Intermediate Language Disassembler jest wpisa-nie w wierszu poleceń następującego wyrażenia:
C:\>Ildasm /adv
Opcjonalny przełącznik /adv powoduje, że będą dostępne zaawansowane opcje wyświetlania. Wykonanie tego polecenia wywoła graficzny interfejs użytkownika (GUI) z menu File, w którym będziemy mogli wybrać interesujący nas zestaw. Warto pamiętać, że narzędzie Ildasm nie otwiera plików składowanych w pamięci podręcznej zestawów (GAC).
Na rysunku 1.9 przedstawiono przykład danych wyjściowych wyświetlonych przez narzę-
dzie Ildasm po wybraniu jednego z zestawów. Zawartość zestawu jest prezentowana w czy-telnym, hierarchicznym formacie zawierającym nazwę zestawu, w tym przypadku corecsharp1, oraz wszystkie jego składniki.
Rysunek 1.9.
Zawartość
wybranego zestawu
wyświetlona
przez narzędzie
Ildasm.exe
Użytkownik narzędzia może wejść w głąb tej hierarchii, aby zapoznać się z reprezentowa-nym przez poszczególne składniki kodem języka pośredniego IL (lub wspólnego języka pośredniego — CIL). Z rysunku 1.9 wynika, że zestaw corecsharp1 składa się z trzech metod: Metric, conversion i metric. Potwierdza to oryginalny kod klasy Conversion napisany w języku C#:
public class Conversion
{
public double Metric( double inches)
{ return (2.54 * inches); }
[CLSCompliantAttribute(false)]
public double metric( double miles)
{ return (miles / 0.62); }
public double conversion( double pounds)
{ return (pounds * 454); }
}
Dwukrotne kliknięcie metody Metric spowoduje wyświetlenie ekranu z kodem języka po-
średniego (IL) tej metody — patrz rysunek 1.10.