Как настроить TeamCity для построения решения с 2 проектами? - PullRequest
2 голосов
/ 31 января 2012

Как настроить TeamCity для построения решения с 2 проектами?

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

Я настроил его, добавив новый шаг сборки с типом запуска "Visual Studio (sln)" из его WebUI.

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

Файл .csproj первого проекта теперь содержит:

 <ItemGroup>
    <ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj">
      <Project>{00E69E26-2576-4B9A-9180-CB1877B1D951}</Project>
      <Name>ClassLibrary1</Name>
    </ProjectReference>
  </ItemGroup>

Я проверил код, и teamcity не удалось собрать!

error CS0246: The type or namespace name 'ClassLibrary1' could not be found (are you missing a using directive or an assembly reference?) 

Кажется, TeamCity создает только проект запуска, а не ClassLibrary1, хотя на него ссылаются.

Как я могу настроить его для построения своего решения?

Возможно ли это с помощью веб-интерфейса, или я должен писать, например, Скрипты MSBuild?

Спасибо

Ответы [ 2 ]

3 голосов
/ 31 января 2012

На самом деле проблема заключалась в том, что TeamCity кешировала, потому что решение было установить флажок ниже в настройках контроля версий:

Проверка агента: принудительно перезаписать все файлы

Причиной кеширования было то, что я использую режим Checkout «Автоматически на сервере», что означает, что он будет кешироваться: http://confluence.jetbrains.net/display/TCD65/VCS+Checkout+Mode

2 голосов
/ 31 января 2012

Team City обрабатывает файлы .sln, поэтому у вас не должно возникнуть проблем с несколькими проектами.Заставьте Team City создавать файлы .sln, а не csproj.

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

Ваша ссылка должна выглядеть следующим образом

<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj">
      <Project>{some guid identifying your project}</Project>
      <Name>ClassLibrary1</Name>
    </ProjectReference>

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

...