.Net 解决方案中的多个项目 - 结合所有项目的构建工件

Posted

技术标签:

【中文标题】.Net 解决方案中的多个项目 - 结合所有项目的构建工件【英文标题】:Multiple Projects in .Net Solution - Combine Build Artifacts from all projects 【发布时间】:2020-05-16 13:31:54 【问题描述】:

我有 2 个包含测试相关代码的解决方案。一个用于 UI 自动化,另一个用于 API。我结合了这两种解决方案,并且能够从这两种解决方案构建和运行测试,但是:

其中每一个都包含我想在一个项目下组合的相似配置。显然,两者都不需要相同的东西。我从 project2 中删除了配置,并创建了从 Proj1 到 Proj2 的引用。我构建了 Project1 并从 Project1 生成了良好的工件,但它不包含来自 Proj2 的所有工件。

以前,当我单独构建项目时,它会在 build 文件夹中生成 60 个文件,但现在要少得多。

问题: 如果我决定添加项目 #3 并向其添加配置。如何构建项目 3 并将所有项目组合到项目 #3 的 bin 文件夹中。

我希望我能说清楚。

基本上我希望能够构建 1 个项目,该项目将触发其余 2 个的构建并将所有工件拉到一起。

【问题讨论】:

为什么不将所有项目的构建输出文件夹更改为公共文件夹。这就是我们所做的。我们的解决方案有近 30 个项目。很少属于客户端,很少属于服务器。因此,我们创建了 Client 和 Server 文件夹,所有项目都将输出映射构建到其中之一。 谢谢。好主意。我会试试的。试图找出构建顺序,当您构建解决方案时,哪些项目首先构建。 【参考方案1】:

正如 Ziggler 建议的那样,您可以更改构建输出文件夹以将所有工件中的所有工件合并到项目 #3 的 bin 文件夹中。

您可以通过在命令行中传递$(OutputPath) 属性来做到这一点。看来您正在使用类似TeamCityAzure Devops 或您的环境中的内容。

对于这些工具,我们可以添加 msbuild 参数,例如:/p:OutputPath="Path to project3's bin folder",如果您使用 msbuild 构建整个解决方案 (msbuild xx.sln)。见Global Property。

关于构建顺序,可以添加项目依赖来控制构建顺序。 Msbuild 将识别项目依赖和项目引用,然后自动选择正确的顺序。希望对你有帮助:)

【讨论】:

谢谢。正是我想要的。我们使用 ADO。谢谢 @ylerner 嗨朋友,这个问题有什么更新吗?如果我的回答有助于解决您的问题,您可以 Accept it as an Answer ,这样它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。)。如果问题仍然存在并阻止您,请随时告诉我,我愿意提供帮助:)

以上是关于.Net 解决方案中的多个项目 - 结合所有项目的构建工件的主要内容,如果未能解决你的问题,请参考以下文章

将解决方案中的所有项目重新定位到 .NET 4.5.2

Net Core 多项目开发(net core 类库项目使用)

同一个 .net 解决方案中的多个 edmx

.NET 类库项目中的多个 App.Config 文件

有没有办法从多个 .NET 项目创建一个 Azure Function App 并拥有所有这些项目的所有功能?

Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD