Microsoft (TFS)Сервер сборки -Имя типа или пространства имен '…' не существует в пространстве имен '…' (Вам не хватает ссылки на сборку?)

Я работаю над настройкой билдсервера для нашей команды.

История вопроса
Мы используем Microsoft Visual Studio 2010 Ultimate. Наш продукт содержит код C#(,в основном), внешние библиотеки DLL и код C. Мы работаем с.Net 4.0 и имеем более 70 проектов.

Мы работаем с 3 ветвями нашего кода:

  • Производственная ветвь(то, что сейчас выпущено)
  • Тестовая ветвь(горячие исправления, исправления ошибок, тестирование конечных пользователей)
  • Ветвь разработки(добавление new fetures)

Все ветки находятся под контролем источника TF.

Цель
Мы хотим, чтобы сервер сборки собирал и запускал все модульные тесты для всех ветвей один раз в день, сервер сборки должен использовать код в системе управления версиями. Наша цель — обеспечить быстрое обнаружение стандартных ошибок. Мы предпочли бы как можно меньше поддержки сервера сборки.

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

Что настроено
В настоящее время настроено два определения сборки, одно для тестовой ветки и одно для ветки разработки, оба определения сборки берут код из системы управления версиями(эта часть работает все хорошо ), но вот тут и начинается самое интересное.

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

Ветвь разработки не может выполнить сборку из-за (или около 5 из)ошибок:

The type or namespace name 'XXX' does not exist in the namespace 'YYY' (are you missing an assembly reference?)

Ошибка относится к проекту X, ссылающемуся на проект Y.Оба проекта X и Y являются проектами C#.Net 4.0, и мы полностью контролируем их оба, и X, и Y компилируются в DLL. Проект Y содержит интерфейс, который реализуют классы в проекте X.

Досадная деталь заключается в том, что нет никакой разницы в тестовом отделении и отделении разработки ни для проекта X, ни для проекта Y. Эти два проекта были полностью идентичны последние 3 месяца.

Итак, вопрос, почему это работает в тестовой ветке, но не в ветке разработки?

Я проверил:
-Проекты правильно ссылаются друг на друга. -У всех 3 филиалов нет проблем с сборкой на моей собственной машине или на любой из машин разработки моих коллег-работников(мы протестировали на 5 разных машинах). -Я пытался удалить весь проект X и создать его заново, но это не сработало. -Я пытался удалить весь проект Y и создать его заново, но это не сработало. -Я пытался изменить пространство имен для проекта X и его классов, но это не сработало. -Я пытался изменить пространство имен для проекта Y и его классов, но это не сработало.-(Я даже перезапустил свой компьютер для разработки.) -Все изменения всегда проверялись в системе управления исходным кодом, где после того, как сервер сборки был настроен на сборку.

Дополнительная информация
Я копался в файлах журналов и нашел некоторые интересные детали, это для деталей сборки проекта X в ветке разработки

Task "AssignProjectConfiguration"
  Project reference "..\..\A" has been assigned the "Debug|x86" configuration.
  Project reference "..\..\Y" has been assigned the "Debug|x86" configuration. (can see there is a project Y)
  Project reference "..\..\B" has been assigned the "Debug|x86" configuration.  

Но затем в Задаче «ResolveAssemblyReference»

Task "ResolveAssemblyReference"
  TargetFrameworkMoniker:
     .NETFramework,Version=v4.0
  TargetFrameworkMonikerDisplayName:
     .NET Framework 4
  TargetedRuntimeVersion:
      v4.0.30319
  Assemblies:
      System
      System.Xml.Linq
      System.Data.DataSetExtensions
      Microsoft.CSharp
      System.Data
      System.Xml
      System.Core
  AssemblyFiles:
      C:\Builds\1\A
      C:\Builds\1\B
(----- Missing project Y -----)
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll

Где в Test Brance для той же задачи

Task "ResolveAssemblyReference"
  TargetFrameworkMoniker:
     .NETFramework,Version=v4.0
  TargetFrameworkMonikerDisplayName:
     .NET Framework 4
  TargetedRuntimeVersion:
      v4.0.30319
  Assemblies:
      System
      System.Data.Entity
      System.Xml.Linq
      System.Data.DataSetExtensions
      Microsoft.CSharp
      System.Data
      System.Xml
      System.Core
  AssemblyFiles:
      C:\Builds\1\A
      C:\Builds\1\B
      C:\Builds\1\Y (There it is)
     C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll

Так такое чувство, что он почему-то просто «забывает» ссылку из проекта X в проект Y.

Справка

9
задан Mr. Java Wolf 16 April 2012 в 12:57
поделиться