Подтвердить что ты не робот

Случайные ссылки сборок сбоя ( "Вы не указали директиву использования или ссылку на сборку?" )

В моем приложении имеется смесь из 3.5 и 4.0-ориентированных сборок. Я работаю над новым таргетингом на службы Windows 4.0, и проект внезапно кажется неспособным увидеть некоторые из других сборок в решении. Значение, при построении, все ссылки на эти некоторые другие сборки производят следующую ошибку:

Тип или имя пространства имен "[X]" не существует в пространстве имен "[Y]" (вам не хватает ссылки на сборку?)

Если я удалю ссылку на проект и снова его добавлю, красные squigglies уйдут, а Intellisense начнет снова, как предполагалось. Все остальные проекты в решении построены без проблем. Но как только я пытаюсь построить этот новый проект, ошибки возвращаются.

Одна из неудачных ссылок - на наш Core.dll, который нацелен на 3.5. Недавно мы добавили таргетинг CoreEx.dll 4.0, с совместным использованием пространства имен между сборками. Новая служба может видеть CoreEx.dll, но не Core.dll... т.е. Когда я начинаю вводить текст using Core.Utilities... Intellisense выбирает меньший набор пространств имен из CoreEx.dll, но не показывает ничего, что появляется только в Core.dll, Я уверен, что решение было успешно построено после добавления этого, но это заметное недавнее изменение.

Другая неудачная ссылка - на наш основной Data.dll, который содержит кучу наборов данных и материал Entity Framework. Этот недавно был перенесен на 4.0. Опять же, я почти уверен, что решение было создано после миграции проекта, но стоит упомянуть.

Последняя неудачная ссылка - это сборка, которая использует пространство имен на уровне "вверх" от службы. Например, проблемный проект основан на пространстве имен ProductName.Component.ComponentService, и он не может видеть проект, основанный на пространстве имен ProductName.Component. Этот недавно был создан вместе с проблемным проектом, а также цели 4.0.

Как вы можете видеть, нет никаких рифм или причин, по которым сбои ссылок не выполняются... и проблемный проект может успешно ссылаться на некоторые из других сборок в решении. Я пробовал очистить, перестроить, перезапустить Visual Studio... ничто не фиксировало его навсегда. Что может быть причиной этого?

4b9b3361

Ответ 1

Проверьте целевую платформу нового проекта и убедитесь, что он не нацелен на профиль .NET 4 Client. Если это так, измените его на обычный .NET 4

Ответ 2

Я добавлял проекты к решению, которое использовало .net 4.5. Добавленные мной проекты не соответствовали 4.5.1. Это предоставило 4.5 библиотеки, несовместимые с новыми проектами. Я вошел в свойства моих новых проектов и поставил перед ними цель 4.5 вместо стандартного 4.5.1. После того, как я это сделал, мое решение смогло построить.

Ответ 3

Правильно ли заданы зависимости в решении? Я видел более одного раза, когда Project A зависит от проекта B, но поскольку зависимость между двумя не была установлена, сборка выходит из строя спорадически.

Основная причина в этом случае заключается в том, что сборка не является детерминированной, а успех/отказ зависит от таких вещей, как создание проектов (на основе того, что изменилось) и которое строит в первую очередь (когда более чем одна сборка).

Ответ 4

Это сработало для меня, когда я изменил целевую структуру на 4.0.. Но это было не то решение, которое мы хотели. Мы хотели использовать VS 2010 Premium для нашего проекта, но намерение было НЕ использовать .net 4.0... Проект основной библиотеки классов (.net 2.0) ссылался на dll "system.web.abstractions.dll"... Я добавил ссылку на эту DLL в других проектах (.net 2.0), которая ссылается на основную библиотеку классов... решение скомпилировано без каких-либо проблем... так что это может быть в случае с вашим решением для визуальной студии...

Но все работает отлично, если мы используем VS 2008 professional.. нам не нужно обходное решение, и все работает как магия...

Ответ 5

Также обратите внимание, что это может произойти, если вы изменили пространство имен, но вы не изменили имя Ассамблеи в свойствах проекта.

Ответ 6

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

Ответ 7

У меня была аналогичная проблема, ссылка на сборку вышла из строя ( "Вы не указали директиву использования или ссылку на сборку?" ), и VS intellisense дал мне возможность добавить использование, но в решении ссылка имела желтый значок и сборка потерпела неудачу.

Я решил это посмотреть на свойство проекта Target Framework и изменить версию .net на версию эталонного решения, и это решило все проблемы.

Примечание. Версии .net должны быть совместимы между проектами.