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.

questionAnswers(1)

yourAnswerToTheQuestion