2014-07-15 12 views
9

Otrzymuję to ostrzeżenie podczas budowania projektu testowego, który nazwiemy PWTests."Ostrzeżenie CS1684: Odniesienie do typów X twierdzi, że jest zdefiniowane w ... ale nie można go znaleźć"

CS1684 Ostrzeżenie: odniesienie do typu roszczeń 'System.Windows.Input.ICommand' jest zdefiniowane w „C: \ Program Files (x86) \ referencyjny zwoje \ Microsoft \ Framework.NETFramework \ v4.0 \ System .dll ', ale nie można go znaleźć

Ten projekt ma na celu sprawdzenie biblioteki klas, którą nazwiemy PW. Nie mogę określić, dlaczego systemWorks.Input jest zdefiniowany w System.dll. PresentationCore, gdzie właściwie zdefiniowane jest polecenie ICOMand, jest prawidłowo przywoływane w projekcie testowym i projekcie biblioteki klas. Próbowałem usunąć odwołanie do PresentationCore, czyszczenie i ponowne dodanie go (jak wspomniano w innych pytaniach), które nie działało.

Jak mogę ustalić, co powoduje, że ICommand jest w System.dll?

+3

Możliwe miksowanie 4,0/4,5. W .NET 4.5, ICommand jest defintowane w System.dll. W .NET 4.0 jest w PresentationCore.dll. – Foole

Odpowiedz

2

Naprawdę potrzebujemy więcej informacji, ale oto jak to rozwiązałem.

Zwykle jest, gdy dodałeś coś przez nuget lub coś podobnego, jeśli spojrzysz w app.config zobaczysz tam przekierowania (prawdopodobnie) sprawdź zestaw, w którym znajduje się ICommand (zazwyczaj w twoim folderze bin lub bezpośrednio do niego odniesienie) i upewnij się, że wersje są tam ustawione.

Pomoże Ci, jeśli umieścisz plik app.config i określi używane zestawy, więc mogę być dokładniejszy.

0

Następująca notatka może nie być problemem, ale mam ten błąd, gdy odwoływałem się do biblioteki DLL, która została utworzona za pomocą VB.NET. W VB.NET nie jest rozróżniana wielkość liter, dlatego możliwe, że w ustawieniach projektu przestrzeń nazw jest pisana małymi literami, podczas gdy w kodzie źródłowym jest pisana wielkimi literami. Kompilator wpada w pomieszanie. W takim przypadku po prostu sprawdź problemy z małymi/dużymi literami i napraw je.

Powiązane problemy