Устранение ошибок и предупреждений, связанных со ссылками на сборки

  • CS0012: тип "type" определен в сборке, на которую нет ссылки. Следует добавить ссылку на сборку "assembly".
  • CS0234: Тип или имя пространства имён не существует в данном пространстве имён (возможно, отсутствует ссылка на сборку?)
  • CS0246: не удалось найти имя типа или пространства имен (отсутствует директива using или ссылка на сборку?)
  • CS0400: не удалось найти имя типа или пространства имен в глобальном пространстве имен (отсутствует ссылка на сборку?)
  • CS1068: имя типа не удалось найти в глобальном пространстве имен. Этот тип перенаправлен в другую сборку. Попробуйте добавить ссылку на нее.
  • CS1069: имя типа не удалось найти в пространстве имен. Этот тип перенаправлен в другую сборку. Попробуйте добавить ссылку на нее.
  • CS1070: не удалось найти имя типа. Этот тип перенаправлен в другую сборку. Попробуйте добавить ссылку на нее.
  • CS1704: Сборка с тем же простым именем уже была импортирована. Попробуйте удалить одну из ссылок или подписать их для параллельного использования.
  • CS1714: базовый класс или интерфейс этого типа не может быть разрешен или недопустим.
  • CS1760: несколько сборок ссылаются на одни и те же метаданные, но только одна — связанная ссылка (указанная с помощью параметра /link); рекомендуется удалить одну из ссылок.
  • CS7008: имя сборки зарезервировано и не может использоваться в качестве ссылки в интерактивном сеансе.
  • CS7068: Ссылка на тип утверждает, что он определен в этой сборке, но он не определен ни в исходном коде, ни в добавленных модулях.
  • CS7069: Ссылка на тип утверждает, что он определен в другой сборке, но не может быть найден.
  • CS7071: ссылка на сборку является недопустимой и не может быть разрешена.
  • CS7079: тип определен в модуле, который не был добавлен. Необходимо добавить модуль.
  • CS8090: в указанной сборке возникает ошибка.
  • CS8203: недопустимое имя сборки.
  • CS8206: модуль "имя модуля" в сборке "имя сборки" пересылает тип "имя типа" в несколько сборок: "имя первой сборки" и "имя второй сборки".
  • CS8356: предопределенный тип "имя типа" объявлен в нескольких ссылочных сборках: "имя первой сборки" и "имя второй сборки".
  • CS9286: тип не содержит определения и не может быть найден доступный элемент расширения для типа приемника (возможно, отсутствует директива using или ссылка на сборку?)

Кроме того, в этой статье рассматриваются следующие предупреждения:

  • CS1683: Ссылка на тип "Имя типа" утверждает, что он определён в этой сборке, но он не определён в исходном коде или в каких-либо добавленных модулях.

Отсутствующие ссылки

Следующие ошибки и предупреждения указывают на отсутствие ссылки на сборку:

  • CS0012: тип "type" определен в сборке, на которую не ссылается ссылка. Необходимо добавить ссылку на сборку "assembly".
  • CS0234: имя типа или пространства имен не найдено в пространстве имен (возможно, отсутствует ссылка на сборку?)
  • CS0246: Имя типа или пространства имен не найдено (может отсутствовать директива using или ссылка на сборку?)
  • CS1714: базовый класс или интерфейс этого типа не может быть разрешен или недопустим.
  • CS9286: тип не содержит определения, и никакой доступный элемент расширения для типа приемника не найден (не хватает ли директивы using либо ссылки на сборку?)

Эти ошибки компилятора указывают на одну из следующих проблем в коде:

  • Проект не ссылается на требуемую сборку. Чтобы устранить эту ошибку, добавьте ссылку на требуемую сборку.
  • Вы неправильно написали имя типа. Проверьте название типа.
  • Вы использовали имя переменнойSystem.Type, где ожидалось имя System.Type, например, в операторе is или операторе .
  • Оператор глобальной области видимости (::) используется, если тип отсутствует в глобальном пространстве имен.
  • Вы обращаетесь к члену расширения, и пространство имен не указано в using директиве, или вы не ссылаетесь на сборку, содержащую расширение.

Когда появляется ссылка на сборку

