Msbuild 构建是成功的,但是没有找到二进制文件。为什么?

Msbuild 构建是成功的,但是没有找到二进制文件。为什么?,msbuild,project,tfsbuild,solution,Msbuild,Project,Tfsbuild,Solution,最近,我将我们的团队构建项目文件更改为: <SolutionToBuild Include="$(SolutionRoot)/OurSolution.sln"> 到 这是必要的,因为我们有许多项目没有包含在解决方案文件中,并且出于我们的目的,仅仅添加这些项目是不可行的。我们希望能够一次建成所有这些设施。所以我们找到了一种递归构建所有项目的方法 这可以很好地工作,并且构建可以毫无错误地完成。唯一的问题是没有二进制文件复制到drop文件夹!事实上,我们在任何地方都找不到他们!从

最近,我将我们的团队构建项目文件更改为:

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


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

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

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


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

您查看过TFSBuild日志了吗。如果你有TFS2008,日志中有很多TFS2005没有的细节


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

我认为SolutionToBuild项是空的,没有生成任何内容。您可以通过以下方式进行验证:

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

然后在日志中查找该声明

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

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


我的书:

谢谢你的建议。就这样,事实上什么也没有建造。巧合的是,我昨天上班时才开始读你的书!他们在公司图书馆里有一本新的。到目前为止,它告诉了我所有我一直想知道的事情,但是没有好的参考资料。这很有趣,让我知道你对这本书的看法。
<Message Text="SolutionToBuild: $(SolutionToBuild)" Importance="high"/>