2008-09-18 10 views
28

Mam więc naprawdę dziwny problem z moim folderem App_Code na nowej stronie, którą projektuję.Problemy z folderem App_Code

Mam podstawowej klasy wewnątrz obszaru nazw w folderze App_Code. Wszystko działa poprawnie w IDE, kiedy ustawiam przestrzeń nazw i robię obiekt z klasy. Wyświetla podsumowanie klasy po najechaniu kursorem, a po kliknięciu "idź do deffinition" przechodzi do pliku klasy. Działa również w dobrym stanie.

Jednak, kiedy załadować stronę na moim serwerze, otrzymuję komunikat o błędzie, kiedy dostęp do tej strony:

Linia 10: stosując System.Web.UI.WebControls;
Linia 11: przy użyciu System.Web.UI.WebControls.WebParts;
Linia 12: stosując xxxx.xxxx

Komunikat o błędzie kompilatora: CS0246: typu lub obszaru nazwa 'xxxxxx' nie można odnaleźć (czy brakuje using dyrektywa lub odwołania do zestawu?)

Wiem na pewno, że plik klasy istnieje. Czy ktoś ma pojęcie o tym, co się dzieje?

Edycja:

John, tak, to strona 2.0.

+0

W jaki sposób opublikowałeś witrynę na serwerze? – Kev

Odpowiedz

18

Jeśli aplikacja jest projektem aplikacji WWW, a nie projektem witryny sieci Web, pliki kodu nie powinny znajdować się w folderze App_Code (głupi projekt, wiem). Utwórz nowy folder o nazwie code lub coś tam i umieść go tam.

Wywołało to wiele różnych problemów, gdy uaktualniłem kilka starych stron internetowych .Net do projektów aplikacji.

+0

Warto zauważyć, że po przeciągnięciu plików kodu z folderu App_Code do nowego folderu ich właściwość akcji kompilacji może nadal być ustawiona na zawartość, a reszta aplikacji nie będzie w stanie zobaczyć przestrzeni nazw, ponieważ jedna z odpowiedzi wspomnianych poniżej ustawienie tej opcji do kompilacji spowoduje sortowanie tego, myślę, że każdy plik klasy utworzony domyślnie w folderze App_Code będzie ustawiony na build action = content, nawet w projekcie WAP. – JsonStatham

+0

Co za strata czasu! Nic tylko bóle głowy przez 6 miesięcy! Dzięki za publikację! +1 http://stackoverflow.com/questions/26135251/catch-exceptions-in-asp-net-resulting-from-generic-handler-ashx-file/26136417#26136417 – MacGyver

+0

Tak, miałem aplikację internetową i projekt C# typy. http://www.mztools.com/Articles/2008/MZ2008017.aspx – MacGyver

1

Zauważyłem niedopasowanie między parserem IDE a kompilatorem, gdy wystąpi błąd podczas kompilacji w pliku odniesienia lub pliku kodu. W takiej sytuacji IDE będzie poprawnie identyfikować typy i zapewniać im pełne wsparcie, ale ponieważ kompilator nie był w stanie utworzyć przywoływanych obiektów, będzie narzekał, że obiekty, do których istnieją odniesienia, nie istnieją.

Teraz nie chcę oskarżać nikogo o nic - jest to tylko domysły - ale prawdopodobnie powinieneś upewnić się, że nie ma żadnych błędów w pliku z referencjami.

1

W zależności od tego, jak publikujesz witrynę, nie będzie ona wyglądała w kodzie App_Code, będzie szukać biblioteki DLL w folderze Bin, który zawiera klasę. W jaki sposób przeniosłeś swoją witrynę na serwer?

2

To mi się po prostu przydarzyło, a rozwiązaniem było to, że App_Code (i App_Data) nie zostały umieszczone w katalogu głównym serwera, ale w podfolderze zawierającym wszystko inne. Musi być w katalogu głównym!

63

Problem, że zajęcia nie są kompilowane, musisz rozwiązać ten problem po prostu przechodząc do właściwości każdej klasy w folderze App_Code i zmienić to „Build Action” własność z „content” do „Kompilacja”

+0

Czy istnieje sposób na zmianę działania budowania każdej klasy naraz? – binard

+2

Jakie są tego konsekwencje, czy istnieje powód, dla którego jest to ustawienie domyślne? – Coops

+1

Nie mogę kliknąć usługi wyłączonej – Lijo

0

Dla tych, którzy następują ... Miałem ten sam zestaw problemów, ale został spowodowany, ponieważ nazwałem klasę w App_Code, "HTML". Zajęło mi dużo czasu, aby dojść do wniosku, że był to tylko konflikt nazw, ponieważ kompilator nie był zbyt pomocny w informowaniu mnie o problemie.

Powiązane problemy