Uwidaczniaj typy projektantom wizualizacji
Program Visual Studio musi mieć dostęp do definicji klas i typów w czasie projektowania, aby wyświetlić projektanta wizualnego. Klasy są ładowane ze wstępnie zdefiniowanego zestawu zestawów, które obejmują kompletny zestaw zależności bieżącego projektu (odwołania oraz ich zależności). Może być również konieczne, aby projektanci wizualizacji uzyskiwali dostęp do klas i typów zdefiniowanych w plikach generowanych przez narzędzia niestandardowe.
Systemy projektów Visual Basic i Visual C# zapewniają obsługę uzyskiwania dostępu do wygenerowanych klas i typów za pośrednictwem tymczasowych przenośnych plików wykonywalnych (tymczasowych PEs). Każdy plik wygenerowany przez narzędzie niestandardowe można skompilować w zestawie tymczasowym, aby typy mogły być ładowane z tych zestawów i udostępniane projektantom. Dane wyjściowe każdego niestandardowego narzędzia są kompilowane w osobnym tymczasowym interfejsie PE, a powodzenie lub niepowodzenie tej tymczasowej kompilacji zależy tylko od tego, czy można skompilować wygenerowany plik. Mimo że projekt może nie być kompilowania jako całości, poszczególne tymczasowe PE mogą być nadal dostępne dla projektantów.
System projektu zapewnia pełną obsługę śledzenia zmian w pliku wyjściowym niestandardowego narzędzia, pod warunkiem, że te zmiany są wynikiem uruchomienia narzędzia niestandardowego. Za każdym razem, gdy narzędzie niestandardowe jest uruchamiane, jest generowany nowy tymczasowy pe, a odpowiednie powiadomienia są wysyłane do projektantów.
Uwaga
Ponieważ plik generowania pliku wykonywalnego programu tymczasowego występuje w tle, żadne błędy nie są zgłaszane użytkownikowi, jeśli kompilacja zakończy się niepowodzeniem.
Narzędzia niestandardowe korzystające z tymczasowej obsługi pe muszą być zgodne z następującymi regułami:
Element GeneratesDesignTimeSource musi być ustawiony na wartość 1 w rejestrze.
Bez tego ustawienia nie ma miejsca kompilacja pliku wykonywalnego programu.
Wygenerowany kod musi być w tym samym języku co ustawienie projektu globalnego.
Tymczasowy pe jest kompilowany niezależnie od tego, co niestandardowe narzędzie raportuje jako żądane rozszerzenie w DefaultExtension pod warunkiem, że element GeneratesDesignTimeSource ma ustawioną wartość 1 w rejestrze. Rozszerzenie nie musi być .vb, .cs lub jsl; może to być dowolne rozszerzenie.
Kod wygenerowany przez narzędzie niestandardowe musi być prawidłowy i musi zostać skompilowany samodzielnie przy użyciu tylko zestawu odwołań znajdujących się w projekcie w momencie Generate zakończenia wykonywania.
Gdy kompilowany jest tymczasowy pe, jedynym plikiem źródłowym dostarczonym do kompilatora jest dane wyjściowe niestandardowego narzędzia. W związku z tym niestandardowe narzędzie korzystające z tymczasowego interfejsu PE musi generować pliki wyjściowe, które można skompilować niezależnie od innych plików w projekcie.