如何配置TeamCity以构建包含2个项目的解决方案?

时间:2012-01-31 12:40:25

标签: visual-studio-2010 msbuild build continuous-integration teamcity

如何配置TeamCity以构建包含2个项目的解决方案?

我已经配置了TeamCity来构建我的解决方案,该解决方案有一个项目被选为启动项目并且构建良好。

我通过从其WebUI添加一个带有“Visual Studio(sln)”的Runner Type的新Build Step来配置它。

我添加了一个新的类库项目,并在第一个项目中添加了对它的引用,并在本地构建它。

第一个项目的.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,尽管它被引用。

我如何配置它来构建我的解决方案?

这是否可以使用WebUI或我应该写,例如MSBuild脚本?

谢谢,

2 个答案:

答案 0 :(得分:3)

实际上,问题是TeamCity正在缓存,因为解决方案是检查版本控制设置中的以下复选框:

代理商结帐:强制覆盖所有文件

缓存的原因是我使用了“自动在服务器上”的Checkout模式,这意味着它将缓存:http://confluence.jetbrains.net/display/TCD65/VCS+Checkout+Mode

答案 1 :(得分:2)

Team City处理.sln文件,因此你不应该对mutliple项目有任何问题。 让Team City构建.sln文件,而不是csproj。

如果已经可以,请检查您的引用,看它是否指向解决方案中的项目,或者是否引用了程序集文件(例如,如果您更改构建配置可能会导致问题)

您的参考应如下所示

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

要获得此结果,应通过右键单击解决方案资源管理器上的项目,选择添加引用并转到项目部分来进行引用