Mam rozwiązanie, które zawiera witrynę internetową i bibliotekę klas w programie Visual Studio 2008.
Następnie mam inny projekt witryny sieci Web poza rozwiązaniem, który musi odwoływać się do biblioteki klas. Klikam prawym przyciskiem myszy folder Bin lub projekt i wybieram opcję Dodaj odniesienie, a następnie wybieram mój projekt biblioteki klas, dodaje on około 15 bibliotek DLL, których potrzebuje biblioteka klas, do folderu bin witryn sieci Web, ale żaden z plików .cs nie rozpoznaje instrukcji using.
using MyLibrary.MyFolder;
Mówi, że nie może go rozwiązać, a ReSharper po prostu mówi, że można go bezpiecznie usunąć, ponieważ nie jest używany.
ReSharper może rozpoznać, że potrzebuje odwołania i sugeruje, że „odwołuje się do MyLibrary i używa MyFolder”. Nie jestem pewien, dlaczego sugeruje dodanie odniesienia, które już mam. Kiedy idę z sugestią, pojawia się błąd
„Nie udało się nawiązać połączenia z modułem. Prawdopodobnie odniesienie spowoduje cykliczne zależności między projektami”.
Próbowałem przejść do stron właściwości witryn internetowych i usunąć wszystkie odniesienia i ponownie je dodać, ale powoduje to te same błędy. Jakieś pomysły, dlaczego to nie działa?
źródło
Odpowiedzi:
Sprawdź również, czy projekty nowego rozwiązania działają na platformie zgodnej z projektem, który próbujesz uwzględnić. Próbowałem zawrzeć odniesienie do projektu 4.0 w projekcie 3.5.
źródło
Znalazłem, jak rozwiązać ten problem (przynajmniej dla mnie). Dlaczego to zadziałało, nie jestem pewien, ale zadziałało. (Właśnie wypróbowałem na drugiej stronie internetowej, która miała ten sam problem i poniższe rozwiązanie również działało).
Próbowałem normalnego czyszczenia projektów i przebudowy, zamykając wszystkie moje wystąpienia Visual Studio i uruchamiając je ponownie, a nawet próbowałem ponownie uruchomić komputer.
W rzeczywistości zadziałało otwarcie projektu w programie Visual Studio, zamknięcie wszystkich otwartych kart, a następnie zamknięcie go.
Wcześniej zostawiłem otwarte karty, ponieważ nie sądziłem, że to ma znaczenie (i prawie nigdy nie zamykam kart, których używam).
źródło
Jedną z możliwości jest to, że docelowa wersja biblioteki klas .NET Framework jest wyższa niż wersja projektu.
źródło
Miałem podobny problem, czy wszystkie moje odniesienia zostaną błędnie usunięte przez Resharper - Rozwiązaniem, które zadziałało, jest wyczyszczenie pamięci podręcznej Resharper, a następnie ponowne uruchomienie VS
tools-> options-> resharper-> options-> general-> kliknij przycisk Clear cache i zrestartuj VS
źródło
Miałem podobne problemy, gdy VS czasami budował, a czasami nie. Po kilku poszukiwaniach i próbach odkryłem, że mam niejednoznaczne odniesienie do klasy o tej samej nazwie w różnych bibliotekach („FileManager”). Projekt, który nie zostałby skompilowany, to moje testy jednostkowe, które odwołują się do wszystkich modułów w moim rozwiązaniu. Wymuszenie odniesienia do określonego modułu rozwiązało problem.
Chodzi mi o to: zamiast winić ReSharper lub VS, dobrym pomysłem może być dwukrotne sprawdzenie, czy naprawdę nie ma jakiegoś cyklicznego odniesienia. Najczęściej klasy o tych samych nazwach w różnych modułach mogą powodować zamieszanie i często są objawem złego projektu (jak w moim przypadku).
źródło
The type or namespace name 'A' does not exist in the namespace 'B'
. Zauważ, że nie pojawiają się żadne ostrzeżenia ...To brzmi jak podobny problem z ReSharper:
http://www.jetbrains.net/devnet/thread/275827
Według jednego użytkownika w wątku wymuszenie kompilacji rozwiązuje problem (CTRL + Shift + B) po pierwszej kompilacji.
Brzmi jak problem z ReSharper, szczególnie w ich przypadku. Czy próbowałeś budować bez względu na ostrzeżenia i możliwe fałszywe błędy?
źródło
Ponieważ oba znajdują się w tym samym rozwiązaniu, zamiast dodawać odwołanie do biblioteki DLL, dodaj odwołanie do samego projektu biblioteki klas (w oknie dialogowym Dodaj odwołanie będzie do tego odpowiednia karta).Ach, to inne rozwiązanie. Przegapiłem to. Co powiesz na to, że zamiast dodawać odwołanie do projektu, możesz dodać odwołanie do skompilowanej biblioteki DLL biblioteki klas. W oknie dialogowym Dodaj odniesienie znajduje się karta Przeglądaj, która to robi.
źródło
Po potwierdzeniu, że ta sama wersja asp.net była używana. Usunąłem projekt. wyczyściłem rozwiązanie i ponownie dodałem projekt. to działa dla mnie.
źródło
Jeśli odwołujesz się do zestawów projektów, które znajdują się w tym samym rozwiązaniu, dodaj odwołanie do projektu (za pomocą karty „Projekty”), zamiast przeglądać dll w folderze \ bin \ Debug (lub \ bin \ Release) (używając Karta „Przeglądaj”). Zobacz zrzut ekranu poniżej. Przeglądaj tylko w poszukiwaniu pliku zestawu / dll, jeśli jest uważany za zestaw zewnętrzny.
źródło
Usunąłem * .csproj.user (plik resharper) z mojego projektu, a następnie zamknij wszystkie karty i otwórz go ponownie. Potem mogłem skompilować swój projekt i nie było żadnych ostrzeżeń o ponownym udostępnieniu.
źródło
Miałem ten problem. Zajęło mi to wieki, zanim to rozgryzłem. Miałem ludzi do pomocy przez ramię. Odbudowaliśmy, wyczyściliśmy i ponownie uruchomiliśmy Visual Studio i to nie rozwiązało problemu. Usunęliśmy i ponownie dodaliśmy odniesienia ...
Wszystko bez skutku ... Aż!
Rozwiązaniem mojego problemu było niepoprawne wpisanie deklaracji klasy.
Zanim zaczniesz surowo mnie oceniać, pozwól mi wyjaśnić, dlaczego nie było to głupie, a także dlaczego ten błąd mógł popełnić nawet najbardziej inteligentny z programistów.
Ponieważ błąd pojawił się na początku nazwy, nie pojawił się on na liście zajęć z inteligencją, kiedy zacząłem pisać.
na przykład
Nazwa klasy:
Message.cs
Deklaracja:
public class Massage { //code here }
Na pierwszy rzut oka i małą czcionką Masaż wygląda identycznie jak Message.
Wpisanie M spowodowało wyświetlenie zbyt wielu klas, więc wpisałem e, które nie pojawiło się w błędnie wpisanej wersji, co sprawiało wrażenie, że klasa nie jest pobierana przez kompilator.
źródło
Podobny problem miałem w VS 2010 podczas tworzenia projektu testowego dla aplikacji MVC 2. Objawy były identyczne.
Wiadomość od ReSharper była nieco myląca. Przez chwilę kompletnie zignorowałem ReSharper i zrobiłem to w „ręczny sposób VS”:
Na tym etapie wystąpił błąd kompilacji: powinienem był odwołać się do pliku
System.Web.Mvc
zestawu w moim projekcie testowym (westchnienie). Dodanie tego odwołania powoduje kompilację projektu. Problemy z ReSharper pozostają, ale narzędzie do uruchamiania testów ReSharper działa.Po ponownym uruchomieniu VS błędy ReSharper również zniknęły. Nie jestem pewien, czy ponowne uruchomienie jest wymagane - wystarczy zamknąć plik .cs.
Od teraz, kiedy zobaczę wiadomość ReSharper
Przeczytam
źródło
Kolejna możliwa poprawka, która właśnie zadziałała dla mnie:
Jeśli masz zestaw A, który odwołuje się do zestawu B, z których oba odwołują się do zestawu X spoza projektu (zewnętrznego), a kod zestawu B nie rozpozna, że odwołujesz się do X, spróbuj wykonać następujące kroki w podanej kolejności:
Najwyraźniej program VS nie rozpozna odwołania do zestawu zewnętrznego w projekcie, który jest zależnością innego projektu, który już odwołuje się do zewnętrznego. Poprzez ponowne skonfigurowanie odniesień od podstaw można to przezwyciężyć. To bardzo dziwne.
źródło
Zmierzyłem się z tym problemem i rozwiązałem go, zamykając Visual Studio, ponownie otwierając Visual Studio, czyszcząc i przebudowując rozwiązanie. To zadziałało dla mnie.
źródło
W przypadku korzystania z TFS wykonanie polecenia Pobierz najnowsze (rekurencyjne) nie zawsze działa. Zamiast tego wymuszam pobranie najnowszej, klikając opcję Kontrola źródła => Pobierz określoną wersję, a następnie klikając oba pola. To zwykle działa.
Jeśli nadal nie działa, usunięcie pliku suo (zwykle znajdującego się w tym samym miejscu co rozwiązanie) zmusza program Visual Studio do pobrania wszystkich plików ze źródła (a następnie ponownego zbudowania pliku suo).
Jeśli to nie zadziała, spróbuj zamknąć wszystkie otwarte pliki i zamknąć program Visual Studio. Przy następnym uruchomieniu programu Visual Studio powinno to zostać naprawione. W ten sposób rozwiązano błąd resharpera.
źródło
Niedawno natknąłem się na podobny problem. Pracuję w Visual Studio 2015 z Resharper Ultimate 2016.1.2. Próbowałem dodać nową klasę do mojej bazy kodu, próbując odwołać się do klasy z innego zestawu, ale Resharper zgłosiłby błąd dla tego pakietu.
Z pomocą współpracownika zorientowałem się, że klasa, do której się odwołujesz, istnieje w globalnej przestrzeni nazw i nie jest dostępna z nowej klasy, ponieważ została ukryta przez inną jednostkę o tej samej nazwie, która istniała w bieżącej przestrzeni nazw.
Dodanie słowa kluczowego „global ::” przed wymaganą przestrzenią nazw pomogło mi odwołać się do klasy, której faktycznie szukałem. Więcej informacji na ten temat można znaleźć na stronie podanej poniżej:
https://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx
źródło
Jeśli oba projekty są zawarte w tym samym rozwiązaniu, bardziej odpowiednie będzie dodanie odwołania do projektu, którego potrzebujesz, a nie skompilowanej biblioteki dll.
źródło
Niestety jedyną rzeczą, która działała dla mnie, było całkowite usunięcie i odtworzenie projektu biblioteki klas, po tymczasowym skopiowaniu plików klas w innym miejscu. Dopiero wtedy projekt sieciowy ASP.Net rozpoznałby
using
instrukcje, które odnosiły się do projektu biblioteki klas. To było z Visual Studio 2010, bez ReSharper.źródło
Miałem podobny problem. Pomogło mi to, że dodałem niewłaściwą bibliotekę klas ze studia wizualnego . Dodałem, korzystając z funkcji wyszukiwania w programie Visual Studio.
Musiałem dodać nowy projekt> Visual C #> Class Library . Ta nowo dodana biblioteka klas jest właściwa i można ją teraz dodać jako odniesienie do dowolnego projektu.
źródło
Możesz zapomnieć o dodaniu odwołania do biblioteki klas, której potrzebujesz do zaimportowania.
Kliknij prawym przyciskiem myszy bibliotekę klas, do której chcesz importować (która zawiera wiele zaimportowanych bibliotek klas), -> Dodaj-> Odniesienie (Wybierz Projekty-> Rozwiązanie-> wybierz bibliotekę klas, z której chcesz importować-> OK)
źródło