msbuild - 构建成功,但找不到二进制文件。为什么?

标签 msbuild project tfsbuild solution

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

<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/

相关文章:

java - 将工作区用于不同的项目

eclipse - 如何在 Eclipse 项目之间共享 Web 内容

nunit - 如何将NUnit测试集成到TFS 2010版本中

embedded - 如何将 MS Team Build 与其他编译器一起使用?

ASP.NET:发布后执行 MSBuild 任务

msbuild - 仅当您的项目输出已构建时,您如何有条件地运行 MSBuild 任务?

java - 如何使环境变量在JAR文件中起作用?

sqlite - TFS 2012 构建和适用于 WinRT 的 SQLite

msbuild - 如何在没有 project.assets.json 或 nuget restore 的情况下使用 msbuild?

asp.net - MSBuild _CopyWebApplication 不从 vbproj 复制 <link>