Kompilowanie / Osadzanie szablonów użytkownika ASCX do ponownego użycia w wielu aplikacjach internetowych
Jestem tutaj na prawdziwym drapieżniku ... i wydaje się, że jest to jeden z bardziej frustrujących tematów ASP.NET.
Mam zespół, który implementuje wiele niestandardowych elementów Linq, które w swoim rdzeniu mają zerową funkcjonalność sieci. Mam dodatkowy zespół, który rozszerza ten zespół o zachowanie specyficzne dla sieci.
Zachowanie specyficzne dla sieci jest dostarczane z kilkoma kontrolkami użytkownika zaznaczonymi w szablonie UserControls ASCX.
Mam problem z umieszczeniem ładnego wykończenia na tym zespole, dzięki czemu można go łatwo ponownie wdrożyć do użytku w innych aplikacjach. Pozwól mi przejść przez to, co próbowałem do tej pory:
Skopiował pliki ASCX do zużywającej się aplikacji internetowej za pomocą zdarzeń budowania;daleki od idealnego i dość koszmarnego rozmieszczenia.Zaimplementowano niestandardowy VirtualPathProvider i osadzono szablony ASCX w zespole jako osadzone zasoby. Niestety podczas używania dyrektywy Register w aplikacji użytkowej tworzy deklarację projektanta jako UserControl, gdzie wymagałbym deklaracji rzeczywistego typu sterowania;nieprzewidziane (zazwyczaj) i niepożądane.Utworzono projekt Web Deployment Project w celu skompilowania UserControls, ale skompilowane formanty użytkownika stają się częścią innego zespołu i nie pochodzą już z definicji klas w moim zespole WWW -zespół musi utworzyć instancję zależną od kontekstu żądania.Więc numer 1 jest po prostu bzdurą, numer 2 nie daje mi wsparcia typu, którego pragnę i numer 3 Myślę, że za chwilę stworzę rozsądne rozwiązanie z:
Zrzuć wszystkie klasy niekontrolujące doApp_Code
folder, przygotuj klasę fabryczną, która skonstruuje obiekt o pożądanym typie kontrolnym przy użyciu odbicia i oczekiwanie, że odzwierciedlony typ będzie obecny w wyniku wdrożenia (miejmy nadzieję, że zagwarantowane przez obecnośćClassName
atrybut wControl
dyrektywa).Zawsze istnieje także inna opcja przepisywania kontrolek ASCX na kontrolki niestandardowe, ale po prostu nie masz zasobów, aby rozważyć to w tej chwili, a my nie mamy żadnej wiedzy w tym zakresie i działają dobrze jako UserControls.
Czy brakuje mi czegoś oczywistego, może coś znacznie prostszego, czy jest to celowo trudne? Przeczytałem historie procesu kompilacji ASP.NET, który jest bardzo niefortunny w projekcie podczas moich podróży w tym temacie.