VS2010 Ошибка сборки между проектами - PullRequest
10 голосов
/ 26 января 2011

Контекст:

У меня есть 3 проекта в моих решениях (C #, .NET 4.0):

  • Abc.Business (проект Dll)
  • Abc.Test (Тестовый проект)
  • Abc.Ui (Wpf project)

  • Abc.Business - это моя бизнес-логика.Он содержит сущности, менеджеров, службы и т. Д.

  • Abc.Test , имеет ссылку на проект Abc.Business и является модульным тестом.Они хорошо работают.
  • Abc.Ui есть ссылка на проект Abc.Business

Abc.Ui не может разрешить всеиз using Abc.Business; Журнал ошибок показывает:

Ошибка Тип или имя пространства имен «Бизнес» не существует в пространстве имен «Abc» (у вас отсутствует ссылка на сборку?) c: \ Abc\ Abc.Ui \ ViewModels \ ClientViewModel.cs

Кроме того, когда я вручную набираю using в верхней части моего файла, Intelli-sense показывает мне " Abc.Business.и т.д .. ».Так что Intelli-Sense ходят по ссылке, но не строят.

Есть идеи?

Ответы [ 4 ]

15 голосов
/ 26 января 2011

Большое спасибо Grhm и Хенку Холтерману , которые указывают мне на архитектурное решение. На самом деле, это была не проблема, но она заставляет меня найти это. Проблема заключалась в целевой структуре. Проект Ui по умолчанию был нацелен на .NET 4.0 Framework с профилем «Клиент». Этот профиль не может ссылаться на профиль не клиента. Я нахожу это в недостаточно используемом окне вывода отладки. (Вместо этого я привык искать в списке ошибок)

Вот что показала ошибка:

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, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a ", которая не входит в целевую платформу на данный момент. 0, Профиль = Клиент ». Удалите ссылки на сборки, не входящие в целевую среду, или рассмотрите возможность перенастройки вашего проекта.

Я изменяю профиль на обычный (ничего), и БУМ все работает. Вот страница MSDN об этом

Еще раз спасибо за ваше время, ребята.

4 голосов
/ 26 января 2011

У меня были такие проблемы, когда у нас были несоответствия в менеджере конфигурации. (Доступ через меню Build).

У нас было несколько проектов, строящих вариант x86, некоторые из них строили вариант x64, и в диспетчере конфигурации были «Платформы решений» для «Любой ЦП» и «Смешанные процессоры».

Я полагаю, что наш "Business" был построен как библиотека x86, а наш "UI" - как x64 (или наоборот), что означало, что он не смог найти сборку (для правильной архитектуры) и выдал ошибку Вы видите, но интеллект все еще работал, как он смотрел на источник.

Я бы посоветовал взглянуть на платформы вашего проекта и платформы решений и привести в порядок любые странности.

3 голосов
/ 26 января 2011

Я бы ожидал проблем, если между ними есть несовместимость.

Несколько советов / идей:

  • удалить ссылку и добавить ее снова, как ссылку на проект
  • Перестроить решение и проверить сообщения об ошибках
  • проверка платформы (версия).Возможно, пользовательский интерфейс является клиент-платформенным, а уровень Biz использует полную платформу.
0 голосов
/ 26 января 2011

Вы добавили ссылку на проект Abc.Business в проект Abc.Ui?Вы можете сделать это, щелкнув правой кнопкой мыши на References в Abc.Ui, выбрав Add Reference и перейдя на вкладку Projects.и выбрав Abc.Business.

...