Usuwanie błędów i ostrzeżeń związanych z odwołaniami do zestawów

  • CS0012: typ "type" jest zdefiniowany w zestawie, do którego nie odwołuje się odwołanie. Należy dodać odwołanie do zestawu "assembly".
  • CS0234: Nazwa typu lub przestrzeni nazw nie istnieje w przestrzeni nazw (czy brakuje odwołania do zestawu?)
  • CS0246: Nie można odnaleźć nazwy typu lub przestrzeni nazw (czy może brakuje dyrektywy using lub odwołania do zestawu?)
  • CS0400: Nie można odnaleźć nazwy typu lub przestrzeni nazw w globalnej przestrzeni nazw (czy brakuje odwołania do zestawu?)
  • CS1068: Nie można odnaleźć nazwy typu w globalnej przestrzeni nazw. Ten typ został przekazany do innego zestawu. Rozważ dodanie odwołania do tego zestawu.
  • CS1069: Nie można odnaleźć nazwy typu w przestrzeni nazw. Ten typ został przekazany do innego zestawu. Rozważ dodanie odwołania do tego zestawu.
  • CS1070: Nie można odnaleźć nazwy typu. Ten typ został przekazany do innego zestawu. Rozważ dodanie odwołania do tego zestawu.
  • CS1704: Zestaw o tej samej prostej nazwie został już zaimportowany. Spróbuj usunąć jedno z odwołań lub podpisać je, aby włączyć funkcję side-by-side.
  • CS1714: Nie można rozpoznać klasy bazowej lub interfejsu tego typu lub jest on nieprawidłowy.
  • CS1760: Wiele zestawów odwołuje się do tych samych metadanych, ale tylko jeden jest połączonym odwołaniem (określonym przy użyciu opcji /link); rozważ usunięcie jednego z odwołań.
  • CS7008: Nazwa zestawu jest zarezerwowana i nie może być używana jako odwołanie w sesji interakcyjnej.
  • CS7068: Odwołanie do typu twierdzi, że jest zdefiniowane w tej asemblie, ale nie jest obecne w źródle ani żadnych dodatkowych modułach.
  • CS7069: Odwołanie do typu, który jest zdefiniowany w innym zestawie, ale nie można go odnaleźć.
  • CS7071: Odwołanie do zestawu jest nieprawidłowe i nie można go rozwiązać.
  • CS7079: Typ jest zdefiniowany w module, który nie został dodany. Należy dodać moduł.
  • CS8090: Jest błąd w zestawieniu, do którego odniesiono się.
  • CS8203: Nieprawidłowa nazwa zestawu.
  • CS8206: Moduł "nazwa modułu" w złożeniu "nazwa złożenia" przekazuje dalej typ "nazwa typu" do wielu złożeń: "nazwa pierwszego złożenia" i "nazwa drugiego złożenia".
  • CS8356: Predefiniowany typ „nazwa typu” jest zadeklarowany w wielu zestawach, do których istnieją odwołania: „pierwsza nazwa zestawu” i „druga nazwa zestawu”
  • CS9286: Typ nie zawiera definicji i nie można odnaleźć dostępnej metody rozszerzenia dla odbiorcy (czy nie brakuje dyrektywy using lub odwołania do zestawu?)

Ponadto w tym artykule omówiono następujące ostrzeżenia:

  • CS1683: Odwołanie do typu "Nazwa typu" twierdzi, że jest zdefiniowany w tej kompilacji, ale nie jest zdefiniowany w źródle ani w żadnych dodanych modułach.

Brakujące odwołania

Następujące błędy i ostrzeżenia wskazują, że brakuje odwołania do zestawu:

  • CS0012: Typ "type" jest zdefiniowany w zestawie, do którego nie ma odniesienia. Należy dodać odwołanie do zestawu "assembly".
  • CS0234: Nazwa typu lub przestrzeni nazw nie istnieje w przestrzeni nazw (czy brakuje odwołania do zestawu?)
  • CS0246: Nie można odnaleźć nazwy typu lub przestrzeni nazw (czy brakuje dyrektywy using lub odwołania do zestawu?)
  • CS1714: Nie można rozpoznać klasy bazowej lub interfejsu tego typu lub jest on nieprawidłowy.
  • CS9286: Typ nie zawiera definicji i nie można odnaleźć dostępnego elementu członkowskiego rozszerzenia dla typu odbiorcy (czy brakuje dyrektywy using lub odwołania do zestawu?)

Te błędy kompilatora wskazują jeden z następujących problemów w kodzie:

  • Projekt nie odwołuje się do wymaganego zestawu. Aby naprawić ten błąd, dodaj odwołanie do wymaganego zestawu.
  • Błędnie zapisano nazwę typu. Sprawdź nazwę typu.
  • Użyto nazwy zmiennej tam, gdzie oczekiwano nazwy System.Type w takich przypadkach jak operator typeof lub operator is.
  • Użyliśmy operatora zakresu globalnego (::), gdy typ nie znajduje się w globalnej przestrzeni nazw.
  • Uzyskujesz dostęp do elementu członkowskiego rozszerzenia, a przestrzeń nazw nie jest określona w using dyrektywie lub nie odwołujesz się do zestawu zawierającego rozszerzenie.

Gdy zestaw wydaje się być przywołyny

