Udostępnij za pośrednictwem


Kompilowanie projektu ASP.NET w programie Visual Studio powoduje wyświetlenie komunikatu o błędzie kompilatora CS0433

Oryginalna wersja produktu: Visual C++
Oryginalny numer KB: 2028526

Podsumowanie

Podczas kompilowania projektu ASP.NET przy użyciu programu Microsoft Visual Studio możesz losowo zobaczyć komunikat o błędzie podobny do następującego:

Komunikat o błędzie kompilatora: CS0433: typ "ASP.summary_common_controls_notes_ascx" istnieje zarówno w folderze "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8 910\App_Web_msftx123.dll i "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msfty456.dll"

Opis: Wystąpił błąd podczas kompilacji zasobu wymaganego do obsługi tego żądania. Przejrzyj następujące szczegółowe informacje o błędzie i odpowiednio zmodyfikuj kod źródłowy.

Błąd źródłowy: wiersz 100: </div>

Wiersz 101: <h3 class="entry">New Notes</h3>

Wiersz 102: <bni:details id="details" runat="server" />

Wiersz 103: <span class="RedZone">1450</span>

Wiersz 104: <p>Podsumowanie.</p>

Plik źródłowy: d:\http\post\publisher\default.aspx Wiersz: 102

Typowe scenariusze, w których ten błąd może wystąpić, zostały omówione w poniższych sekcjach.

Scenariusz 1. Dwa zestawy w tym samym folderze bin

Opis: Częstą przyczyną tego błędu jest to, że w tym samym folderze bin aplikacji internetowej znajdują się dwa zestawy zawierające dwie definicje klas, ale mają tę samą nazwę klasy. Może się tak zdarzyć, jeśli więcej niż jeden Default.aspx został skompilowany w jednym zestawie. Zazwyczaj dzieje się tak, gdy strona wzorcowa (Default.master) i domyślna strona ASPX (Default.aspx) deklarują klasę _Default.

Rozwiązanie: Zmień nazwę klasy strony wzorcowej (z _Default w większości przypadków) i ponownie skompiluj projekt. Ważne jest, aby rozwiązać wszelkie konflikty nazewnictwa między klasami.

Scenariusz 2. Wiele odwołań do tego samego zestawu

Opis: Ścieżki referencyjne w programie Visual Studio służą do określania ścieżki folderu dla odwołań do zestawów używanych przez projekt. Możliwe, że ścieżka zawiera zestaw i że zestaw zawiera tę samą nazwę klasy. Może istnieć wiele odwołań dodanych do tego samego zestawu (prawdopodobnie innej w wersji lub nazwie), co powoduje konflikt nazewnictwa.

Rozwiązanie: Usuń stare odwołanie do wersji. W programie Visual Studio kliknij prawym przyciskiem myszy witrynę internetową i sprawdź odwołania we właściwościach .

Scenariusz 3. Zmiany w uprawnieniach domyślnych

Opis: Domyślnie po skompilowaniu aplikacji internetowej ASP.NET skompilowany kod jest umieszczany w folderze Tymczasowe pliki ASP.NET. Domyślnie uprawnienia dostępu są przekazywane do konta użytkownika lokalnego ASP.NET. Konto ma uprawnienia o wysokim zaufaniu wymagane do uzyskania dostępu do skompilowanego kodu. Możliwe, że wprowadzono pewne zmiany w uprawnieniach domyślnych, a zmiany mogą powodować konflikty wersji. Inną możliwością jest to, że oprogramowanie antywirusowe może przypadkowo zablokować zestaw.

Rozwiązanie: Wyczyść tymczasowy folder plików ASP.NET całej zawartości.

Scenariusz 4. Kompilacja wsadowa

Opis: Gdy atrybut batch w pliku web.config ma wartość True, eliminuje opóźnienie spowodowane przez kompilację wymaganą podczas uzyskiwania dostępu do pliku po raz pierwszy. ASP.NET wstępnie kompiluje wszystkie niekompilowane pliki w trybie wsadowym. Ten tryb wsadowy powoduje opóźnienia podczas pierwszego kompilowania plików.

Ustawienie atrybutu wsadowego na False może spowodować uwidocznienie wszelkich błędów kompilacji maskowanych, które istnieją w aplikacji, ale nie są zgłaszane. Co ważniejsze, informuje ASP.NET, aby dynamicznie kompilować poszczególne pliki .aspx/.ascx w oddzielne zestawy, a nie w jeden zestaw.

Rozwiązanie: ustaw wartość batch=False w <sekcji kompilacji> w pliku web.config. Ta akcja powinna być traktowana jako rozwiązanie tymczasowe. Usługa Batch=False w sekcji kompilacji ma znaczący wpływ na czas kompilacji aplikacji w programie Visual Studio.

Scenariusz 5. Edytowanie pliku web.config powoduje ponowne uruchomienie domeny aplikacji

Opis: Modyfikowanie pliku web.config dla aplikacji ASP.NET lub zmiana pliku w folderze bin (na przykład dodawanie, usuwanie lub zmienianie nazwy), powoduje ponowne uruchomienie domeny aplikacji. Po wystąpieniu tych akcji cały stan sesji zostanie utracony, a buforowane elementy zostaną usunięte z pamięci podręcznej podczas ponownego uruchamiania witryny internetowej. Problem może być spowodowany niespójnym stanem w aplikacji internetowej.

Rozwiązanie: Wyzwól ponowne uruchomienie domeny aplikacji, dotykając (edycji) pliku web.config.

Scenariusz 6. Zmieniono kod źródłowy, który nie został jeszcze dynamicznie ponownie skompilowany

Opis: Kod źródłowy można przechowywać w folderze App_Code, a kod zostanie automatycznie skompilowany w czasie wykonywania. Wynikowy zestaw jest dostępny dla dowolnego innego kodu w aplikacji internetowej. W związku z tym folder App_Code działa podobnie jak folder Bin, z tą różnicą, że można w nim przechowywać kod źródłowy zamiast skompilowanego kodu. Klasa zostanie ponownie skompilowana po zmianie pliku źródłowego. Jeśli występuje konflikt z powodu nieaktualnego zestawu, wymuszanie ponownego kompilowania może rozwiązać problem.

Rozwiązanie: Dotknij pliku w folderach Bin lub App_Code, aby wyzwolić pełną ponowną kompilację.