VS2010 Ссылка на сборку между проектами не удалась
Context:
У меня есть 3 проекта в моих решениях (С#,.NET 4.0):
Abc.Ui не может разрешить все using Abc.Business;
Журнал ошибок показывает:
Ошибка Тип или имя пространства имен "Бизнес" не существует в пространстве имен "Abc" (вам не хватает ссылки на сборку?) c:\Abc\Abc.Ui\ViewModels\ClientViewModel.cs
Кроме того, когда я вручную набираю using
в верхней части моего файла, Intelli-sense покажет мне "Abc.Business.etc..". Таким образом, Intelli-sense walk в ссылке, но не строит.
Любые идеи?
Ответы
Ответ 1
Большое спасибо Grhm и Хенк Холтерман, которые указывают мне на решение архитектуры. На самом деле это не проблема, но это заставляет меня найти ее. Проблема была в Рамочной цели. Проект Ui по умолчанию был нацелен на платформу .NET 4.0 с профилем "Клиент". Этот профиль не может ссылаться на неклиентский профиль. Я нахожу это в недостаточно используемом окне вывода отладки. (Вместо этого я привык искать в списке ошибок)
Вот что показала ошибка:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): предупреждение MSB3253: ссылка на сборку "C:\Abc\Abc.Business\bin\Debug\Abc.Business.dll" не может быть разрешен, поскольку он имеет зависимость от "System.Web, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a", который не находится в целевой среде ".NETFramework, Version = v4". 0, Профиль = Client". Удалите ссылки на сборки не в целевой структуре или не рассмотрите вопрос о перенацеливании своего проекта.
Я меняю профиль на нормальный (ничего), и BOOM все работает. Здесь страница MSDN об этом
Еще раз спасибо за ваше время.
Ответ 2
У меня были такие проблемы, когда у нас были несоответствия в диспетчере конфигурации. (Доступ через меню "Сборка" ).
У нас были проекты по созданию варианта x86, некоторые из которых построили вариант x64, а менеджер конфигурации имел "платформы решений" для "Любой процессор" и "Смешанные процессоры".
Я считаю, что наш "Бизнес" был построен как библиотека x86 и наш "пользовательский интерфейс" в виде x64 (или наоборот), что означало, что он не смог найти сборку (для правильной архитектуры) и дал вам ошибку "Видя, но интеллигент все еще работал, глядя на источник.
Я бы предложил посмотреть ваши платформы проектов и платформы решений и убрать любые странности.
Ответ 3
Я бы ожидал проблем, если между ними существует несовместимость.
Несколько советов/идей:
- удалите ссылку и добавьте ее снова, как ссылку на проект
- Восстановить решение и проверить сообщения об ошибках
- check Платформа (версия). Возможно, пользовательский интерфейс является клиентской платформой, а уровень Biz использует всю платформу.
Ответ 4
Вы добавили ссылку на проект Abc.Business в проект Abc.Ui? Вы можете сделать это, щелкнув правой кнопкой мыши ссылку "Ссылки" в Abc.Ui, выбрав "Добавить ссылку" и перейдите на вкладку "Проекты". и выбрав Abc.Business.