Projekt, do którego istnieją odniesienia, „gubi się” w czasie kompilacji

103

Mam rozwiązanie C # z dwoma projektami: usługą (projekt główny) i loggerem. Usługa korzysta z klas z loggera. Dodałem referencję do projektu rejestratora w ramach projektu usługi. W czasie projektowania autouzupełnianie działa dobrze: klasy rejestratora są widoczne, referencje, których używam, są odpowiednio pokolorowane.

Odbudowuję rozwiązanie i coś idzie nie tak. Odwołania nie są już rozpoznawane: „Nazwa„ Rejestrowanie ”nie istnieje w bieżącym kontekście”, a klasy nie istnieją już w autouzupełnianiu. Usunięcie i ponowne dołączenie odwołania powoduje powrót do stanu podstawowego, w którym identyfikatory są widoczne do autouzupełniania.

Uruchomiłem ponownie, wyczyściłem wszystkie pamięci podręczne, upewniłem się, że jest to jedyne wystąpienie VS 2010 uruchomione na moim komputerze.

Czy jest coś oczywistego (oczywiście), czego mi brakuje?

Bob Kaufman
źródło

Odpowiedzi:

158

Sprawdź typy kompilacji każdego projektu we właściwościach projektu - założę się, że jeden lub drugi będzie ustawiony przeciwko budowaniu .NET XX - Client Profile.

W przypadku niespójnych wersji, szczególnie z jedną istotą, Client Profilea drugą nie, działa w czasie projektowania, ale kończy się niepowodzeniem w czasie kompilacji. Prawdziwa łapanka.

W Visual Studio 2010 dzieje się dla mnie coś dziwnego, co powoduje, że projekty pozornie losowo ustawiają Client Profile, czasami podczas tworzenia projektu, a czasami kilka dni później. Prawdopodobnie jakiś skrót klawiszowy, który przypadkowo uderzam ...

joshcomley
źródło
1
Założę się, że masz rację ... i wstyd mi, jeśli tak, że nie pamiętam tego porównywalnego pytania, które zadałem w zeszłym miesiącu! stackoverflow.com/questions/3991361/…
Bob Kaufman
6
@Bob To ciągle mi się przytrafia i tak jak ty masz to poprzednie pytanie, za każdym razem, gdy to się dzieje, przez co najmniej kilka minut jestem całkowicie zdezorientowany całą tą sprawą, dopóki nie pamiętam "Oooooh, czekaj, kliencie ** ** ing Profile ”
joshcomley
4
Miałem też ten problem z VS2012. Okazało się, że nie był to problem z profilem klienta, ale projekt, do którego istnieje odwołanie, był w wersji 4.5, a nowy projekt, do którego się odwołano, miał domyślnie wersję 4.0. Zderzyłem ten jeden do 4,5 i problem zniknął. Naprawdę to samo rozwiązanie, tylko inna odmiana.
Brad Mathews
Zdarzyło mi się to niedawno w VS 2013. Projekt był domyślnym 4.5, ale jedna z bibliotek została zbudowana na 4.5.2. Jeśli projekt ma wersję 4.5.2, a jedna z bibliotek ma wersję 4.5 lub 4.5.1, będzie działać. Ale nie na odwrót.
ahwm
4

Upewnij się, że oba projekty mają tę samą docelową wersję frameworka tutaj: kliknij prawym przyciskiem myszy projekt -> właściwości -> aplikacja (karta) -> struktura docelowa

Upewnij się również, że projekt "rejestrator" (który chcesz dołączyć do głównego projektu) ma typ wyjścia "Biblioteka klas" w: kliknij prawym przyciskiem myszy projekt -> właściwości -> aplikacja (karta) -> typ wyjścia

Na koniec odbuduj rozwiązanie.

manar
źródło