Если сборка отображается в проекте, но вы по-прежнему получаете CS0012, попробуйте выполнить следующие действия по устранению неполадок:

  • Восстановление пакетов: выполните команду dotnet restore , чтобы убедиться, что все ссылки на пакеты правильно разрешены, особенно после установки или удаления пакетов NuGet.

  • Снимите кэш пакетов NuGet и восстановите:

    dotnet nuget locals all --clear
    dotnet restore
    
  • Проверка конфликтов версий. Убедитесь, что все ссылки на сборки используют совместимые версии. Найдите предупреждения перенаправления привязки в выходных данных сборки.

  • Очистите решение и перестройте, чтобы не осталось устаревших ссылок:

    dotnet clean
    dotnet build
    
  • Проверка целостности пакета: если произошла ошибка после операций пакета, убедитесь, что пакет был установлен правильно, удалив и переустановив его:

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

Переадресация типов

  • CS1068: имя типа не удалось найти в глобальном пространстве имен. Этот тип перенаправлен в другую сборку. Попробуйте добавить ссылку на нее.
  • CS1069: имя типа не удалось найти в пространстве имен. Этот тип перенаправлен в другую сборку. Попробуйте добавить ссылку на нее.
  • CS1070: не удалось найти имя типа. Этот тип перенаправлен в другую сборку. Попробуйте добавить ссылку на нее.
  • CS8206: модуль "имя модуля" в сборке "имя сборки" пересылает тип "имя типа" в несколько сборок: "имя первой сборки" и "имя второй сборки".

CS1068, CS1069 и CS1070 указывают на ошибку, ссылающуюся на тип, переадресованный в другую сборку. Добавьте ссылку на сборку, указанную в сообщении об ошибке.

CS8206 указывает конфликтующие метаданные перенаправления типов в указанной сборке или модуле. Один и тот же тип перенаправляется в более чем одну целевую сборку. Используйте исправленные или перестроенные зависимости, перенаправляющие тип в одно место назначения. Убедитесь, что версии пакетов и сборок согласованы, или удалите ссылку, которая представляет конфликтующие метаданные. Псевдонимы источника или не связанные изменения в объявлениях локальных типов не исправляют указанные метаданные.

Повторяющиеся ссылки

Следующие ошибки указывают на повторяющуюся ссылку на сборку:

  • CS1704: сборка с тем же простым именем уже импортирована. Попробуйте удалить одну из ссылок или подписать их, чтобы включить их параллельно.
  • CS1760: несколько сборок ссылаются на одни и те же метаданные, но только одна — связанная ссылка (указанная с помощью параметра /link); рекомендуется удалить одну из ссылок.
  • CS8356: предопределенный тип "имя типа" объявлен в нескольких ссылочных сборках: "имя первой сборки" и "имя второй сборки".

Чтобы устранить эти ошибки, удалите одну из ссылок или устраните дублирование. Ниже приводятся причины дублирования:

  • Несколько неподписанных сборок с одинаковым именем.
  • Проект ссылается на несколько версий одной сборки.

Для CS8356 удалите или замените дубликат или несовместимую ссылку, которая определяет тот же предопределенный тип среды выполнения. Убедитесь, что проект ориентирован на единую платформу и единый набор ссылочных сборок. Не добавляйте другое исходное определение предопределенного типа.

Недопустимая ссылка на сборку

Следующие ошибки указывают, что ссылка на сборку недопустима:

  • CS7008: имя сборки зарезервировано и не может использоваться в качестве ссылки в интерактивном сеансе.
  • CS7068: Ссылка на тип указывает, что он определен в этой сборке, но он не определен в исходном коде или в каких-либо добавленных модулях.
  • CS7069: Ссылка на тип утверждает, что он определён в другой сборке, но его не удалось найти.
  • CS7071: ссылка на сборку является недопустимой и не может быть разрешена.
  • CS7079: тип определен в модуле, который не был добавлен. Необходимо добавить модуль.
  • CS8090: в указанной сборке возникает ошибка.
  • CS8203: недопустимое имя сборки.

Следующее предупреждение также указывает на недопустимую сборку ссылок:

  • CS1683: Ссылка на тип "Имя типа" утверждает, что определён в этой сборке, но не найден ни в исходном коде, ни в каких-либо добавленных модулях.

Убедитесь, что имя сборки указано без ошибок. Файл сборки, на который ссылается ссылка, может быть недопустимым.