Почему я должен соединять ссылочные сборки? - PullRequest
3 голосов
/ 10 апреля 2009

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

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

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

DevExpress.XtraEditors.XtraForm - это сборка Y.

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

Ответы [ 2 ]

6 голосов
/ 10 апреля 2009

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

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

2 голосов
/ 10 апреля 2009

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

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

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

...