Тип С#, определенный в сборке, на которую не ссылаются
У меня есть два проекта A и B. Проект A использует тип X в проекте B, поэтому у меня есть ссылка на B, добавленную в A. Все построено отлично.
Я подписал проект B с использованием сильного именованного ключевого файла. Все еще построено отлично.
Затем я решил изменить сильный файл ключевых ключей для B. Я перестроил проект B ok. Когда я пытаюсь построить AI проекта, вы получите ошибку "Ошибка 1 Тип X определен в сборке, на которую не ссылаются. Вы должны добавить ссылку на сборку B, Версия = 1.0.0.0, Культура = нейтраль, PublicKeyToken = 95b41b0d6571627b '."
Итак, я удалил ссылку в проекте A и снова добавил ее, без радости. Я могу dbl щелкнуть по ссылке проекта B в проекте A, открыть браузер объектов и увидеть тип X там в порядке. Я также полностью квалифицировал объекты типа X в A, и intellisense отлично их подбирал, но он по-прежнему не строится.
Я подумал, что изменить ключевой файл, который мне может понадобиться, чтобы обновить версию, поэтому я изменил версию сборки B на 2.0.0.0, но все же A жалуется, что ей нужна версия 1.0.0.0. Глядя на свойства ссылки B в A, она определенно указывает на правильную версию и действительно показывает ее как 2.0.0.0
Я мог бы жить с использованием существующего ключевого файла, но я хотел бы понять, где я ошибаюсь, если это возможно.
Ответы
Ответ 1
Основываясь на том, что вы сказали в комментариях, я бы сказал, что это определенно с проектом A.
Возможно, эти шаги помогут исправить это:
- Удалить ссылку на проект B и сохранить
- Crack откройте файл .csproj с помощью блокнота или чего-нибудь.
- Найдите ссылки на Project B (возможно, hintpath node) и удалите node.
- Если Project A является проектом ASP.NET, посмотрите в своем web.config или заголовках страниц aspx для любых ссылок на Project B.
Как только вы удалите все ссылки на проект, перезагрузите проект как предложенный узким местом и посмотрите, исправляет ли он его для вас.
Ответ 2
Извините за поздний ответ, но это помогло мне:
(Предположим, что на данный момент у вас есть платформа решений AnyCPU)
- установите платформу решений на x86.
- компиляции
- вернуться назад
- снова скомпилировать.
Ответ 3
Вы можете попробовать отредактировать проект. Файл проекта (projectA.csproj). Чтобы сделать это через визуальную студию, щелкните правой кнопкой мыши проект project- > unload, а затем на выгруженном проекте щелкните правой кнопкой мыши- > редактировать файл. Найдите ссылку на проект B там и попытайтесь исправить при необходимости
Ответ 4
если x наследует A, вы должны указать его в B
Ответ 5
Что сработало для меня, так это удалить ссылку на проект, а затем снова добавить его. Появилось новое сообщение об ошибке, в котором указано, что мне нужна ссылка на третью библиотеку, которая отсутствовала, поэтому исходное сообщение было немного ошибочным!
Ответ 6
Чтобы помочь людям, приезжающим сюда из Google, комментарий Merlyn, спрашивающий о задержке, был ответом для меня.
Я получал эту ошибку, ссылаясь на подписанную с задержкой сборку A, которая ссылалась на тип X, определенный в сборке B. Я получил ошибку, на которую B не ссылался (и я уже ссылался на подписанную версию B).
Исправление заключалось в том, чтобы найти и ссылаться на подписанную версию A.