Obecnie eksperymentuję z dynamicznie ładowanymi obszarami z ASP.NET MVC 3 RC. Widziałem to w wielu miejscach, że nie jest to przeznaczenie obszarów i (przynajmniej pre-MVC 2) niemożliwe, na przykład here.ASP.NET MVC 3 RC AreaRegistration.RegisterAllAreas() i dynamicznie ładowane złożenia
Ale wciąż! Powinno być możliwe uruchomienie go, prawda? Stworzyłem rozwiązanie, dodałem projekt MVC 3, dodałem obszar i trochę treści. Wszystko działa dobrze. Teraz utworzyłem nowy projekt biblioteki klas (w tym samym rozwiązaniu), dodałem do niego odnośnik z projektu MVC i zacząłem przenosić części związane z obszarem do biblioteki. Zmieniono katalog wyjściowy projektu bibliotecznego na folder obszaru projektu MVC i upewniono się, że widoki i ich plik web.config zostaną skopiowane do folderu wyjściowego.
Po lekturze tak dużo o tym, jak nie można mieć zewnętrznych obszarów, to było trochę zaskakujące, że zadziałało. Naprawdę nie ma problemu! Problem zaczyna się, gdy usuwam odwołanie między projektami, a zamiast tego ładuję bibliotekę w kodzie. (Przed wywołaniem AreaRegistration.RegisterAllAreas()
.) Teraz to nie działa. W ogóle.
Poświęciłem trochę w źródle dla MVC 3, a problem wydaje się być z BuildManager.GetReferencedAssemblies()
, który jest używany do uzyskania złożeń, aby szukać implementacji AreaRegistration
.
Nie jestem w 100% pewny, ale wygląda na to, że ta metoda analizuje tylko zespoły, które były obecne/odniesienia podczas kompilacji, czy ktoś może potwierdzić, czy tak jest w rzeczywistości?
Mam debugowane przez to i to wywołanie metody rzeczywiście nie znajduje zespołu, który wczytałem tuż przed wywołaniem. Być może z powodu czegoś, co przegapiłem może .. Jakieś pomysły?
Doskonała odpowiedź, dziękuję mil! Tak, wiem, że w tej chwili jest w zasadzie taki sam, jak w przypadku jednego projektu, ale chciałem je rozdzielić powoli i zobaczyć, gdzie trafiłem problemy, gdy jechałem, zamiast wszystkich problemów naraz :) Jestem biorąc pod uwagę możliwość kompilowania widoków jako zasobów w złożeniu i tworzenia własnych wirtualnych ścieżek/plików, chyba że byłby to zbyt duży problem z wydajnością. Jak już powiedziałem, po prostu bawię się w tej chwili, aby zobaczyć, co jest możliwe, a co nie. ! Jeszcze raz dziękuję! – Robin
Być może spodoba Ci się zaznaczenie wszystkich widoków w zespole obszaru jako zasobów osadzonych i przyjrzenie się implementacji dostawcy ścieżki wirtualnej. Właśnie to zrobiłem, aby uzyskać zespoły przeciągania i upuszczania, które mogłem po prostu umieścić w katalogu bin głównej strony. –
@Joshua Hayes - czy możesz przesłać mi rozwiązanie w zakresie wtyczek? –