Почему я должен объединять ссылочные сборки в цепочку?

StackOverflow https://stackoverflow.com/questions/738349

Вопрос

Мой проект ссылается на сборку (назовем ее X), которая ссылается на другую сборку (назовем ее Y).

Когда я пытаюсь скомпилировать свой проект, он требует, чтобы он ссылался на сборку Y.Почему это?Я получаю следующую ошибку в строке, где упоминается assembly X:

Тип 'DevExpress.XtraEditors.XtraForm' определен в сборке на которую нет ссылки.Вы должны добавить ссылку на сборку 'DevExpress.Utils.v9.1, версия =9.1.2.0, язык = нейтральный, PublicKeyToken=b88d1754d700e49a'.

DevExpress.XtraEditors.XtraForm является ли сборка Y.

Почему это происходит?Я раньше не видел такого поведения.

Это было полезно?

Решение

Это всегда было на месте.Вы получите их только во время компиляции, если используете объект, который получает методы / свойства / члены и т.д. Из сборки Y.

Причина в том, что .NET не может полагаться на сборку X, чтобы гарантировать, что она сможет получить надлежащую информацию о символах и метаданных.

Другие советы

Это всегда было поведением, поскольку как еще компилятор будет создавать ваш проект, если в нем нет ссылки на все зависимости?

Сборки, на которые ссылается ваш проект, необходимы для работы вашего приложения.Вы используете типы из этих сборок, и без этих типов ваше приложение не сможет быть создано.Что еще более важно, без этих типов ваше приложение не сможет запуститься.

Теперь учтите, что каждая сборка, на которую вы ссылаетесь, была собрана тем же способом, что и ваша сборка, и требует, чтобы все его сборки, на которые даны ссылки, должны присутствовать и учитываться.Это действительно создает цепную реакцию, которая может раздражать, но конечным результатом является то, что как только вы выполняете свое приложение, среда CLR имеет все сборки, необходимые для запуска вашего приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top