Mam witrynę ASP.NET 3.5 (język Visual Studio), ale witryna wciąż się rozwija i między innymi wygląda raczej kowbojsko. Chciałbym, aby to zostało przekonwertowane na aplikację internetową (przestrzenie nazw i wszystkie).
Czy jest to coś, co można łatwo zrobić w programie Visual Studio? Jeśli nie, czy istnieją inne narzędzia, które mogłyby automagicznie tworzyć wszystkie przestrzenie nazw itp.?
asp.net
visual-studio
web-applications
RSolberg
źródło
źródło
Odpowiedzi:
źródło
Przewodnik: konwertowanie projektu witryny sieci Web na projekt aplikacji sieci Web w programie Visual Studio w witrynie MSDN
Jeśli Twoja aplikacja internetowa rośnie ... lepiej podzielić ją na kilka projektów. Konwersja z projektu witryny sieci Web do projektu aplikacji internetowej niewiele pomoże.
źródło
Jeśli masz problemy z uzyskaniem nowego projektu aplikacji sieci Web do kompilacji, sprawdź właściwości pliku w programie Visual Studio wszystkich klas pomocniczych. W przypadku projektu, który konwertowałem, Akcja kompilacji była ustawiona na Zawartość, podczas gdy powinna być Kompiluj.
źródło
Utwórz nową aplikację internetową w VS 2010.
1. Za pomocą Eksploratora Windows skopiuj wszystkie pliki do folderu projektu.
2. W eksploratorze rozwiązań VS 2010 pokaż wszystkie pliki.
3. Wybierz pliki i foldery - kliknij prawym przyciskiem myszy włącz do projektu.
4. Kliknij prawym przyciskiem myszy eksplorator rozwiązań projektu i wybierz Konwertuj na aplikację internetową.
Istnieje kilka drobnych różnic, na przykład nazwa folderu App_Code zostanie zmieniona na old_app_code - to zaskakująco nie powoduje żadnych błędów. TypeName w źródłach danych obiektu i elementy dziedziczone w tagu @Page mogą wymagać [ProjectName]. przedrostek dołączony globalnie. Na przykład, jeśli nazwa typu to „BusinessLogic.OrderManager”, a nazwa projektu to InventorySystem, należy zmienić ją na InventorySystem.BusinessLogic.OrderManager. Również kilka zmian w wyświetlaniu, takich jak wymagane walidatory pól nie są już domyślnie czerwoną czcionką, domyślnie są czarne.
źródło
Początkowo miałem te same problemy. Po przejrzeniu książki Wrox Professional ASP.NET 4.0 znalazłem następujące rozwiązanie dla mojego przypadku.
Najpierw stworzyłem nową aplikację internetową. Skopiowano wszystkie pliki witryny do folderu aplikacji internetowej. Kliknij aplikację prawym przyciskiem myszy i kliknij konwertuj do aplikacji internetowej.
Możesz zapytać, dlaczego musisz przekonwertować aplikację internetową na aplikację internetową. Odpowiedź brzmi: kiedy tworzysz stronę internetową, po prostu kodujesz plik .cs tam, gdzie jest to wymagane. Jednak aplikacja internetowa automatycznie deklaruje .design.cs (lub .vb) i plik .cs dla sekcji kodu i projektu.
DALEJ: Usuń wszystkie ręczne odwołania, takie jak atrybut „Inherits” w dyrektywie PAGE, do innych plików w witrynie, ponieważ przestrzenie nazw BĘDĄ zadbać o centralne odwoływanie się do klas.
Miałem też problem, ponieważ w swoim projekcie nie umieściłem folderów OBJ i BIN. Jeśli uważasz, że brakuje Ci folderów BIN i OBJ, po prostu kliknij ikonę „Pokaż wszystkie pliki” w Eksploratorze rozwiązań, a następnie kliknij prawym przyciskiem myszy brakujące foldery i dodaj do projektu. (aby upewnić się, że zostaną skompilowane z projektem).
AKTUALIZACJA: Jak @deadlychambers wskazuje w komentarzach: Możesz wyszukiwać wszędzie, wykonując „Ctrl + Shift + F”, a następnie wyszukując
Inherits="(.*?)"
. Pozwoli to znaleźć wszystkie wystąpienia i prawdopodobnie zaoszczędzi trochę czasu!źródło
Udało mi się teraz przeprowadzić migrację jednego projektu witryny sieci Web do aplikacji internetowej i jest kilka problemów, na które należy zwrócić uwagę.
Posiadanie ReSharper do Twojej dyspozycji bardzo pomaga w refaktoryzacji plików aspx.
public partial class FolderName_Projectname : Page
Jeśli to konieczne, zmień nazwy wszystkich plików za pomocą Resharper lub ręcznie. Jeśli napotkasz wiele błędów, takich jak"There is already a member Page_Load() defined"
, najprawdopodobniej jest to spowodowane nieprawidłowymi nazwami klas i powieleniemZastąp
CodeFile
na wszystkich stronach aspx,Codebehind
a szczególnie zwróć uwagę na pliki w Twoim podfolderze. Upewnij się,Inhertis=""
że nie zawiera ścieżki względnej. Twoje przestrzenie nazw zajmują się wszystkim. Więc poprawny format toInherits="Namespace.classname"
. Jeśli twoja klasa ma przestrzeń nazw NaSpa i nazwę pliku foo.cs, tak będzieInherits="NaSpa.foo"
Po przygotowaniu wszystkich plików (nie zapomnij o stronach wzorcowych) uruchom „Konwertuj na aplikację internetową”. Jeśli później napotkasz błędy, spłucz i powtórz. Jeśli napotkasz błędy typu „Nie można znaleźć TextBoxName czy brakuje odwołania”, upewnij się, że nie zapomniałeś wyczyścić stron aspx. Dobrym wskaźnikiem jest sprawdzenie automatycznie wygenerowanych plików projektanta. Jeśli
TextBoxName
się tam nie pojawi, konwersja nie powiodła się całkowicie.źródło
Wydaje się, że domyślna przestrzeń nazw ASP już nie działa. Dlatego nie mogę wywołać moich stron User Controls.ascx spoza strony. Zapewnienie im przestrzeni nazw i zmiana domyślnej z ASP na moją przestrzeń nazw wydawało się działać.
źródło