Moje rozwiązanie C # WinForms ma dwa projekty. Biblioteka DLL, która jest głównym projektem, nad którym pracuję, oraz wykonywalny plik WinForms, który nazywam „Sandbox”, dzięki czemu mogę łatwo skompilować / uruchomić / debugować bibliotekę DLL za jednym razem.
Pracuję w .Net 4.0 dla obu projektów.
Wszystko działało dobrze, dopóki nie dodałem pozornie niewinnego kodu i odniesienia do System.Web w bibliotece DLL. Teraz mój projekt Sandbox nie widzi przestrzeni nazw projektu DLL. Nie zmieniłem niczego, co moim zdaniem powinno wpłynąć na to.
Jeśli usunę odniesienie projektu do biblioteki DLL z odniesień piaskownicy i ponownie je dodam, wówczas czerwone podkreślenia znikną, a kodowanie kolorami powróci dla wszystkich moich klas itp .; ale jak tylko spróbuję zbudować rozwiązanie, wszystko znowu się rozpada.
Kiedy klikam prawym przyciskiem myszy projekt DLL w odniesieniach piaskownicy i przeglądam w przeglądarce obiektów, widzę przestrzeń nazw i wszystko, co się tam znajduje.
Mam przeczucie, że to może być jakiś błąd?
Czy to jakiś błąd w VS2010? Miałem ten sam problem kilka miesięcy temu i mogłem go wtedy naprawić tylko poprzez stworzenie zupełnie nowego projektu i ponowne zaimportowanie moich plików. Tym razem jednak mam bajlion plików i zrobię to tylko w ostateczności!
Edycja: po panicznym przejściu i cofnięciu wszystkich moich zmian, próbując znaleźć przyczynę problemów, wygląda na to, że jest to ta linia:
string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);
Jeśli wykomentuję tę linię, nie otrzymam żadnych błędów przestrzeni nazw, a projekt zostanie poprawnie zbudowany. Nie widzę jednak nic złego w tej linii.
źródło
Sprawdź, czy oba projekty używają profilu innego niż klient dla ich platformy docelowej (przejdź do właściwości każdego projektu, aby to zrobić).
źródło
Jedną z możliwości jest to, że docelowa wersja biblioteki klas .NET Framework jest wyższa niż wersja projektu. 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. W niektórych innych postach przeczytałem odpowiedzi i większość użytkowników rozwiązała problem postępując w ten sposób.
źródło
Spróbuj najpierw niezależnie zbudować tylko projekt z biblioteką DLL Sandbox.
Następnie wskaż projekt wykonywalny na wymaganą bibliotekę dll i upewnij się, że
copy local
jest ustawiony natrue
. w ustawieniach referencyjnych.Następnie skompiluj projekt wykonywalny.
źródło
Zmiana docelowego frameworka z „.NET Framweork 4 Client Profile” na „.NET Framework 4” działała u mnie z podobnym problemem. Zgadzam się, że profil klienta nie wydaje się mieć wiele zalet w korzystaniu z niego. Wydaje mi się, że pojawiają się dziwne błędy, na które poluję, dopóki nie pamiętam, że Visual Studio domyślnie korzysta z profilu klienta. Wydaje mi się, że morał tej historii, gdy pojawia się błąd, jest taki: jeśli „Odbuduj rozwiązanie” nie działa, sprawdź framework Target ...
źródło
Jeśli próbowałeś już dokonać zmiany frameworka i nadal nie działa, mam nadzieję, że to zadziała dla Ciebie (tak jak w przypadku mnie): Po prostu dodaj niezbędne odniesienia z Twoich projektów. Bardzo oczywiste, ale robiłem to źle, dopóki nie znalazłem przyczyny.
źródło
Właśnie miałem ten problem i okazało się, że używam wielu przestrzeni nazw o tej samej nazwie obiektu (tj. Obiekty biznesowe mają takie same nazwy jak modele mvc);
Pełne zakwalifikowanie nazw rozwiązało problem.
źródło