Тип C #, определенный в сборке, на которую нет ссылок - PullRequest
13 голосов
/ 08 августа 2010

У меня есть два проекта A и B. В проекте A используется тип X в проекте B, поэтому у меня есть ссылка на B, добавленная в A. Все построено нормально.

Я подписал проект B, используя сильнуюфайл именованного ключа.Все по-прежнему было нормально.

Затем я решил изменить файл ключа со строгим именем для B. Я перестроил проект B, все в порядке.Когда я пытаюсь построить AI проекта, появляется сообщение об ошибке «Ошибка 1 Тип X определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку B, Версия = 1.0.0.0, Культура = Нейтральный, PublicKeyToken = 95b41b0d6571627b»."

Поэтому я удалил ссылку в проекте A и добавил ее снова, без радости.Я могу dbl щелкнуть ссылку проекта B в проекте A, открыть браузер объектов и увидеть там тип X, хорошо.Я также полностью определил объекты типа X в A, и intellisense отлично их подобрал, но он все равно не строится.

Я подумал, что для изменения файла ключа мне может потребоваться обновить версию, поэтому я изменил версию сборки B на 2.0.0.0, но все же жалуется, что ему нужна версия 1.0.0.0.Глядя на свойства ссылки B в A, она определенно указывает на правильную версию, и на самом деле она показывает как 2.0.0.0

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

Ответы [ 6 ]

4 голосов
/ 08 августа 2010

Исходя из того, что вы сказали в комментариях, я бы сказал, что это определенно что-то связано с проектом А.

Возможно, эти шаги помогут это исправить:

  1. Удалить ссылку на проект B и сохранить
  2. Взломайте файл .csproj с помощью блокнота или чего-то еще
  3. Найдите все ссылки на проект B (возможно, узел hintpath) и удалите узел.
  4. Если проект A оказался проектом ASP.NET, посмотрите в файле web.config или в заголовках страниц aspx любые ссылки на проект B.

Как только вы удалите все ссылки на проект, перезагрузите проект в соответствии с предложенным узким местом и посмотрите, исправит ли это его для вас.

1 голос
/ 22 ноября 2012

Извините за поздний ответ, но это помогло мне:

(Предполагая, что у вас сейчас есть платформа решений AnyCPU)

  • переключить платформу решений на x86.
  • скомпилировать
  • переключиться назад
  • скомпилировать снова.
0 голосов
/ 15 октября 2014

Чтобы помочь людям попасть сюда из Google, Комментарий Мерлина о задержке подписи был ответом для меня.

Я получаю эту ошибку, ссылаясь на сборку с подписью с задержкой A, которая ссылается на тип X, определенный в сборке B. Я получил ошибку, что на B не ссылались (и я уже ссылался на подписанную версию B).

Исправлено было найти и ссылаться на подписанную версию A.

0 голосов
/ 15 октября 2013

Для меня сработало удаление ссылки на проект, а затем добавление его снова.Появилось новое сообщение об ошибке, в котором говорилось, что мне нужна ссылка на отсутствующую третью библиотеку, поэтому исходное сообщение немного вводило в заблуждение!

0 голосов
/ 17 июля 2013

если x наследует A, вы должны указать его в B

0 голосов
/ 08 августа 2010

Вы можете попробовать отредактировать файл проекта проекта A (projectA.csproj).Чтобы сделать это через visual studio, щелкните правой кнопкой мыши проект-> выгрузить проект, а затем щелкните правой кнопкой мыши на выгруженном проекте -> изменить файл.Найдите там ссылку на проект B и попробуйте исправить при необходимости

...