Jeśli w projekcie pojawi się odwołanie do zestawu, ale nadal otrzymujesz plik CS0012, spróbuj wykonać następujące kroki rozwiązywania problemów:

  • Przywracanie pakietów: uruchom polecenie dotnet restore , aby upewnić się, że wszystkie odwołania do pakietów zostały prawidłowo rozwiązane, szczególnie po zainstalowaniu lub odinstalowaniu pakietów NuGet.

  • Wyczyść pamięć podręczną pakietu NuGet i przywróć:

    dotnet nuget locals all --clear
    dotnet restore
    
  • Sprawdź konflikty wersji: sprawdź, czy wszystkie zestawy, do których odwołuje się odwołanie, używają zgodnych wersji. Poszukaj ostrzeżeń dotyczących przekierowania powiązań w danych wyjściowych kompilacji.

  • Wyczyść rozwiązanie i przebuduj je, aby upewnić się, że nie pozostały żadne nieaktualne odwołania:

    dotnet clean
    dotnet build
    
  • Sprawdź integralność pakietu: jeśli wystąpił błąd po operacjach pakietu, upewnij się, że pakiet został poprawnie zainstalowany, usuwając go i ponownie zainstaluj:

    dotnet remove package [PackageName]
    dotnet add package [PackageName]
    

Przekazywanie typów

  • CS1068: Nie można odnaleźć nazwy typu w globalnej przestrzeni nazw. Ten typ został przekazany do innego zestawu. Rozważ dodanie odwołania do tego zestawu.
  • CS1069: Nie można odnaleźć nazwy typu w przestrzeni nazw. Ten typ został przekazany do innego zestawu. Rozważ dodanie odwołania do tego zestawu.
  • CS1070: Nie można odnaleźć nazwy typu. Ten typ został przekazany do innego zestawu. Rozważ dodanie odwołania do tego zestawu.
  • CS8206: Moduł „nazwa modułu” w asembalcji „nazwa asembalcji” przekazuje dalej typ „nazwa typu” do wielu asembalcji: „nazwa pierwszej asembalcji” i „nazwa drugiej asembalcji”.

CS1068, CS1069 i CS1070 oznaczają błąd związany z odwołaniem do typu przekazanego dalej do innego zestawu. Dodaj odwołanie do zestawu wskazanego w komunikacie o błędzie.

CS8206 wskazuje na konfliktowe metadane przekazywania typów w przywoływanym zestawie lub module. Ten sam typ jest przekazywany do więcej niż jednego zestawu docelowego. Użyj poprawionych lub przebudowanych zależności, które przekazują typ do jednego miejsca docelowego. Upewnij się, że wersje pakietu i zestawu są spójne lub usuń odwołanie, które wprowadza metadane powodujące konflikt. Aliasy źródła lub niepowiązane zmiany w lokalnych deklaracjach typów nie korygują metadanych, do których się odwołano.

Zduplikowane odwołania

Następujące błędy wskazują zduplikowane odwołanie do zestawu:

  • CS1704: Zestaw o tej samej prostej nazwie został już zaimportowany. Spróbuj usunąć jedno z odwołań lub podpisać je, aby włączyć równoczesne działanie.
  • CS1760: Wiele zestawów odwołuje się do tych samych metadanych, ale tylko jeden jest połączonym odwołaniem (określonym przy użyciu opcji /link); rozważ usunięcie jednego z odwołań.
  • CS8356: Wstępnie zdefiniowany typ „nazwa typu” został zadeklarowany w wielu zestawach, do których istnieją odwołania: „nazwa pierwszego zestawu” i „nazwa drugiego zestawu”

Aby naprawić te błędy, usuń jedno z odwołań lub usuń duplikaty. Przyczyny duplikacji obejmują:

  • Wiele niepodpisanych zespołów o tej samej nazwie.
  • Projekt odwołuje się do wielu wersji tego samego zestawu.

W przypadku cs8356 usuń lub zastąp zduplikowane lub niezgodne odwołanie, które definiuje ten sam wstępnie zdefiniowany typ środowiska uruchomieniowego. Upewnij się, że projekt jest przeznaczony dla jednej spójnej struktury i zestawu zestawów referencyjnych. Nie dodawaj innej definicji źródłowej wstępnie zdefiniowanego typu.

Nieprawidłowe odwołanie do zestawu

Następujące błędy wskazują, że odwołanie do zestawu jest nieprawidłowe:

  • CS7008: Nazwa zestawu jest zarezerwowana i nie może być używana jako odwołanie w sesji interakcyjnej.
  • CS7068: Odwołanie do typu wskazuje, że jest on zdefiniowany w tym zestawie, ale nie jest zdefiniowany w źródle ani w żadnym z dodanych modułów.
  • CS7069: Odwołanie do typu twierdzi, że jest zdefiniowane w innej bibliotece, ale nie można go odnaleźć.
  • CS7071: Odwołanie do zestawu jest nieprawidłowe i nie można go rozwiązać.
  • CS7079: Typ jest zdefiniowany w module, który nie został dodany. Należy dodać moduł.
  • CS8090: Wystąpił błąd w zestawie, do którego wystąpiło odwołanie.
  • CS8203: Nieprawidłowa nazwa zestawu.

Następujące ostrzeżenie wskazuje na nieprawidłowe zestawy referencyjne:

  • CS1683: Referencja do typu "Nazwa typu" twierdzi, że jest zdefiniowana w tej bibliotece, ale nie jest zdefiniowana w źródle ani w żadnych dodanych modułach

Sprawdź, czy nazwa zestawu została wpisana poprawnie. Przywoływalny plik zestawu może być nieprawidłowy.