2010-01-20 15 views
7

Odziedziczę kod ASP.NET (jestem facetem OS, a nie web dev (jeszcze ;-)). Rozwiązanie zostało przebudowane i jest w nim wiele projektów (bibliotek i stron asp.net). Oprócz bibliotek istnieją dwa projekty asp.net (o nazwie MAINSITE i SUBSITE). Tylko MAINSITE jest używany jako oficjalna strona (jako strona asp.net), a MAINSITE ma prawa do kodu w SUBSITE stronie asp.net, ale nie korzysta z samej witryny. Próbuję dowiedzieć się, jak to wyczyścić i zamienić SUBSITE w bibliotekę.Co sprawia, że ​​projekt ASP.NET jest aplikacją a biblioteką?

Moje szybkie pytanie brzmi: zawsze gdy debuguję MAINSITE (ustawiony jako domyślny), uruchamiam dwa procesy asp.net: MAINSITE i SUBSITE. A więc, przynajmniej, jak mogę tego uniknąć? Czy istnieje szybkie/tymczasowe rozwiązanie tego problemu?

Moja szczegółowe pytanie brzmi:

Co sprawia, że ​​witryny ASP.NET witryny asp.net? Na przykład w C różnicę między dll i exe można zdefiniować (pozornie tak) jako obecność głównej i potencjalnej informacji eksportowej dla biblioteki (między innymi oczywiście). Jeśli miałbym konwertować exe do dll mógłbym: 1. usunąć główny kod 2. upewnić się, że publiczny interfejs był poprawny (i wyeksportowany poprawnie) 3. przekonwertować makefile, aby zbudować bibliotekę dll zamiast exe.

Czy ktoś może wskazać mi podobne kroki dla asp.net do biblioteki .net? Może: 1. pozbyć się index.aspx 2. pozbyć się web.config 3. żadnych plików * .cs do usunięcia? 4. Jak zmienić właściwości? 5. Jakieś błędy?

Dziękuję bardzo za pomoc. Szczegóły: Visual Studio 2008/.NET 3.5

+0

Jeśli chodzi o szybkie pytanie, wygląda na to, że skonfigurowano wiele projektów startowych. Kliknij prawym przyciskiem myszy Rozwiązanie, Właściwości, a następnie wybierz pojedynczy projekt startowy z wybranym menu MAINSITE. – jamesaharvey

Odpowiedz

3

Istnieje wiele, wiele komponentów, aby aplikacja była uruchamiana jako aplikacja ASP.Net. Jednakże, jeśli chodzi o rzeczywisty projekt aplikacji WWW, nie ma tak wielkiej różnicy między nim a ogólnym kodem biblioteki, z wyjątkiem faktu, że znaczna część twojego kodu opiera się na istnieniu środowiska wykonawczego HttpApplication.

Każdy kod wykorzystujący System.Web (szczególnie System.Web.UI) będzie podejrzany pod względem posiadania tej zależności. Na przykład cały kod na stronie lub programach obsługi zdarzeń webcontrol (Init, Load, PreRender itp.) Opiera się na fakcie, że istnieje HttpHandler (działający wewnątrz HttpApplication) podnosząc te zdarzenia. Jeśli uruchomisz tę samą WebControl z biblioteki, która nie znajduje się w projekcie ASP.Net, nic z tego się nie wydarzy i kontrola będzie bezużyteczna. Jednak ta sama biblioteka byłaby całkiem funkcjonalna, gdyby była wykonywana w kontekście procesu ASP.Net.

To naprawdę sprowadza się do procesu, w którym uruchamiasz bibliotekę. W większości przypadków procesy ASP.Net są inicjowane przez IIS, chociaż możliwe jest również hostowanie procesu ASP.Net w innych typach programów. .

Niestety, nie ma prostego 5-etapowego procesu konwersji projektu internetowego na bibliotekę. Ale z zasady kciuka, kontrole, .aspx i.ascx codebehind nie będą konwertować.

Bardziej szczegółowe informacje na temat kodu programu ASP.Net można znaleźć w artykule "A Low level look at ASP.Net" Ricka Strahla.

3

Jeśli przejdziesz do "Plik"> "Nowy"> "Nowy projekt ...", a następnie kliknij (zakładając, że używasz C#) "Visual C#" na liście po lewej stronie masz możliwość utworzenia projektu "Biblioteki klas". Możesz wyodrębnić cały odpowiedni kod do jednego z nich, a następnie odwołać się do swojego "MAINSITE".

Należy odwoływać się do niego w sekcji "Referencje" w projekcie MAINSITE i może zaistnieć potrzeba zaimportowania projektu biblioteki za pomocą słowa kluczowego import.

+1

Yup - To prawdopodobnie będzie dużo czystsze niż próba konwersji SUBSITE do biblioteki klas. – cwap

+2

To działałoby tylko wtedy, gdy jego "podstrona" zawiera tylko klasy lub inne pliki "kodu". Rzeczy takie jak pliki ASPX i ASCX zależą od kompilacji ASP.NET i prawdopodobnie będą odwoływać się do zasobów osadzonych w zwykłej bibliotece klas. –

+0

cóż, powiedział, że część "SUBWAY" witryny nie jest używana, tylko niektóre pliki kodu ... dlatego zasugerowałem tę metodę. – Jason

Powiązane problemy