Udostępnij przez


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 pakietów, które obejmują kompletny zestaw zależności bieżącego projektu (referencji 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 zostać zbudowany jako całość, 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, generowany jest nowy tymczasowy PE, a odpowiednie powiadomienia są wysyłane do projektantów.

Uwaga / Notatka

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 ani jsl; może to być dowolne rozszerzenie.

  • Kod wygenerowany przez narzędzie własne musi być prawidłowy i powinien zostać samodzielnie skompilowany przy użyciu wyłącznie zestawu odwołań obecnych w projekcie w momencie, gdy Generate zakończy swoje działanie.

    Gdy kompilowany jest tymczasowy plik wykonywalny PE, jedynym plikiem źródłowym dostarczonym do kompilatora jest wynik działania 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.