2

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

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

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

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

这可以正常工作,并且可以毫无错误地完成构建。唯一的问题是没有二进制文件复制到放置文件夹!事实上,我们在任何地方都找不到它们!从解决方案构建,二进制文件被复制到构建代理上的 Binaries 文件夹。但是从单个项目构建时什么都没有。

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

有人可以帮我理解吗?我觉得这可能与项目文件中不存在的解决方案文件中包含的信息有关,但我无法弄清楚。

4

2 回答 2

4

我认为SolutionToBuild项是空的,并且没有构建任何内容。您可以通过以下方式验证

<Message Text="SolutionToBuild: $(SolutionToBuild)" Importance="high"/>

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

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

赛义德·易卜拉欣·哈希米

我的书:Microsoft Build Engine 内部:使用 MSBuild 和 Team Foundation Build

于 2009-05-22T05:01:59.360 回答
0

您是否查看过 TFSBuild 日志。如果您有 TFS 2008,那么日志会包含许多 TFS 2005 所没有的详细信息。

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

于 2009-05-20T23:24:49.360 回答