2013-11-19 3 views
1

У меня есть библиотека классов, которая содержит класс TestService. Я добавил его с помощью меню «Добавить -> Класс» Visual Studio. В файле csproj, она выглядит хорошоНовый класс (добавлен в ветку), не входит в DLL

<ItemGroup> 
    ... 
    <Compile Include="Implementation\TestService.cs" /> 
    ... 
</ItemGroup> 

Я не могу найти «Исключить» заявления в любом месте, и все это создает штраф в Visual Studio. Однако во время работы MS Build (в TeamCity), когда я смотрю в результирующую DLL, используя dotPeek, мой класс не существует (и моя сборка не работает).

Класс был добавлен на ветку и объединен в багажник во время сборки. Слитый файл .csproj выглядит хорошо.

Я попытался использовать пространство имен по умолчанию (выбранное VS2010, соответствует структуре папок), которое является «TimetablingPhase2.Service.Implementation». Все остальные классы в той же папке, имеют пространство имен "TimetablingPhase2.Service, который я также попробовал (другой разработчик написал этот код изначально).

Можно ли предположить, почему он не включен в моей DLL? Ниже скриншот добавленного класса

Screenshot of solution

Благодаря

+0

99% времени, когда я что-то вроде этого, я бы сказал, что вы смотрите на неправильное место. – fejesjoco

+0

Да, не знаю, где еще искать действительно. Я проверил все файлы решений, файлы csproj, удалил класс, повторно добавил его, удалил весь кеш TeamCity и т. Д., Изменил пространство имен как проверку работоспособности и т. Д. И т. Д. Не уверен, куда обратиться! – Richard

+0

Wierd, я просто добавил новый класс (Test.cs) в том же пространстве имен, и теперь он строит другие классы тоже ... – Richard

ответ

0

Легко исправить:. Я сменил порядок моих строительных задач вокруг Вместо того, порядок бытия:.

1) Чистота. 2) Объединить. 3) Скомпилируйте.

Я сейчас:

1) Объединить. 2) Очистить. 3) Скомпилируйте.

Счастлив быть исправлены на этом, но я думаю, что это и есть причина:

  1. Список классов компилировать загружается в MSBuild, когда первый целевой сборки (Clean) выполняется.
  2. Затем я объединил код, который изменил список классов для компиляции (добавлены дополнительные классы).
  3. Но поскольку этот список уже был загружен, мои новые классы (которые к тому времени были, перечисленные в файле csproj) никогда не были выбраны вверх.
  4. Выполнение слияния сначала гарантирует, что список обновлен до MSBuild читает его.
Смежные вопросы