最近我更改了我们的团队构建项目文件:
<SolutionToBuild Include="$(SolutionRoot)/OurSolution.sln">
至
<SolutionToBuild Include="$(SolutionRoot)/**/*.csproj">
这是必要的,因为我们有许多项目未包含在解决方案文件中,并且出于我们的目的,仅添加项目是不可行的。我们希望能够一次性构建它们。所以我们找到了一种递归构建所有项目的方法。
这工作正常并且构建可以毫无错误地完成。唯一的问题是没有二进制文件复制到放置文件夹!事实上,我们到处都找不到它们!从解决方案构建时,二进制文件将被复制到构建代理上的 Binaries 文件夹中。但从单个项目构建时什么也没有。
所以我的问题是,他们在哪里?为什么团队构建报告说一切都构建得很好,但是却没有什么可以复制的。它们甚至不在项目目录下的普通 bin/Release 文件夹中。
谁能帮我理解一下吗?我觉得这可能与解决方案文件中包含的信息有关,而该信息不存在于项目文件中,但我无法弄清楚。
最佳答案
我认为 SolutionToBuild 项是空的,并且没有构建任何内容。您可以通过
进行验证<Message Text="SolutionToBuild: $(SolutionToBuild)" Importance="high"/>
然后查看日志中是否有该语句。
无论如何,您可能想要修改您的方法。更好的是自己创建一个 MSBuild 文件,即 BuildAll.proj。在该文件中只需使用 MSBuild task build 所有项目。然后将该文件设置为 SolutionToBuild。这将为您在项目构建时提供更多灵活性。您可以在这些项目或所有项目的构建之前/之后添加步骤。
赛义德·易卜拉欣·哈希米
我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
关于msbuild - 构建成功,但找不到二进制文件。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890206/