Utworzyłem stronę internetową w ASP.NET i stworzyłem klasę i umieściłem ją w folderze App_Code. Nie mogę jednak uzyskać dostępu do tego z innych stron. Czy trzeba coś skonfigurować, aby na to pozwolić? Sprawiłem, że działało w poprzednich projektach, ale jakoś nie w tym.
namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
Odpowiedzi:
Kliknij
.cs
plik prawym przyciskiem myszy wApp_Code
folderze i sprawdź jego właściwości.Upewnij się, że „Działanie kompilacji” jest ustawione na „Kompiluj”.
źródło
Umieść to u góry innych plików, w których chcesz uzyskać dostęp do klasy:
LUB uzyskaj dostęp do klasy z innych plików takich jak ten:
Nie jestem pewien, czy to jest twój problem, czy nie, ale jeśli byłeś nowy w języku C #, to jest łatwe do zrobienia.
Aktualizacja: Niedawno odkryłem, że jeśli dodam folder App_Code do projektu, muszę zamknąć / ponownie otworzyć program Visual Studio, aby poprawnie rozpoznać ten „specjalny” folder.
źródło
Przejdź do strony, z której chcesz uzyskać dostęp do klasy App_code, a następnie dodaj przestrzeń nazw klasy app_code. Musisz dostarczyć następujące
using
oświadczenie:Następnie musisz przejść do właściwości klasy app_code i ustawić opcję „Kompiluj akcję” na „Kompiluj”.
źródło
upewnij się, że używasz tej samej przestrzeni nazw co strony
źródło
Nie zastanawiałem się jeszcze, dlaczego tak się dzieje, ale miałem w
App_Code
folderze klasy, które wywoływały w sobie metody i świetnie sobie z tym radziłem, gdy budowałem projekt .NET 4.5.2, ale potem musiałem przywróć go do 4.0, ponieważ serwer docelowy nie był aktualizowany. Właśnie wtedy znalazłem ten problem (po naprawieniulangversion
w moim pliku web.config od 6 do 5 ... innej historii) ....W jednej z moich metod występował błąd:
Wszystkie moje klasy były już ustawione na „Kompiluj” w swoich właściwościach, jak sugerowano w przyjętej odpowiedzi tutaj, i każda z nich miała wspólną przestrzeń nazw, która była taka sama, a każda z nich miała
using MyNamespace;
na górze każdej klasy.Odkryłem, że jeśli właśnie przeniosłem obraźliwe klasy, które musiały na siebie wywoływać metody, do innego, standardowego folderu o nazwie innej niż „App_Code”, przestały mieć problem z konfliktem.
Uwaga : jeśli utworzysz standardowy folder o nazwie „AppCode”, przenieś do niego swoje klasy, usuń folder „App_Code”, a następnie zmień nazwę „AppCode” na „App_Code”, twoje problemy powrócą. Nie ma znaczenia, czy użyjesz opcji „Nowy folder” lub „Dodaj folder ASP .NET”, aby utworzyć „Kod_aplikacji” - wydaje się, że wpisuje nazwę.
Być może jest to tylko problem .NET 4.0 (i być może wcześniej) ... W wersji 4.5.2 czułem się dobrze przed przywróceniem!
źródło
Odkryłem, że łatwiej jest przenieść pliki do osobnego projektu biblioteki klas, a następnie odwołać się do tego projektu w projekcie sieciowym i zastosować przestrzeń nazw w
using
sekcji pliku. Z jakiegoś powodu inne rozwiązania nie działały dla mnie, ale ta poprawka zadziałała.źródło
W moim przypadku nie udało mi się zbudować projektu z klasami zdefiniowanymi w folderze App_Code.
Nie mogę powtórzyć scenariusza, aby skomentować, ale musiał zamknąć i ponownie otworzyć studio wizualne, aby intellisense do współpracy zgodziło się ...
Zauważyłem, że gdy klasa w folderze App_Code jest ustawiona na „Kompiluj” zamiast „Treść” (kliknij ją prawym przyciskiem myszy), błędy pochodzą z drugiej wersji klasy ... Spójrz na lewą stronę 3 z 3 pól między okienkiem kodu a kartą. Ten „inny” został nazwany czymś podobnym do 10_App_Code lub podobnym.
Aby rozwiązać problem, zmieniłem nazwę folderu z App_Code na Code, jawnie ustawiłem przestrzenie nazw w klasach i ustawiłem wszystkie klasy na „Kompiluj”
źródło