构建成功,但无法找到二进制文件。为什么?

时间:2009-05-20 20:54:19

标签: msbuild project team-build solution

最近我改变了我们的团队构建项目文件:

<SolutionToBuild Include="$(SolutionRoot)/OurSolution.sln">

<SolutionToBuild Include="$(SolutionRoot)/**/*.csproj">

这是必要的,因为我们有许多项目未包含在解决方案文件中,并且出于我们的目的,仅添加项目是不可行的。我们希望能够一次性构建它们。所以我们找到了一种递归构建所有项目的方法。

这很好用,构建可以没有错误地完成。唯一的问题是没有二进制文件复制到drop文件夹!事实上,我们无法在任何地方找到它们!从解决方案构建,二进制文件将复制到构建代理程序上的Binaries文件夹中。但是从单个项目开始构建时没有任何东西。

所以我的问题是,他们在哪里?为什么团队建立报告说一切都很好,但是没有什么可以复制的。它们甚至不在项目目录下的普通bin / Release文件夹中。

有人可以帮助我理解吗?我觉得它可能与解决方案文件中包含的信息有关,项目文件中没有这些信息,但我无法弄明白。

2 个答案:

答案 0 :(得分:4)

我认为 SolutionToBuild 项是空的,没有任何内容可以构建。您可以通过

进行验证
<Message Text="SolutionToBuild: $(SolutionToBuild)" Importance="high"/>

然后查看您的日志以查找该语句。

您可能想要在任何情况下修改您的方法。更好的方法是自己创建一个MSBuild文件,即BuildAll.proj。在该文件中,只需使用MSBuild task来构建所有项目。然后将该文件设置为SolutionToBuild。在项目构建时,这将为您提供更多灵活性。您可以在构建之前/之后为这些项目或所有项目添加步骤。

Sayed Ibrahim Hashimi

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

答案 1 :(得分:0)

您是否查看了TFSBuild日志。如果您有TFS 2008,则日志中包含许多TFS 2005没有的脆弱细节。

另一个想法是启动FileMon并监视由TFSBuild服务创建的文件。